libvirt: detaching volume may fail while terminating other instances on the same host concurrently

Bug #1060836 reported by MotoKen on 2012-10-03
10
This bug affects 1 person
Affects Status Importance Assigned to Milestone
OpenStack Compute (nova)
Low
MotoKen
Folsom
Low
Joe Gordon
nova (Ubuntu)
Undecided
Unassigned
Quantal
Undecided
Unassigned

Bug Description

detaching volume may fail while terminating other instances on the same host concurrently

Traceback:

2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp Traceback (most recent call last):
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/openstack/common/rpc/amqp.py", line 275, in _process_data
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp rval = self.proxy.dispatch(ctxt, version, method, **args)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/openstack/common/rpc/dispatcher.py", line 145, in dispatch
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp return getattr(proxyobj, method)(ctxt, **kwargs)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/exception.py", line 117, in wrapped
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp temp_level, payload)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp self.gen.next()
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/exception.py", line 92, in wrapped
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp return f(*args, **kw)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 179, in decorated_function
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp pass
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp self.gen.next()
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 165, in decorated_function
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp return function(self, context, *args, **kwargs)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 200, in decorated_function
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp kwargs['instance']['uuid'], e, sys.exc_info())
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp self.gen.next()
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 194, in decorated_function
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp return function(self, context, *args, **kwargs)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 2029, in detach_volume
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp self._detach_volume(context, instance, bdm)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 2020, in _detach_volume
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp self.volume_api.roll_detaching(context, volume)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp self.gen.next()
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/compute/manager.py", line 2013, in _detach_volume
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp mp)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/exception.py", line 117, in wrapped
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp temp_level, payload)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/contextlib.py", line 24, in __exit__
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp self.gen.next()
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/exception.py", line 92, in wrapped
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp return f(*args, **kw)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 706, in detach_volume
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp mount_device)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 627, in volume_driver_method
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp return method(connection_info, *args, **kwargs)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/utils.py", line 760, in inner
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp retval = f(*args, **kwargs)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/volume.py", line 198, in disconnect_volume
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp devices = self.connection.get_all_block_devices()
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/nova/virt/libvirt/driver.py", line 1898, in get_all_block_devices
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp domain = self._conn.lookupByID(dom_id)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/eventlet/tpool.py", line 187, in doit
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp result = proxy_call(self._autowrap, f, *args, **kwargs)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/eventlet/tpool.py", line 147, in proxy_call
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp rv = execute(f,*args,**kwargs)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/eventlet/tpool.py", line 76, in tworker
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp rv = meth(*args,**kwargs)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp File "/usr/lib/python2.7/dist-packages/libvirt.py", line 2610, in lookupByID
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp if ret is None:raise libvirtError('virDomainLookupByID() failed', conn=self)
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp libvirtError: Domain not found: no domain with matching id 76
2012-10-03 17:16:31 TRACE nova.openstack.common.rpc.amqp

MotoKen (motokentsai) on 2012-10-03
description: updated
summary: libvirt: detaching volume may fail while terminating other instances on
- the same host
+ the same host concurrently

Fix proposed to branch: master
Review: https://review.openstack.org/14023

Changed in nova:
assignee: nobody → MotoKen (motokentsai)
status: New → In Progress
tags: added: folsom-backport-potential

Reviewed: https://review.openstack.org/14023
Committed: http://github.com/openstack/nova/commit/5a16b8f3e230cad0fb8d1278b42e6754069e8501
Submitter: Jenkins
Branch: master

commit 5a16b8f3e230cad0fb8d1278b42e6754069e8501
Author: MotoKen <email address hidden>
Date: Thu Oct 4 14:37:49 2012 +0800

    libvirt: ignore deleted domain while get block dev

    The get_all_block_devices could raise libvirtError if domain was deleted
    while listing instances. This will cause LibvirtISCSIVolumeDriver to fail
    disconnect_volume. This patch ignores the domain that could not be found
    to avoid this issue.

    Fixes bug 1060836

    Change-Id: I9dc994d8ca7fc084830adb4f6f9d3ca10e0fe577

Changed in nova:
status: In Progress → Fix Committed
Thierry Carrez (ttx) on 2012-11-21
Changed in nova:
milestone: none → grizzly-1
status: Fix Committed → Fix Released
Changed in nova:
importance: Undecided → Low
tags: removed: folsom-backport-potential

Reviewed: https://review.openstack.org/16663
Committed: http://github.com/openstack/nova/commit/ff776d4ec4620de2e9d765fd1a31834c30f0e1fe
Submitter: Jenkins
Branch: stable/folsom

