)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"5b2f74a629acebe7aa0e05af6d48bbb6fbba87ab","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Gábor Antal \u003cantal@inf.u-szeged.hu\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-08-24 14:36:40 +0200"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Removed unnecessary exception catching"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"On [1] InstanceIsLocked is catched. However on [2] InstanceInvalidState"},{"line_number":10,"context_line":"is catched, which is an ancestor of InstanceIsLocked."},{"line_number":11,"context_line":"For this reason, catching a specific exception is meaningless after"},{"line_number":12,"context_line":"catching the base type (as it will catch sub-types too)."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"[1]: https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L1111"},{"line_number":15,"context_line":"[2]: https://github.com/openstack/nova/blob/master/nova/api/openstack/compute/servers.py#L1108"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"Change-Id: I4c520d485736197c278291c126784f7a8d693756"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1ac06dbe_10812e90","line":15,"range":{"start_line":7,"start_character":0,"end_line":15,"end_character":94},"updated":"2016-08-24 20:41:40.000000000","message":"The implementation is good for me, thanks for updating.\nHowever, this comment message doesn\u0027t show current change.\nCurrent patch changes the order of the exceptions, and need to clarify the reason. The title is also different now.","commit_id":"32195bb1e3ed197e6efd3238154be8d9363465a1"}],"nova/api/openstack/compute/servers.py":[{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"1dd18908fad5b0b79c41d833a6cd959e19a42439","unresolved":false,"context_lines":[{"line_number":1105,"context_line":"        context.can(server_policies.SERVERS % \u0027trigger_crash_dump\u0027, instance)"},{"line_number":1106,"context_line":"        try:"},{"line_number":1107,"context_line":"            self.compute_api.trigger_crash_dump(context, instance)"},{"line_number":1108,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":1109,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":1110,"context_line":"                \u0027trigger_crash_dump\u0027, id)"},{"line_number":1111,"context_line":"        except exception.InstanceNotReady as e:"},{"line_number":1112,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":1113,"context_line":"        except exception.TriggerCrashDumpNotSupported as e:"},{"line_number":1114,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":1115,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"bacf61ea_c70b5c2a","line":1112,"range":{"start_line":1108,"start_character":0,"end_line":1112,"end_character":72},"updated":"2016-08-02 22:11:44.000000000","message":"This is a nice catch, but I feel it would be better to change the order of catching for a better error message for API users.\n\nInstanceIsLocked\u0027s message is \"Instance %(instance_uuid)s is locked\" and that is easy to understand what happens on the API operation.","commit_id":"b78edaf026d2c2e4d1aeb5da623b643c0e0404bc"},{"author":{"_account_id":6167,"name":"Ken\u0027ichi Ohmichi","email":"ken1ohmichi@gmail.com","username":"oomichi"},"change_message_id":"f5e2e2c6b0b0d81fe703cdba3815e9544b854761","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":1110,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":1111,"context_line":"                \u0027trigger_crash_dump\u0027, id)"},{"line_number":1112,"context_line":"        except (exception.InstanceNotReady, exception.InstanceIsLocked) as e:"},{"line_number":1113,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":1114,"context_line":"        except exception.TriggerCrashDumpNotSupported as e:"},{"line_number":1115,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":1116,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"1ac06dbe_9b233aa7","side":"PARENT","line":1113,"range":{"start_line":1112,"start_character":0,"end_line":1113,"end_character":72},"updated":"2016-08-25 17:15:02.000000000","message":"Sorry for my previous review.\nHow about just move this block(line 1112-1113) to line 1109 without separating?\n\nMy concern is current except of HTTPConflict is separated into 1109 and 1114, and I guess someone will try to merge them into a single line and this problem will happen again.\nIf just moving, that could never happen.","commit_id":"e99c3665431462fc32877b71ba876da81cb61f3a"},{"author":{"_account_id":18602,"name":"Gábor Antal","email":"antal@inf.u-szeged.hu","username":"antal"},"change_message_id":"ceb8f1715ee72842f538a45b76cde9c6d2fa800d","unresolved":false,"context_lines":[{"line_number":1109,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":1110,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"},{"line_number":1111,"context_line":"                \u0027trigger_crash_dump\u0027, id)"},{"line_number":1112,"context_line":"        except (exception.InstanceNotReady, exception.InstanceIsLocked) as e:"},{"line_number":1113,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":1114,"context_line":"        except exception.TriggerCrashDumpNotSupported as e:"},{"line_number":1115,"context_line":"            raise webob.exc.HTTPBadRequest(explanation\u003de.format_message())"},{"line_number":1116,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"fa7ab95a_2b13095e","side":"PARENT","line":1113,"range":{"start_line":1112,"start_character":0,"end_line":1113,"end_character":72},"in_reply_to":"1ac06dbe_9b233aa7","updated":"2016-08-25 20:42:37.000000000","message":"Done, that is a really reasonable idea.","commit_id":"e99c3665431462fc32877b71ba876da81cb61f3a"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"47ada700cb58ae6c1f41e0811605e800d24b68e7","unresolved":false,"context_lines":[{"line_number":1171,"context_line":"                            \u0027project_id\u0027: instance.project_id})"},{"line_number":1172,"context_line":"        try:"},{"line_number":1173,"context_line":"            self.compute_api.trigger_crash_dump(context, instance)"},{"line_number":1174,"context_line":"        except (exception.InstanceNotReady, exception.InstanceIsLocked) as e:"},{"line_number":1175,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":1176,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":1177,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa7ab95a_364e45c1","line":1174,"updated":"2016-08-30 11:01:20.000000000","message":"This seem consistent with other places:\nhttps://github.com/openstack/nova/blob/3e15b0cf153a29f97a0315f152a8b539bd8a40de/nova/api/openstack/compute/pause_server.py#L45","commit_id":"2a70e9688151588347664badbac5d0a59ef0f95c"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"17dcc907b6ec53036d398c587fe789c27587081f","unresolved":false,"context_lines":[{"line_number":1171,"context_line":"                            \u0027project_id\u0027: instance.project_id})"},{"line_number":1172,"context_line":"        try:"},{"line_number":1173,"context_line":"            self.compute_api.trigger_crash_dump(context, instance)"},{"line_number":1174,"context_line":"        except (exception.InstanceNotReady, exception.InstanceIsLocked) as e:"},{"line_number":1175,"context_line":"            raise webob.exc.HTTPConflict(explanation\u003de.format_message())"},{"line_number":1176,"context_line":"        except exception.InstanceInvalidState as state_error:"},{"line_number":1177,"context_line":"            common.raise_http_conflict_for_instance_invalid_state(state_error,"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa7ab95a_b7a4f34a","line":1174,"in_reply_to":"fa7ab95a_364e45c1","updated":"2016-08-30 17:25:44.000000000","message":"This broke novaclient functional tests which are relying on the error message we get back, see bug 1618561.","commit_id":"2a70e9688151588347664badbac5d0a59ef0f95c"}]}
