)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"043ed631976f16c5d9c095822f1463ecc3716d1e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"During the subsequent delete an exception may be thrown from"},{"line_number":15,"context_line":"the cinder driver which prevents the instance from completing the"},{"line_number":16,"context_line":"deletion process leaving the instance stuck in Error and unable to"},{"line_number":17,"context_line":"be deleted."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Volume exceptions should be logged and ignored when the instance"},{"line_number":20,"context_line":"Is being deleted."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAS3%2F%2FJn4%3D","line":17,"updated":"2013-10-03 13:43:30.000000000","message":"Nit: wouldn\u0027t be nice to mention somewhere this is a libvirt driver specific issue?","commit_id":"8c644fda4f52e5a7748b4034f564202ba5023d6f"},{"author":{"_account_id":4601,"name":"Tiago Mello","email":"tmello@linux.vnet.ibm.com","username":"tmello"},"change_message_id":"043ed631976f16c5d9c095822f1463ecc3716d1e","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Volume exceptions should be logged and ignored when the instance"},{"line_number":20,"context_line":"Is being deleted."},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"Fixes Bug: 1222979"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"Change-Id: Icb3796b0ddba25cf344953a649b2e762fab6d782"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":8,"id":"AAAAS3%2F%2FJpQ%3D","line":22,"updated":"2013-10-03 13:43:30.000000000","message":"Please, use:\n\nCloses-Bug: #1222979\n\nhttps://wiki.openstack.org/wiki/GitCommitMessages","commit_id":"8c644fda4f52e5a7748b4034f564202ba5023d6f"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"461ebe9e6aa964cff81b07856d1d899e45843a4e","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Phil Day \u003cphilip.day@hp.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2013-10-04 10:04:37 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"libvirt: Allow delete to complete when a volume disconect fails"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If an instance which was booted from a volume fails to spawn, the"},{"line_number":10,"context_line":"instance is left in an ERROR state.  If the failure is in the networking"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAATH%2F%2FR94%3D","line":7,"updated":"2013-10-18 13:46:44.000000000","message":"s/disconect/disconnect/","commit_id":"8a78871ed811110b9f52f818f6ed2a6105f14987"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"461ebe9e6aa964cff81b07856d1d899e45843a4e","unresolved":false,"context_lines":[{"line_number":10,"context_line":"instance is left in an ERROR state.  If the failure is in the networking"},{"line_number":11,"context_line":"stage Nova will not have attached the volume via the Cinder driver,"},{"line_number":12,"context_line":"and so the volume remains in an available state.  In this state the"},{"line_number":13,"context_line":"volume maybe deleted or assigned to another instance."},{"line_number":14,"context_line":"During the subsequent delete an exception may be thrown from"},{"line_number":15,"context_line":"the cinder driver which prevents the instance from completing the"},{"line_number":16,"context_line":"deletion process leaving the instance stuck in Error and unable to"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"AAAATH%2F%2FR9w%3D","line":13,"updated":"2013-10-18 13:46:44.000000000","message":"s/maybe/may be/","commit_id":"8a78871ed811110b9f52f818f6ed2a6105f14987"}],"nova/compute/manager.py":[{"author":{"_account_id":1561,"name":"Russell Bryant","email":"rbryant@redhat.com","username":"russellb"},"change_message_id":"463c614bb2d6a846ad4416782ae0f8e6a8d21d11","unresolved":false,"context_lines":[{"line_number":1748,"context_line":"            except Exception as exc:"},{"line_number":1749,"context_line":"                err_str \u003d _(\"Ignoring volume cleanup failure due to %s\")"},{"line_number":1750,"context_line":"                LOG.warn(err_str % exc, instance\u003dinstance)"},{"line_number":1751,"context_line":""},{"line_number":1752,"context_line":"            # if a delete task succeed, always update vm state and task"},{"line_number":1753,"context_line":"            # state without expecting task state to be DELETING"},{"line_number":1754,"context_line":"            instance.vm_state \u003d vm_states.DELETED"}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAS3%2F%2FjWM%3D","line":1751,"updated":"2013-09-24 19:16:00.000000000","message":"Please remove unnecessary whitespace changes","commit_id":"47df23de0a74b7a16d802ea28bc8af90f6fa47ec"}],"nova/tests/virt/libvirt/test_libvirt.py":[{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"1455deb3a944e455b578d4be2bc78fc4bdb95f21","unresolved":false,"context_lines":[{"line_number":3745,"context_line":"                    \"cleaned\": 0, \u0027info_cache\u0027: None, \u0027security_groups\u0027: []}"},{"line_number":3746,"context_line":""},{"line_number":3747,"context_line":"        vol \u003d {\u0027block_device_mapping\u0027: ["},{"line_number":3748,"context_line":"              {\u0027connection_info\u0027: \u0027dummy\u0027, \u0027mount_device\u0027: \u0027/dev/sdb\u0027}]}"},{"line_number":3749,"context_line":""},{"line_number":3750,"context_line":"        self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver,"},{"line_number":3751,"context_line":"                                 \u0027_undefine_domain\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FMnw%3D","line":3748,"updated":"2013-10-02 14:54:40.000000000","message":"this variable is not used anywhere","commit_id":"55a9e13ca1d5de0498f54711aae83c220408612f"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"8404bbd9804c4fc41bfbff60c6713945bfba5db5","unresolved":false,"context_lines":[{"line_number":3745,"context_line":"                    \"cleaned\": 0, \u0027info_cache\u0027: None, \u0027security_groups\u0027: []}"},{"line_number":3746,"context_line":""},{"line_number":3747,"context_line":"        vol \u003d {\u0027block_device_mapping\u0027: ["},{"line_number":3748,"context_line":"              {\u0027connection_info\u0027: \u0027dummy\u0027, \u0027mount_device\u0027: \u0027/dev/sdb\u0027}]}"},{"line_number":3749,"context_line":""},{"line_number":3750,"context_line":"        self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver,"},{"line_number":3751,"context_line":"                                 \u0027_undefine_domain\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FLEg%3D","line":3748,"in_reply_to":"AAAAS3%2F%2FMnw%3D","updated":"2013-10-02 22:36:12.000000000","message":"Done","commit_id":"55a9e13ca1d5de0498f54711aae83c220408612f"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"1455deb3a944e455b578d4be2bc78fc4bdb95f21","unresolved":false,"context_lines":[{"line_number":3853,"context_line":"#        def fake_volume_driver_method(self, method, connction_info,"},{"line_number":3854,"context_line":"#                                      disk_dev):"},{"line_number":3855,"context_line":"#            if volume_fail:"},{"line_number":3856,"context_line":"#                raise exception.VolumeNotFound"},{"line_number":3857,"context_line":""},{"line_number":3858,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":3859,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FMls%3D","line":3856,"updated":"2013-10-02 14:54:40.000000000","message":"It\u0027s commented out - do we need it at all?","commit_id":"55a9e13ca1d5de0498f54711aae83c220408612f"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"8404bbd9804c4fc41bfbff60c6713945bfba5db5","unresolved":false,"context_lines":[{"line_number":3853,"context_line":"#        def fake_volume_driver_method(self, method, connction_info,"},{"line_number":3854,"context_line":"#                                      disk_dev):"},{"line_number":3855,"context_line":"#            if volume_fail:"},{"line_number":3856,"context_line":"#                raise exception.VolumeNotFound"},{"line_number":3857,"context_line":""},{"line_number":3858,"context_line":"        conn \u003d libvirt_driver.LibvirtDriver(fake.FakeVirtAPI(), False)"},{"line_number":3859,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FLEk%3D","line":3856,"in_reply_to":"AAAAS3%2F%2FMls%3D","updated":"2013-10-02 22:36:12.000000000","message":"Done","commit_id":"55a9e13ca1d5de0498f54711aae83c220408612f"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"1455deb3a944e455b578d4be2bc78fc4bdb95f21","unresolved":false,"context_lines":[{"line_number":3870,"context_line":""},{"line_number":3871,"context_line":"        conn.destroy(instance, [], vol)"},{"line_number":3872,"context_line":""},{"line_number":3873,"context_line":"    def test_destroy_not_removes_disk(self, volume_fail\u003dFalse):"},{"line_number":3874,"context_line":"        instance \u003d {\"name\": \"instancename\", \"id\": \"instanceid\","},{"line_number":3875,"context_line":"                    \"uuid\": \"875a8070-d0b9-4949-8b31-104d125c9a64\"}"},{"line_number":3876,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FMlE%3D","line":3873,"updated":"2013-10-02 14:54:40.000000000","message":"this doesn\u0027t look intentional (volume_fail parameter?)","commit_id":"55a9e13ca1d5de0498f54711aae83c220408612f"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"8404bbd9804c4fc41bfbff60c6713945bfba5db5","unresolved":false,"context_lines":[{"line_number":3870,"context_line":""},{"line_number":3871,"context_line":"        conn.destroy(instance, [], vol)"},{"line_number":3872,"context_line":""},{"line_number":3873,"context_line":"    def test_destroy_not_removes_disk(self, volume_fail\u003dFalse):"},{"line_number":3874,"context_line":"        instance \u003d {\"name\": \"instancename\", \"id\": \"instanceid\","},{"line_number":3875,"context_line":"                    \"uuid\": \"875a8070-d0b9-4949-8b31-104d125c9a64\"}"},{"line_number":3876,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FLEo%3D","line":3873,"in_reply_to":"AAAAS3%2F%2FMlE%3D","updated":"2013-10-02 22:36:12.000000000","message":"Done","commit_id":"55a9e13ca1d5de0498f54711aae83c220408612f"},{"author":{"_account_id":5652,"name":"David Ripton","email":"dripton@redhat.com","username":"dripton"},"change_message_id":"461ebe9e6aa964cff81b07856d1d899e45843a4e","unresolved":false,"context_lines":[{"line_number":3860,"context_line":"                       fake_obj_load_attr)"},{"line_number":3861,"context_line":"        self.stubs.Set(instance_obj.Instance, \u0027save\u0027, fake_save)"},{"line_number":3862,"context_line":""},{"line_number":3863,"context_line":"        conn.destroy(instance, [], vol)"},{"line_number":3864,"context_line":""},{"line_number":3865,"context_line":"    def test_destroy_not_removes_disk(self):"},{"line_number":3866,"context_line":"        instance \u003d {\"name\": \"instancename\", \"id\": \"instanceid\","}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2FR9g%3D","line":3863,"updated":"2013-10-18 13:46:44.000000000","message":"I don\u0027t see any asserts to prove that the disk was actually removed.","commit_id":"8a78871ed811110b9f52f818f6ed2a6105f14987"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"c77ec29e5e70370d1270047f96cd5067f6c2ab68","unresolved":false,"context_lines":[{"line_number":3860,"context_line":"                       fake_obj_load_attr)"},{"line_number":3861,"context_line":"        self.stubs.Set(instance_obj.Instance, \u0027save\u0027, fake_save)"},{"line_number":3862,"context_line":""},{"line_number":3863,"context_line":"        conn.destroy(instance, [], vol)"},{"line_number":3864,"context_line":""},{"line_number":3865,"context_line":"    def test_destroy_not_removes_disk(self):"},{"line_number":3866,"context_line":"        instance \u003d {\"name\": \"instancename\", \"id\": \"instanceid\","}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2FR8c%3D","line":3863,"in_reply_to":"AAAATH%2F%2FR9g%3D","updated":"2013-10-18 13:52:31.000000000","message":"It\u0027s the same case as with test above this one: libvirt_driver.LibvirtDriver._cleanup_lvm(instance) is checked by mox.","commit_id":"8a78871ed811110b9f52f818f6ed2a6105f14987"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"f4a5aa2362ec4ced44fc46f0d5f877f4792d20ba","unresolved":false,"context_lines":[{"line_number":3899,"context_line":"        vol \u003d {\u0027block_device_mapping\u0027: ["},{"line_number":3900,"context_line":"              {\u0027connection_info\u0027: \u0027dummy\u0027, \u0027mount_device\u0027: \u0027/dev/sdb\u0027}]}"},{"line_number":3901,"context_line":""},{"line_number":3902,"context_line":"        self.mox.StubOutWithMock(libvirt_driver.LibvirtDriver,"},{"line_number":3903,"context_line":"                                 \u0027_undefine_domain\u0027)"},{"line_number":3904,"context_line":"        libvirt_driver.LibvirtDriver._undefine_domain(instance)"},{"line_number":3905,"context_line":"        self.mox.StubOutWithMock(db, \u0027instance_get_by_uuid\u0027)"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2F%2BuQ%3D","line":3902,"updated":"2013-10-24 10:42:06.000000000","message":"there has been a lot of talk about moving to mock/fixtures.","commit_id":"56b9591a8abc0415b1044e23a0bf8f1db1b7c18a"},{"author":{"_account_id":1865,"name":"Andrea Rosa","email":"andrea.rosa@gmail.com","username":"andrea-rosa-m"},"change_message_id":"a243564cf22b79e7e60ffee0c39768cb6db2be22","unresolved":false,"context_lines":[{"line_number":3905,"context_line":"        self.mox.StubOutWithMock(db, \u0027instance_get_by_uuid\u0027)"},{"line_number":3906,"context_line":"        db.instance_get_by_uuid(mox.IgnoreArg(), mox.IgnoreArg(),"},{"line_number":3907,"context_line":"                                columns_to_join\u003d[\u0027info_cache\u0027,"},{"line_number":3908,"context_line":"                                                 \u0027security_groups\u0027]"},{"line_number":3909,"context_line":"                                ).AndReturn(instance)"},{"line_number":3910,"context_line":"        self.mox.StubOutWithMock(driver, \"block_device_info_get_mapping\")"},{"line_number":3911,"context_line":"        driver.block_device_info_get_mapping(vol"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2FrBY%3D","line":3908,"updated":"2013-10-30 15:55:16.000000000","message":"A recent merged (https://review.openstack.org/38872) changed \nthe signature of the instance_get_by_uuid method, \nyou need to add one more parameter (use_slave), something like:\ndb.instance_get_by_uuid(mox.IgnoreArg(), mox.IgnoreArg(),\n                        columns_to_join\u003d[\u0027info_cache\u0027,\n                        \u0027security_groups\u0027],\n                        use_slave\u003dFalse).AndReturn(instance)","commit_id":"56b9591a8abc0415b1044e23a0bf8f1db1b7c18a"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"1455deb3a944e455b578d4be2bc78fc4bdb95f21","unresolved":false,"context_lines":[{"line_number":68,"context_line":"from nova.compute import task_states"},{"line_number":69,"context_line":"from nova.compute import utils as compute_utils"},{"line_number":70,"context_line":"from nova.compute import vm_mode"},{"line_number":71,"context_line":"from nova.compute import vm_mode"},{"line_number":72,"context_line":"from nova import context as nova_context"},{"line_number":73,"context_line":"from nova import exception"},{"line_number":74,"context_line":"from nova.image import glance"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FMko%3D","line":71,"updated":"2013-10-02 14:54:40.000000000","message":"it\u0027s already imported line above","commit_id":"55a9e13ca1d5de0498f54711aae83c220408612f"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"8404bbd9804c4fc41bfbff60c6713945bfba5db5","unresolved":false,"context_lines":[{"line_number":68,"context_line":"from nova.compute import task_states"},{"line_number":69,"context_line":"from nova.compute import utils as compute_utils"},{"line_number":70,"context_line":"from nova.compute import vm_mode"},{"line_number":71,"context_line":"from nova.compute import vm_mode"},{"line_number":72,"context_line":"from nova import context as nova_context"},{"line_number":73,"context_line":"from nova import exception"},{"line_number":74,"context_line":"from nova.image import glance"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FLGQ%3D","line":71,"in_reply_to":"AAAAS3%2F%2FMko%3D","updated":"2013-10-02 22:36:12.000000000","message":"Done","commit_id":"55a9e13ca1d5de0498f54711aae83c220408612f"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"1455deb3a944e455b578d4be2bc78fc4bdb95f21","unresolved":false,"context_lines":[{"line_number":938,"context_line":"                    LOG.warn(_(\u0027Ignoring Volume Error during delete %s\u0027) % exc,"},{"line_number":939,"context_line":"                             instance\u003dinstance)"},{"line_number":940,"context_line":"                else:"},{"line_number":941,"context_line":"                    raise exc"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        if destroy_disks:"},{"line_number":944,"context_line":"            self._delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FMj8%3D","line":941,"updated":"2013-10-02 14:54:40.000000000","message":"this should be just \"raise\"... or maybe even should use excutils.save_and_reraise_exception() since logging can switch contexts","commit_id":"55a9e13ca1d5de0498f54711aae83c220408612f"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"8404bbd9804c4fc41bfbff60c6713945bfba5db5","unresolved":false,"context_lines":[{"line_number":938,"context_line":"                    LOG.warn(_(\u0027Ignoring Volume Error during delete %s\u0027) % exc,"},{"line_number":939,"context_line":"                             instance\u003dinstance)"},{"line_number":940,"context_line":"                else:"},{"line_number":941,"context_line":"                    raise exc"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        if destroy_disks:"},{"line_number":944,"context_line":"            self._delete_instance_files(instance)"}],"source_content_type":"text/x-python","patch_set":7,"id":"AAAAS3%2F%2FLG0%3D","line":941,"in_reply_to":"AAAAS3%2F%2FMj8%3D","updated":"2013-10-02 22:36:12.000000000","message":"Just raise I think, as the logging is only on the non raise path","commit_id":"55a9e13ca1d5de0498f54711aae83c220408612f"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"ac52977af26eef171c0a86b7b6f16e119eba78d1","unresolved":false,"context_lines":[{"line_number":929,"context_line":"                self.volume_driver_method(\u0027disconnect_volume\u0027,"},{"line_number":930,"context_line":"                                          connection_info,"},{"line_number":931,"context_line":"                                          disk_dev)"},{"line_number":932,"context_line":"            except Exception as exc:"},{"line_number":933,"context_line":"                # Don\u0027t block on Volume errors if we\u0027re trying to delete"},{"line_number":934,"context_line":"                # the instance it, as we may be patially created or"},{"line_number":935,"context_line":"                # deleted"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2FHPs%3D","line":932,"updated":"2013-10-04 06:12:48.000000000","message":"is catch all exception a good idea? I know that you want to get any eventual errors on volume operation, but this has the potential to hide some other programming errors","commit_id":"8c644fda4f52e5a7748b4034f564202ba5023d6f"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"a9b1a928fc3d1e8d763d222cd8eafe9dbad4c7da","unresolved":false,"context_lines":[{"line_number":929,"context_line":"                self.volume_driver_method(\u0027disconnect_volume\u0027,"},{"line_number":930,"context_line":"                                          connection_info,"},{"line_number":931,"context_line":"                                          disk_dev)"},{"line_number":932,"context_line":"            except Exception as exc:"},{"line_number":933,"context_line":"                # Don\u0027t block on Volume errors if we\u0027re trying to delete"},{"line_number":934,"context_line":"                # the instance it, as we may be patially created or"},{"line_number":935,"context_line":"                # deleted"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2FGz0%3D","line":932,"in_reply_to":"AAAAS3%2F%2FHPs%3D","updated":"2013-10-04 09:39:56.000000000","message":"I understand the general principle, but I think its OK in this specific case of deletion.  \n \nIf you look at the code that follows the call into driver.shutdown in the compute manager you\u0027ll see a similar catch all exception handler for Volume errors: \nhttps://github.com/openstack/nova/blob/master/nova/compute/manager.py#L1729-#L1743 \n\nBecause at this point we\u0027re calling into a plugable driver (which may raise exceptions Nova doesn\u0027t recognize, and the error may not be  recoverable by multiple delete attempts (leaving the instance firmly stuck in Error) a catch all here seems reasonable.","commit_id":"8c644fda4f52e5a7748b4034f564202ba5023d6f"},{"author":{"_account_id":5174,"name":"Mauro Sergio Martins Rodrigues","email":"maurosr@linux.vnet.ibm.com","username":"maurosr"},"change_message_id":"ac52977af26eef171c0a86b7b6f16e119eba78d1","unresolved":false,"context_lines":[{"line_number":935,"context_line":"                # deleted"},{"line_number":936,"context_line":"                if destroy_disks:"},{"line_number":937,"context_line":"                    LOG.warn(_(\u0027Ignoring Volume Error during delete %s\u0027) % exc,"},{"line_number":938,"context_line":"                             instance\u003dinstance)"},{"line_number":939,"context_line":"                else:"},{"line_number":940,"context_line":"                    raise"},{"line_number":941,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2FHPo%3D","line":938,"updated":"2013-10-04 06:12:48.000000000","message":"suggestion: maybe include volume id would be a useful information to the logs","commit_id":"8c644fda4f52e5a7748b4034f564202ba5023d6f"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"a9b1a928fc3d1e8d763d222cd8eafe9dbad4c7da","unresolved":false,"context_lines":[{"line_number":935,"context_line":"                # deleted"},{"line_number":936,"context_line":"                if destroy_disks:"},{"line_number":937,"context_line":"                    LOG.warn(_(\u0027Ignoring Volume Error during delete %s\u0027) % exc,"},{"line_number":938,"context_line":"                             instance\u003dinstance)"},{"line_number":939,"context_line":"                else:"},{"line_number":940,"context_line":"                    raise"},{"line_number":941,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAS3%2F%2FGzw%3D","line":938,"in_reply_to":"AAAAS3%2F%2FHPo%3D","updated":"2013-10-04 09:39:56.000000000","message":"Done","commit_id":"8c644fda4f52e5a7748b4034f564202ba5023d6f"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4a18a74318b9158164eb0013cfdc0602bcd2cbae","unresolved":false,"context_lines":[{"line_number":926,"context_line":"                    encryptor.detach_volume(**encryption)"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"            try:"},{"line_number":929,"context_line":"                self.volume_driver_method(\u0027disconnect_volume\u0027,"},{"line_number":930,"context_line":"                                          connection_info,"},{"line_number":931,"context_line":"                                          disk_dev)"},{"line_number":932,"context_line":"            except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2F7QM%3D","line":929,"updated":"2013-10-07 23:34:04.000000000","message":"Why put this into libvirt, what about other virt drivers?","commit_id":"8a78871ed811110b9f52f818f6ed2a6105f14987"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"67420db644e945f3eed6f09aec866582af1764c4","unresolved":false,"context_lines":[{"line_number":926,"context_line":"                    encryptor.detach_volume(**encryption)"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"            try:"},{"line_number":929,"context_line":"                self.volume_driver_method(\u0027disconnect_volume\u0027,"},{"line_number":930,"context_line":"                                          connection_info,"},{"line_number":931,"context_line":"                                          disk_dev)"},{"line_number":932,"context_line":"            except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2FydM%3D","line":929,"in_reply_to":"AAAATH%2F%2F3YY%3D","updated":"2013-10-11 15:22:35.000000000","message":"Not really - we had it there at one point, but then the exception is caught at too high a point in the stack and the rest of the clean-up doesn\u0027t run.","commit_id":"8a78871ed811110b9f52f818f6ed2a6105f14987"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"35f17b9170fca590fde0be943c572ef81e510570","unresolved":false,"context_lines":[{"line_number":926,"context_line":"                    encryptor.detach_volume(**encryption)"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"            try:"},{"line_number":929,"context_line":"                self.volume_driver_method(\u0027disconnect_volume\u0027,"},{"line_number":930,"context_line":"                                          connection_info,"},{"line_number":931,"context_line":"                                          disk_dev)"},{"line_number":932,"context_line":"            except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2F3YY%3D","line":929,"in_reply_to":"AAAATH%2F%2F550%3D","updated":"2013-10-08 19:16:10.000000000","message":"Can this code be moved out of the drivers all together and up one layer?","commit_id":"8a78871ed811110b9f52f818f6ed2a6105f14987"},{"author":{"_account_id":1501,"name":"Phil Day","email":"philip.day@hp.com","username":"philip-day"},"change_message_id":"f6358588114a9065ffe1a571387374b59b1ec052","unresolved":false,"context_lines":[{"line_number":926,"context_line":"                    encryptor.detach_volume(**encryption)"},{"line_number":927,"context_line":""},{"line_number":928,"context_line":"            try:"},{"line_number":929,"context_line":"                self.volume_driver_method(\u0027disconnect_volume\u0027,"},{"line_number":930,"context_line":"                                          connection_info,"},{"line_number":931,"context_line":"                                          disk_dev)"},{"line_number":932,"context_line":"            except Exception as exc:"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2F550%3D","line":929,"in_reply_to":"AAAATH%2F%2F7QM%3D","updated":"2013-10-08 08:54:32.000000000","message":"I don\u0027t personally know enough about the other virt drivers, or have any capability to test them, to want to try that speculatively - so I though it better to leave that to the relevant domain experts to pick up","commit_id":"8a78871ed811110b9f52f818f6ed2a6105f14987"},{"author":{"_account_id":1849,"name":"Joe Gordon","email":"joe.gordon0@gmail.com","username":"jogo"},"change_message_id":"4a18a74318b9158164eb0013cfdc0602bcd2cbae","unresolved":false,"context_lines":[{"line_number":931,"context_line":"                                          disk_dev)"},{"line_number":932,"context_line":"            except Exception as exc:"},{"line_number":933,"context_line":"                # Don\u0027t block on Volume errors if we\u0027re trying to delete"},{"line_number":934,"context_line":"                # the instance it, as we may be patially created or"},{"line_number":935,"context_line":"                # deleted"},{"line_number":936,"context_line":"                if destroy_disks:"},{"line_number":937,"context_line":"                    param \u003d {\u0027vol_id\u0027: vol.get(\u0027volume_id\u0027), \u0027exc\u0027: exc}"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAATH%2F%2F7SY%3D","line":934,"updated":"2013-10-07 23:34:04.000000000","message":"nit: \u0027the instance it\u0027?","commit_id":"8a78871ed811110b9f52f818f6ed2a6105f14987"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"17ce3dbb2052a23af83d796ec0ed7d9adb06204c","unresolved":false,"context_lines":[{"line_number":938,"context_line":"                             \"delete %(exc)s\") % param)"},{"line_number":939,"context_line":"                    LOG.warn(msg, instance\u003dinstance)"},{"line_number":940,"context_line":"                else:"},{"line_number":941,"context_line":"                    raise"},{"line_number":942,"context_line":""},{"line_number":943,"context_line":"        if destroy_disks:"},{"line_number":944,"context_line":"            #NOTE(GuanQiang): teardown lxc container to avoid resource leak"}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAATn%2F%2FqjM%3D","line":941,"updated":"2013-10-30 17:14:49.000000000","message":"Please use excutils.save_and_reraise_exception() to stop any odd greenlet issues","commit_id":"56b9591a8abc0415b1044e23a0bf8f1db1b7c18a"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"ca9a8e0220dca4ac2226c565094139372985e34e","unresolved":false,"context_lines":[{"line_number":953,"context_line":"                                          disk_dev)"},{"line_number":954,"context_line":"            except Exception as exc:"},{"line_number":955,"context_line":"                # Note(PhilD): Can\u0027t use save_and_reraise here as we don\u0027t"},{"line_number":956,"context_line":"                # know yet if we will re-raise or not."},{"line_number":957,"context_line":""},{"line_number":958,"context_line":"                # Don\u0027t block on Volume errors if we\u0027re trying to delete"},{"line_number":959,"context_line":"                # the instance as we may be patially created or deleted"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FdsY%3D","line":956,"updated":"2013-11-05 13:44:04.000000000","message":"This can be still done with save_and_reraise. The excutils even provides the example in the comments:\n\n    except Exception:\n        with save_and_reraise_exception() as ctxt:\n            decide_if_need_reraise()\n            if not should_be_reraised:\n                ctxt.reraise \u003d False\n\nI\u0027m not saying that way should be used here, but the comment itself is not correct.","commit_id":"1bd42cce3452ad65e1d2abadfe9a01594e25d0b1"},{"author":{"_account_id":7040,"name":"GuoHui LIu","email":"liuguohui@gmail.com","username":"guohliu"},"change_message_id":"be129923f67c1b4fa5c146395c6f29b32bfdd478","unresolved":false,"context_lines":[{"line_number":959,"context_line":"                # the instance as we may be patially created or deleted"},{"line_number":960,"context_line":"                if destroy_disks:"},{"line_number":961,"context_line":"                    param \u003d {\u0027vol_id\u0027: vol.get(\u0027volume_id\u0027), \u0027exc\u0027: exc}"},{"line_number":962,"context_line":"                    msg \u003d (_(\"Ignoring Volume Error on vol %(vol_id)s during \""},{"line_number":963,"context_line":"                             \"delete %(exc)s\") % param)"},{"line_number":964,"context_line":"                    LOG.warn(msg, instance\u003dinstance)"},{"line_number":965,"context_line":"                else:"}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2FmHA%3D","line":962,"updated":"2013-10-31 17:27:49.000000000","message":"how about \"Ignoring volume disconnect error on vol %(vol_id)s during instance delete\"?","commit_id":"1bd42cce3452ad65e1d2abadfe9a01594e25d0b1"},{"author":{"_account_id":8125,"name":"Michael Davies","email":"michael@the-davies.net","username":"mrda"},"change_message_id":"90ca7b19069fffa36af224e0d2c6e4471df33148","unresolved":false,"context_lines":[{"line_number":961,"context_line":"                    param \u003d {\u0027vol_id\u0027: vol.get(\u0027volume_id\u0027), \u0027exc\u0027: exc}"},{"line_number":962,"context_line":"                    msg \u003d (_(\"Ignoring Volume Error on vol %(vol_id)s during \""},{"line_number":963,"context_line":"                             \"delete %(exc)s\") % param)"},{"line_number":964,"context_line":"                    LOG.warn(msg, instance\u003dinstance)"},{"line_number":965,"context_line":"                else:"},{"line_number":966,"context_line":"                    raise"},{"line_number":967,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2Fego%3D","line":964,"updated":"2013-11-05 06:12:33.000000000","message":"Agree with Michael Still here.  Log message should be in LOG.warn call.","commit_id":"1bd42cce3452ad65e1d2abadfe9a01594e25d0b1"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"d955d684938cd017e48ba8548acddff18c5b284b","unresolved":false,"context_lines":[{"line_number":961,"context_line":"                    param \u003d {\u0027vol_id\u0027: vol.get(\u0027volume_id\u0027), \u0027exc\u0027: exc}"},{"line_number":962,"context_line":"                    msg \u003d (_(\"Ignoring Volume Error on vol %(vol_id)s during \""},{"line_number":963,"context_line":"                             \"delete %(exc)s\") % param)"},{"line_number":964,"context_line":"                    LOG.warn(msg, instance\u003dinstance)"},{"line_number":965,"context_line":"                else:"},{"line_number":966,"context_line":"                    raise"},{"line_number":967,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"AAAATn%2F%2Fe2Q%3D","line":964,"updated":"2013-11-05 01:34:04.000000000","message":"Why is the message in a separate variable? I know its a minor nit, but I\u0027d prefer to see the message being in directly in the logging call.","commit_id":"1bd42cce3452ad65e1d2abadfe9a01594e25d0b1"},{"author":{"_account_id":2271,"name":"Michael Still","email":"mikal@stillhq.com","username":"mikalstill"},"change_message_id":"ce1206f04fe6097ac4af1de661715c03cef4c095","unresolved":false,"context_lines":[{"line_number":960,"context_line":"                        ctxt.reraise \u003d False"},{"line_number":961,"context_line":"                        param \u003d {\u0027vol_id\u0027: vol.get(\u0027volume_id\u0027), \u0027exc\u0027: exc}"},{"line_number":962,"context_line":"                        LOG.warn(_(\"Ignoring Volume Error on vol %(vol_id)s \""},{"line_number":963,"context_line":"                                   \"during delete %(exc)s\") % param,"},{"line_number":964,"context_line":"                                 instance\u003dinstance)"},{"line_number":965,"context_line":""},{"line_number":966,"context_line":"        if destroy_disks:"}],"source_content_type":"text/x-python","patch_set":12,"id":"AAAATn%2F%2FHfM%3D","line":963,"updated":"2013-11-14 08:25:43.000000000","message":"The param dict should be in the LOG message as well. I know this process is frustrating for you, so I will upload a change which does this now.","commit_id":"00296fc934082fb8a44a2cd0a687402a9ed5c72a"}]}
