← Back to team overview

yahoo-eng-team team mailing list archive

[Bug 1556126] Re: Live migrations from Mitaka to Liberty are broken

 

Reviewed:  https://review.openstack.org/291759
Committed: https://git.openstack.org/cgit/openstack/nova/commit/?id=fb6f37f7f91c47aced8b19e527e2771743911d0a
Submitter: Jenkins
Branch:    master

commit fb6f37f7f91c47aced8b19e527e2771743911d0a
Author: Dan Smith <dansmith@xxxxxxxxxx>
Date:   Fri Mar 11 07:15:38 2016 -0800

    Fix pre_live_migration result processing from legacy computes
    
    The objectification of the live migration data ended up with a bug in
    the compatibility path for the pre_live_migration result where we
    convert a legacy dict response back to an object. The legacy dict
    processing looks for 'pre_live_migration_result' in the input to
    trigger handling of those keys, but we weren't properly wrapping the
    result like that so it was never digesting those keys.
    
    Change-Id: I5142e1cb9d526c92529fc24ee0441b5730931160
    Closes-Bug: #1556126


** Changed in: nova
       Status: In Progress => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to OpenStack Compute (nova).
https://bugs.launchpad.net/bugs/1556126

Title:
  Live migrations from Mitaka to Liberty are broken

Status in OpenStack Compute (nova):
  Fix Released

Bug description:
  I have an environment consisting of three nodes:

  Controller Mitaka, commit id: 59a07f00ad3c527e3b39712220cf9de1e68cd16f
  Compute Mitaka, commit id: 59a07f00ad3c527e3b39712220cf9de1e68cd16f
  Compute Stable/Liberty, commit id: 184e2552490ecfded61db3cc9ba1cd8d6aac1644

  I am able to live migrate VMs from Liberty to Mitaka using this CLI
  command:

  nova --os-compute-api-version 2.24 live-migrate --block-migrate
  instance

  But when I want to move VM from Mitaka to Liberty I'm ending up with
  an error:

  ERROR nova.virt.libvirt.driver [req-aea14ab8-204d-4e7f-a591-e81a5b5fde4b admin demo] [instance: d509c4af-2003-4075-9c2f-2c4fbce727ea] Live Migration failure: internal error:
   process exited while connecting to monitor: 2016-03-11T13:36:33.803180Z qemu-system-x86_64: -vnc None:0: Failed to start VNC server on `(null)': address resolution failed for None:5900: Temporary
  failure in name resolution

  Traceback:

  Traceback (most recent call last):
    File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/hub.py", line 457, in fire_timers
      timer()
    File "/usr/local/lib/python2.7/dist-packages/eventlet/hubs/timer.py", line 58, in __call__
      cb(*args, **kw)
    File "/usr/local/lib/python2.7/dist-packages/eventlet/event.py", line 168, in _do_send
      waiter.switch(result)
    File "/usr/local/lib/python2.7/dist-packages/eventlet/greenthread.py", line 214, in main
      result = function(*args, **kwargs)
    File "/opt/stack/nova/nova/utils.py", line 1145, in context_wrapper
      return func(*args, **kwargs)
    File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 6059, in _live_migration_operation
      instance=instance)
    File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 220, in __exit__
      self.force_reraise()
    File "/usr/local/lib/python2.7/dist-packages/oslo_utils/excutils.py", line 196, in force_reraise
      six.reraise(self.type_, self.value, self.tb)
    File "/opt/stack/nova/nova/virt/libvirt/driver.py", line 6027, in _live_migration_operation
      CONF.libvirt.live_migration_bandwidth)
    File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 186, in doit
      result = proxy_call(self._autowrap, f, *args, **kwargs)
    File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 144, in proxy_call
      rv = execute(f, *args, **kwargs)
    File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 125, in execute
      six.reraise(c, e, tb)
    File "/usr/local/lib/python2.7/dist-packages/eventlet/tpool.py", line 83, in tworker
      rv = meth(*args, **kwargs)
    File "/usr/local/lib/python2.7/dist-packages/libvirt.py", line 1825, in migrateToURI2
      if ret == -1: raise libvirtError ('virDomainMigrateToURI2() failed', dom=self)
  libvirtError: internal error: process exited while connecting to monitor: 2016-03-11T13:20:07.165053Z qemu-system-x86_64: -vnc None:0: Failed to start VNC server on `(null)': address resolution failed for None:5900: Temporary failure in name resolution

  Same happens when VM is volume-backed or on shared storage.

  This happens because pre_live_migration, that is executed on
  destination (Liberty), returns dict that looks like:

  {u'volume': {}, u'serial_listen_addr': u'127.0.0.1',
  u'graphics_listen_addrs': {u'vnc': u'10.0.0.3', u'spice':
  u'127.0.0.1'}}

  When it comes back to rpc api of new compute node here:
  https://github.com/openstack/nova/blob/a3cf38a3ec0fd57679320688bd815225c2bf053f/nova/compute/rpcapi.py#L680

  We just pass this data to .from_legacy_dict() migrate_data object
  method, but  it does expect that all this data will be nested under
  'pre_live_migration_result' key:
  https://github.com/openstack/nova/blob/7832f6ea816b1b79251d06abbf38772894e74e2f/nova/objects/migrate_data.py#L195

  Because of this we don't really convert data coming from
  pre_live_migration phase and pass migrate_data object with Nones that
  are needed for setting up VNC.

To manage notifications about this bug go to:
https://bugs.launchpad.net/nova/+bug/1556126/+subscriptions


References