• D
    migration: add reporting of errors for outgoing migration · d59ce6f3
    Daniel P. Berrange 提交于
    Currently if an application initiates an outgoing migration,
    it may or may not, get an error reported back on failure. If
    the error occurs synchronously to the 'migrate' command
    execution, the client app will see the error message. This
    is the case for DNS lookup failures. If the error occurs
    asynchronously to the monitor command though, the error
    will be thrown away and the client left guessing about
    what went wrong. This is the case for failure to connect
    to the TCP server (eg due to wrong port, or firewall
    rules, or other similar errors).
    
    In the future we'll be adding more scope for errors to
    happen asynchronously with the TLS protocol handshake.
    TLS errors are hard to diagnose even when they are well
    reported, so discarding errors entirely will make it
    impossible to debug TLS connection problems.
    
    Management apps which do migration are already using
    'query-migrate' / 'info migrate' to check up on progress
    of background migration operations and to see their end
    status. This is a fine place to also include the error
    message when things go wrong.
    
    This patch thus adds an 'error-desc' field to the
    MigrationInfo struct, which will be populated when
    the 'status' is set to 'failed':
    
    (qemu) migrate -d tcp:localhost:9001
    (qemu) info migrate
    capabilities: xbzrle: off rdma-pin-all: off auto-converge: off zero-blocks: off compress: off events: off x-postcopy-ram: off
    Migration status: failed (Error connecting to socket: Connection refused)
    total time: 0 milliseconds
    
    In the HMP, when doing non-detached migration, it is
    also possible to display this error message directly
    to the app.
    
    (qemu) migrate tcp:localhost:9001
    Error connecting to socket: Connection refused
    
    Or with QMP
    
      {
        "execute": "query-migrate",
        "arguments": {}
      }
      {
        "return": {
          "status": "failed",
          "error-desc": "address resolution failed for myhost:9000: No address associated with hostname"
        }
      }
    Reviewed-by: NDr. David Alan Gilbert <dgilbert@redhat.com>
    Signed-off-by: NDaniel P. Berrange <berrange@redhat.com>
    Reviewed-by: NJuan Quintela <quintela@redhat.com>
    Message-Id: <1461751518-12128-11-git-send-email-berrange@redhat.com>
    Signed-off-by: NAmit Shah <amit.shah@redhat.com>
    d59ce6f3
migration.h 11.1 KB