Reviewed:  https://review.openstack.org/51045
Committed: 
http://github.com/openstack/glance/commit/1fd64662fe66eda5fee404a37586f30cae2bf785
Submitter: Jenkins
Branch:    milestone-proposed

commit 1fd64662fe66eda5fee404a37586f30cae2bf785
Author: Edward Hope-Morley <edward.hope-mor...@canonical.com>
Date:   Mon Sep 30 12:22:30 2013 +0100

    Fixes rbd _delete_image snapshot with missing image
    
    Also ignore if _delete_image returns NotFound when cleaning up
    following failed attempt to create a new image with add().
    
    Also added unit tests.
    
    Change-Id: Id66866b4260385a6324cc277c5ac665f81493c89
    Fixes: bug 1233097


** Changed in: glance
       Status: Fix Committed => Fix Released

-- 
You received this bug notification because you are a member of Yahoo!
Engineering Team, which is subscribed to Glance.
https://bugs.launchpad.net/bugs/1233097

Title:
  rbd delete_image does not catch ImageNotFound when deleting snap

Status in OpenStack Image Registry and Delivery Service (Glance):
  Fix Released

Bug description:
  the store.rbd._delete_image() method does not catch rbd.ImageNotFound
  and return exception.NotFound when trying to delete a snapshot. The
  behaviour should be the same as when deleting the image itself.

  This produces errors like this:

  2013-09-30 14:30:10.139 442 ERROR glance.api.v2.image_data 
[0be083f3-4d9f-4d88-9264-b69ca9bbd2c2 18ab8e3ef26b499a8c581b8f18f2d33f 
133f3a73a0294e98aaee00e8139bb922] Failed to upload image data due to internal 
error
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data Traceback (most 
recent call last):
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data   File 
"/mnt/glance/glance/api/v2/image_data.py", line 55, in upload
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data     
image.set_data(data, size)
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data   File 
"/mnt/glance/glance/domain/proxy.py", line 126, in set_data
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data     
self.base.set_data(data, size)
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data   File 
"/mnt/glance/glance/notifier/__init__.py", line 202, in set_data
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data     
self.image.set_data(data, size)
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data   File 
"/mnt/glance/glance/domain/proxy.py", line 126, in set_data
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data     
self.base.set_data(data, size)
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data   File 
"/mnt/glance/glance/quota/__init__.py", line 140, in set_data
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data     
self.image.set_data(data, size=size)
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data   File 
"/mnt/glance/glance/store/__init__.py", line 644, in set_data
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data     
self.image.image_id, utils.CooperativeReader(data), size)
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data   File 
"/mnt/glance/glance/store/__init__.py", line 355, in add_to_backend
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data     return 
store_add_to_backend(image_id, data, size, store)
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data   File 
"/mnt/glance/glance/store/__init__.py", line 333, in store_add_to_backend
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data     (location, 
size, checksum, metadata) = store.add(image_id, data, size)
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data   File 
"/mnt/glance/glance/store/rbd.py", line 330, in add
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data     
self._delete_image(loc.image, loc.snapshot)
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data   File 
"/mnt/glance/glance/store/rbd.py", line 267, in _delete_image
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data     
image.unprotect_snap(snapshot_name)
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data   File 
"/usr/lib/python2.7/dist-packages/rbd.py", line 578, in unprotect_snap
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data     raise 
make_ex(ret, 'error unprotecting snapshot %s@%s' % (self.name, name))
  2013-09-30 14:30:10.139 442 TRACE glance.api.v2.image_data ImageNotFound: 
error unprotecting snapshot bccb3478-e7cf-4661-86ba-d405cffe0912@snap

  where we are doing a cleanup but the image may not exist in which case
  we would want to ignore the error.

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

-- 
Mailing list: https://launchpad.net/~yahoo-eng-team
Post to     : yahoo-eng-team@lists.launchpad.net
Unsubscribe : https://launchpad.net/~yahoo-eng-team
More help   : https://help.launchpad.net/ListHelp

Reply via email to