)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9588bab8ac0f4b511554dbc9fd01793875c44d4d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix: unable to delete instance when cinder is down"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Ignore any cinder related exceptions that arise when you try to delete"},{"line_number":10,"context_line":"an instance."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Iba7b4cc4b59f88b0817c4618e7a4429161d6c2a9"},{"line_number":13,"context_line":"Closes-Bug: #1563547"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba0121b8_fb58eb8c","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":12},"updated":"2016-04-01 19:13:10.000000000","message":"Would be good to give some more background here, you shouldn\u0027t assume/rely on people to go out to launchpad and then go into the bugzilla to find all of the background details on this.\n\nEspecially since generally blanket try/except Exception isn\u0027t a thing we do, so there are reasons for doing it here, those should be mentioned in the commit message.","commit_id":"4e41264d3df1766c1d21df6c93fae2e3121c4228"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"671e008c18acd1eaa7864f55c567b0cdd6d4dbdf","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Fix: unable to delete instance when cinder is down"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Ignore any cinder related exceptions that arise when you try to delete"},{"line_number":10,"context_line":"an instance."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: Iba7b4cc4b59f88b0817c4618e7a4429161d6c2a9"},{"line_number":13,"context_line":"Closes-Bug: #1563547"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"ba0121b8_477bf829","line":10,"range":{"start_line":9,"start_character":0,"end_line":10,"end_character":12},"in_reply_to":"ba0121b8_fb58eb8c","updated":"2016-04-01 20:40:19.000000000","message":"Done","commit_id":"4e41264d3df1766c1d21df6c93fae2e3121c4228"}],"nova/compute/manager.py":[{"author":{"_account_id":18603,"name":"Béla Vancsics","email":"vancsics@inf.u-szeged.hu","username":"vancsics"},"change_message_id":"418d2beb13317938a6f27ac0a0508f38524806f7","unresolved":false,"context_lines":[{"line_number":2368,"context_line":"                LOG.warning(_LW(\u0027Ignoring Unknown cinder exception: %s\u0027), exc,"},{"line_number":2369,"context_line":"                            instance\u003dinstance)"},{"line_number":2370,"context_line":"            except Exception as exc:"},{"line_number":2371,"context_line":"                LOG.warning(_LW(\u0027Ignoring unknown exception: %s\u0027), exc,"},{"line_number":2372,"context_line":"                            instance\u003dinstance)"},{"line_number":2373,"context_line":"        if vol_bdms:"},{"line_number":2374,"context_line":"            LOG.info(_LI(\u0027Took %(time).2f seconds to detach %(num)s volumes \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_15aff581","line":2371,"range":{"start_line":2371,"start_character":42,"end_line":2371,"end_character":49},"updated":"2016-03-30 13:36:32.000000000","message":"unknown -\u003e Unknown","commit_id":"0ea2c40d3972849ad844c018aae957ddbd1b0142"},{"author":{"_account_id":15524,"name":"dane-fichter","email":"dane.fichter@jhuapl.edu","username":"dane-fichter"},"change_message_id":"359eed23c326944600822ab72cda8df062e38818","unresolved":false,"context_lines":[{"line_number":2368,"context_line":"                LOG.warning(_LW(\u0027Ignoring Unknown cinder exception: %s\u0027), exc,"},{"line_number":2369,"context_line":"                            instance\u003dinstance)"},{"line_number":2370,"context_line":"            except Exception as exc:"},{"line_number":2371,"context_line":"                LOG.warning(_LW(\u0027Ignoring unknown exception: %s\u0027), exc,"},{"line_number":2372,"context_line":"                            instance\u003dinstance)"},{"line_number":2373,"context_line":"        if vol_bdms:"},{"line_number":2374,"context_line":"            LOG.info(_LI(\u0027Took %(time).2f seconds to detach %(num)s volumes \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_c8183f78","line":2371,"range":{"start_line":2371,"start_character":42,"end_line":2371,"end_character":49},"in_reply_to":"ba0121b8_0bca386d","updated":"2016-03-30 15:00:40.000000000","message":"Agreed. Lower case looks better.","commit_id":"0ea2c40d3972849ad844c018aae957ddbd1b0142"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"045b0821d7887fd71980cdd17a0f77b17a133134","unresolved":false,"context_lines":[{"line_number":2368,"context_line":"                LOG.warning(_LW(\u0027Ignoring Unknown cinder exception: %s\u0027), exc,"},{"line_number":2369,"context_line":"                            instance\u003dinstance)"},{"line_number":2370,"context_line":"            except Exception as exc:"},{"line_number":2371,"context_line":"                LOG.warning(_LW(\u0027Ignoring unknown exception: %s\u0027), exc,"},{"line_number":2372,"context_line":"                            instance\u003dinstance)"},{"line_number":2373,"context_line":"        if vol_bdms:"},{"line_number":2374,"context_line":"            LOG.info(_LI(\u0027Took %(time).2f seconds to detach %(num)s volumes \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_f8b51831","line":2371,"range":{"start_line":2371,"start_character":42,"end_line":2371,"end_character":49},"in_reply_to":"ba0121b8_15aff581","updated":"2016-03-30 13:46:00.000000000","message":"Thanks for the review, Béla!\n\nAnd thanks for the reminder. I was meaning to ask actually, since I noticed \u0027Unknown\u0027 is capitalized on line 2368 too. Why do we capitalize it though? To me, capitalizing it looks like a typo, but perhaps I\u0027m overlooking something.","commit_id":"0ea2c40d3972849ad844c018aae957ddbd1b0142"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"acfeab1877a38788f50e47fa4415410b67847993","unresolved":false,"context_lines":[{"line_number":2368,"context_line":"                LOG.warning(_LW(\u0027Ignoring Unknown cinder exception: %s\u0027), exc,"},{"line_number":2369,"context_line":"                            instance\u003dinstance)"},{"line_number":2370,"context_line":"            except Exception as exc:"},{"line_number":2371,"context_line":"                LOG.warning(_LW(\u0027Ignoring unknown exception: %s\u0027), exc,"},{"line_number":2372,"context_line":"                            instance\u003dinstance)"},{"line_number":2373,"context_line":"        if vol_bdms:"},{"line_number":2374,"context_line":"            LOG.info(_LI(\u0027Took %(time).2f seconds to detach %(num)s volumes \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_b7a19f48","line":2371,"range":{"start_line":2371,"start_character":42,"end_line":2371,"end_character":49},"in_reply_to":"ba0121b8_572003f7","updated":"2016-03-31 18:45:18.000000000","message":"We have this sort of catch-all in most places where it\u0027s critical for us not to leave something in an un-clean-uppable state. It\u0027s all over the instance build path. If we don\u0027t, we leave things in states that prevent us from retrying or undoing things.","commit_id":"0ea2c40d3972849ad844c018aae957ddbd1b0142"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"f22ab9620fe70c93804a1f31b850c46aef7653a9","unresolved":false,"context_lines":[{"line_number":2368,"context_line":"                LOG.warning(_LW(\u0027Ignoring Unknown cinder exception: %s\u0027), exc,"},{"line_number":2369,"context_line":"                            instance\u003dinstance)"},{"line_number":2370,"context_line":"            except Exception as exc:"},{"line_number":2371,"context_line":"                LOG.warning(_LW(\u0027Ignoring unknown exception: %s\u0027), exc,"},{"line_number":2372,"context_line":"                            instance\u003dinstance)"},{"line_number":2373,"context_line":"        if vol_bdms:"},{"line_number":2374,"context_line":"            LOG.info(_LI(\u0027Took %(time).2f seconds to detach %(num)s volumes \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_8d98ce1d","line":2371,"range":{"start_line":2371,"start_character":42,"end_line":2371,"end_character":49},"in_reply_to":"ba0121b8_6d645ab8","updated":"2016-03-31 19:25:52.000000000","message":"Note that bdm.volume_id might be None, see https://review.openstack.org/#/c/258118/ and the change it was building on that was fixing a race issue in the gate.\n\nI believe in the case of bdm.volume_id being None and passed to terminate_connection, we get a VolumeNotFound from Cinder which is already handled.\n\nYeah: https://github.com/openstack/cinder/blob/master/cinder/api/contrib/volume_actions.py#L233-L236","commit_id":"0ea2c40d3972849ad844c018aae957ddbd1b0142"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"113afc28a1ad664d2d5bb0c8e12e33e43f33636b","unresolved":false,"context_lines":[{"line_number":2368,"context_line":"                LOG.warning(_LW(\u0027Ignoring Unknown cinder exception: %s\u0027), exc,"},{"line_number":2369,"context_line":"                            instance\u003dinstance)"},{"line_number":2370,"context_line":"            except Exception as exc:"},{"line_number":2371,"context_line":"                LOG.warning(_LW(\u0027Ignoring unknown exception: %s\u0027), exc,"},{"line_number":2372,"context_line":"                            instance\u003dinstance)"},{"line_number":2373,"context_line":"        if vol_bdms:"},{"line_number":2374,"context_line":"            LOG.info(_LI(\u0027Took %(time).2f seconds to detach %(num)s volumes \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_6d645ab8","line":2371,"range":{"start_line":2371,"start_character":42,"end_line":2371,"end_character":49},"in_reply_to":"ba0121b8_b7a19f48","updated":"2016-03-31 19:13:48.000000000","message":"Ok, in circling back to the conversation in IRC. The catch all exception seems like a least bad tradeoff.\n\nHowever, it would be really good to actually log information about the bdm (probably bdm.volume_id) which went wrong, so that administrators could realize that is in an inconsistent state relative to nova. And either be able to help users when it goes wrong, or do some of their own cleaning up.","commit_id":"0ea2c40d3972849ad844c018aae957ddbd1b0142"},{"author":{"_account_id":16907,"name":"Diana Clarke","email":"diana.joan.clarke@gmail.com","username":"diana-clarke"},"change_message_id":"06824dc5a0cb99b062d1f333221ebe4b399fce3e","unresolved":false,"context_lines":[{"line_number":2368,"context_line":"                LOG.warning(_LW(\u0027Ignoring Unknown cinder exception: %s\u0027), exc,"},{"line_number":2369,"context_line":"                            instance\u003dinstance)"},{"line_number":2370,"context_line":"            except Exception as exc:"},{"line_number":2371,"context_line":"                LOG.warning(_LW(\u0027Ignoring unknown exception: %s\u0027), exc,"},{"line_number":2372,"context_line":"                            instance\u003dinstance)"},{"line_number":2373,"context_line":"        if vol_bdms:"},{"line_number":2374,"context_line":"            LOG.info(_LI(\u0027Took %(time).2f seconds to detach %(num)s volumes \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_572003f7","line":2371,"range":{"start_line":2371,"start_character":42,"end_line":2371,"end_character":49},"in_reply_to":"ba0121b8_c51f4059","updated":"2016-03-31 18:42:50.000000000","message":"The exception raised in the downstream bug report was actually a keystone_client.ConnectionRefused exception rather than my contrived CinderConnectionFailed exception (easier to reproduce via devstack, similar enough code path).\n\nI\u0027m usually leery of adding \"diaper exceptions\" too, but I also didn\u0027t want to add more exceptions to the growing list of ones we\u0027re already specifically catching (currently 5).\n\n    exception.DiskNotFound\n    exception.VolumeNotFound\n    cinder_exception.EndpointNotFound\n    keystone_exception.EndpointNotFound\n    cinder_exception.ClientException","commit_id":"0ea2c40d3972849ad844c018aae957ddbd1b0142"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"45be9eaa877bf32a71a1c5b9f47a6a73657a6f22","unresolved":false,"context_lines":[{"line_number":2368,"context_line":"                LOG.warning(_LW(\u0027Ignoring Unknown cinder exception: %s\u0027), exc,"},{"line_number":2369,"context_line":"                            instance\u003dinstance)"},{"line_number":2370,"context_line":"            except Exception as exc:"},{"line_number":2371,"context_line":"                LOG.warning(_LW(\u0027Ignoring unknown exception: %s\u0027), exc,"},{"line_number":2372,"context_line":"                            instance\u003dinstance)"},{"line_number":2373,"context_line":"        if vol_bdms:"},{"line_number":2374,"context_line":"            LOG.info(_LI(\u0027Took %(time).2f seconds to detach %(num)s volumes \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_c51f4059","line":2371,"range":{"start_line":2371,"start_character":42,"end_line":2371,"end_character":49},"in_reply_to":"ba0121b8_c8183f78","updated":"2016-03-31 18:11:58.000000000","message":"Catching Exception so broadly bothers me. It looks like in the Cinder is down there is a ConnectException that is raised, which would be a more narrow catch.\n\nIt also seems like if we do have a catchall we should dump the details of here of the bdm to tell the admin that a resource was not cleaned up and might have leaked.","commit_id":"0ea2c40d3972849ad844c018aae957ddbd1b0142"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"4670a566b5fb665cec33874d50cf95c5b4a57ab1","unresolved":false,"context_lines":[{"line_number":2368,"context_line":"                LOG.warning(_LW(\u0027Ignoring Unknown cinder exception: %s\u0027), exc,"},{"line_number":2369,"context_line":"                            instance\u003dinstance)"},{"line_number":2370,"context_line":"            except Exception as exc:"},{"line_number":2371,"context_line":"                LOG.warning(_LW(\u0027Ignoring unknown exception: %s\u0027), exc,"},{"line_number":2372,"context_line":"                            instance\u003dinstance)"},{"line_number":2373,"context_line":"        if vol_bdms:"},{"line_number":2374,"context_line":"            LOG.info(_LI(\u0027Took %(time).2f seconds to detach %(num)s volumes \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_0bca386d","line":2371,"range":{"start_line":2371,"start_character":42,"end_line":2371,"end_character":49},"in_reply_to":"ba0121b8_f8b51831","updated":"2016-03-30 14:02:30.000000000","message":"Uncapitalized is correct, IMHO.","commit_id":"0ea2c40d3972849ad844c018aae957ddbd1b0142"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"fe8e3ed522335a5d88296712c620d8d21f816eb5","unresolved":false,"context_lines":[{"line_number":2480,"context_line":""},{"line_number":2481,"context_line":"        @utils.synchronized(instance.uuid)"},{"line_number":2482,"context_line":"        def do_terminate_instance(instance, bdms):"},{"line_number":2483,"context_line":"            # NOTE(mriedem): If we are deleting the instance while it was"},{"line_number":2484,"context_line":"            # booting from volume, we could be racing with a database update of"},{"line_number":2485,"context_line":"            # the BDM volume_id. Since the compute API passes the BDMs over RPC"},{"line_number":2486,"context_line":"            # to compute here, the BDMs may be stale at this point. So check"},{"line_number":2487,"context_line":"            # for any volume BDMs that don\u0027t have volume_id set and if we"},{"line_number":2488,"context_line":"            # detect that, we need to refresh the BDM list before proceeding."},{"line_number":2489,"context_line":"            # TODO(mriedem): Move this into _delete_instance and make the bdms"},{"line_number":2490,"context_line":"            # parameter optional."},{"line_number":2491,"context_line":"            for bdm in list(bdms):"},{"line_number":2492,"context_line":"                if bdm.is_volume and not bdm.volume_id:"},{"line_number":2493,"context_line":"                    LOG.debug(\u0027There are potentially stale BDMs during \u0027"},{"line_number":2494,"context_line":"                              \u0027delete, refreshing the BlockDeviceMappingList.\u0027,"},{"line_number":2495,"context_line":"                              instance\u003dinstance)"},{"line_number":2496,"context_line":"                    bdms \u003d objects.BlockDeviceMappingList.get_by_instance_uuid("},{"line_number":2497,"context_line":"                        context, instance.uuid)"},{"line_number":2498,"context_line":"                    break"},{"line_number":2499,"context_line":"            try:"},{"line_number":2500,"context_line":"                self._delete_instance(context, instance, bdms, quotas)"},{"line_number":2501,"context_line":"            except exception.InstanceNotFound:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba0121b8_0db31e51","line":2498,"range":{"start_line":2483,"start_character":12,"end_line":2498,"end_character":25},"updated":"2016-03-31 19:10:43.000000000","message":"This makes sure the bdm.volume_id is set when racing with a boot from volume failure where source_type is image/blank/snapshot so that we have the bdm.volume_id available when terminating the connection and detaching the volume in cinder (assuming the initial create volume request from nova to cinder in that case didn\u0027t fail).","commit_id":"0ea2c40d3972849ad844c018aae957ddbd1b0142"}]}