commit ff776d4ec4620de2e9d765fd1a31834c30f0e1fe
Author: MotoKen <email address hidden>
Date: Thu Oct 4 14:37:49 2012 +0800

    libvirt: ignore deleted domain while get block dev

    The get_all_block_devices could raise libvirtError if domain was deleted
    while listing instances. This will cause LibvirtISCSIVolumeDriver to fail
    disconnect_volume. This patch ignores the domain that could not be found
    to avoid this issue.

    Fixes bug 1060836

    Change-Id: I9dc994d8ca7fc084830adb4f6f9d3ca10e0fe577
    (cherry picked from commit 5a16b8f3e230cad0fb8d1278b42e6754069e8501)

Changed in nova (Ubuntu):
status: New → Fix Released
Changed in nova (Ubuntu Quantal):
status: New → Confirmed

Hello MotoKen, or anyone else affected,

Accepted nova into quantal-proposed. The package will build now and be available at http://launchpad.net/ubuntu/+source/nova/2012.2.1+stable-20121212-a99a802e-0ubuntu1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in nova (Ubuntu Quantal):
status: Confirmed → Fix Committed
tags: added: verification-needed
Launchpad Janitor (janitor) wrote :
Download full text (8.3 KiB)

This bug was fixed in the package nova - 2012.2.1+stable-20121212-a99a802e-0ubuntu1

---------------
nova (2012.2.1+stable-20121212-a99a802e-0ubuntu1) quantal-proposed; urgency=low

  * Ubuntu updates:
    - debian/control: Ensure novaclient is upgraded with nova,
      require python-keystoneclient >= 1:2.9.0. (LP: #1073289)
    - d/p/avoid_setuptools_git_dependency.patch: Refresh.
  * Dropped patches, applied upstream:
    - debian/patches/CVE-2012-5625.patch: [a99a802]
  * Resynchronize with stable/folsom (b55014ca) (LP: #1085255):
    - [a99a802] create_lvm_image allocates dirty blocks (LP: #1070539)
    - [670b388] RPC exchange name defaults to 'openstack' (LP: #1083944)
    - [3ede373] disassociate_floating_ip with multi_host=True fails
      (LP: #1074437)
    - [22d7c3b] libvirt imagecache should handle shared image storage
      (LP: #1075018)
    - [e787786] Detached and deleted RBD volumes remain associated with insance
      (LP: #1083818)
    - [9265eb0] live_migration missing migrate_data parameter in Hyper-V driver
      (LP: #1066513)
    - [3d99848] use_single_default_gateway does not function correctly
      (LP: #1075859)
    - [65a2d0a] resize does not migrate DHCP host information (LP: #1065440)
    - [102c76b] Nova backup image fails (LP: #1065053)
    - [48a3521] Fix config-file overrides for nova-dhcpbridge
    - [69663ee] Cloudpipe in Folsom: no such option: cnt_vpn_clients
      (LP: #1069573)
    - [6e47cc8] DisassociateAddress can cause Internal Server Error
      (LP: #1080406)
    - [22c3d7b] API calls to dis-associate an auto-assigned floating IP should
      return proper warning (LP: #1061499)
    - [bd11d15] libvirt: if exception raised during volume_detach, volume state
      is inconsistent (LP: #1057756)
    - [dcb59c3] admin can't describe all images in ec2 api (LP: #1070138)
    - [78de622] Incorrect Exception raised during Create server when metadata
      over 255 characters (LP: #1004007)
    - [c313de4] Fixed IP isn't released before updating DHCP host file
      (LP: #1078718)
    - [f4ab42d] Enabling Return Reservation ID with XML create server request
      returns no body (LP: #1061124)
    - [3db2a38] 'BackupCreate' should accept rotation parameter greater than or
      equal to zero (LP: #1071168)
    - [f7e5dde] libvirt reboot sometimes fails to reattach volumes
      (LP: #1073720)
    - [ff776d4] libvirt: detaching volume may fail while terminating other
      instances on the same host concurrently (LP: #1060836)
    - [85a8bc2] Used instance uuid rather than id in remove-fixed-ip
    - [42a85c0] Fix error on invalid delete_on_termination value
    - [6a17579] xenapi migrations fail w/ swap (LP: #1064083)
    - [97649b8] attach-time field for volumes is not updated for detach volume
      (LP: #1056122)
    - [8f6a718] libvirt: rebuild is not using kernel and ramdisk associated with
      the new image (LP: #1060925)
    - [fbe835f] live-migration and volume host assignement (LP: #1066887)
    - [c2a9150] typo prevents volume_tmp_dir flag from working (LP: #1071536)
    - [93efa21] Instances deleted during spawn leak network allocations
      (LP: #1068716)
    - [ebabd02] After restartin...

Read more...

Changed in nova (Ubuntu Quantal):
status: Fix Committed → Fix Released
Thierry Carrez (ttx) on 2013-04-04
Changed in nova:
milestone: grizzly-1 → 2013.1
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers