)]}'
{"nova/conductor/manager.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"bbf6145c1ff9a8ecef5c14b90ede5b34cc31bc7c","unresolved":false,"context_lines":[{"line_number":1809,"context_line":"        task.execute()"},{"line_number":1810,"context_line":""},{"line_number":1811,"context_line":"    @targets_cell"},{"line_number":1812,"context_line":"    @wrap_instance_event(prefix\u003d\u0027conductor\u0027)"},{"line_number":1813,"context_line":"    def revert_snapshot_based_resize(self, context, instance, migration):"},{"line_number":1814,"context_line":"        \"\"\"Executes the RevertResizeTask"},{"line_number":1815,"context_line":""}],"source_content_type":"text/x-python","patch_set":51,"id":"3fa7e38b_074c1f3d","line":1812,"updated":"2019-11-20 18:57:52.000000000","message":"wrap_instance_event will get an InstanceActionNotFound exception if revert_snapshot_based_resize exits cleanly because the instance and it\u0027s action record in the target cell will be hard-deleted. So we likely have to avoid using the EventReporter context manager interface unless we do it with the source cell context and instance but we still need to make sure we\u0027re recording the action events in the target cell in case it fails.","commit_id":"686dab5467aa5daf8ec13b00e40ba944409c39df"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"2bd40e9e58f740c7cd49d5a511ff988cc2534eed","unresolved":false,"context_lines":[{"line_number":1880,"context_line":"    # FIXME(mriedem): Upon successful completion of RevertResizeTask the"},{"line_number":1881,"context_line":"    # instance is hard-deleted, along with its instance action record(s), from"},{"line_number":1882,"context_line":"    # the target cell database so wrap_instance_event hits"},{"line_number":1883,"context_line":"    # InstanceActionNotFound on __exit__."},{"line_number":1884,"context_line":"    @wrap_instance_event(prefix\u003d\u0027conductor\u0027)"},{"line_number":1885,"context_line":"    def revert_snapshot_based_resize(self, context, instance, migration):"},{"line_number":1886,"context_line":"        \"\"\"Executes the RevertResizeTask"}],"source_content_type":"text/x-python","patch_set":56,"id":"3fa7e38b_7ac196fd","line":1883,"updated":"2019-12-16 08:45:49.000000000","message":"Is there a follow up patch fixing this?\n\nI guess the solution could be to record the events from the conductor task. There we have enough context about which cell we need to record the event.","commit_id":"74d18c412f37859ed497232834f0e9dd195c28d3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1ca1621605ff82eda7572aa1faec950399bd1bd3","unresolved":false,"context_lines":[{"line_number":1880,"context_line":"    # FIXME(mriedem): Upon successful completion of RevertResizeTask the"},{"line_number":1881,"context_line":"    # instance is hard-deleted, along with its instance action record(s), from"},{"line_number":1882,"context_line":"    # the target cell database so wrap_instance_event hits"},{"line_number":1883,"context_line":"    # InstanceActionNotFound on __exit__."},{"line_number":1884,"context_line":"    @wrap_instance_event(prefix\u003d\u0027conductor\u0027)"},{"line_number":1885,"context_line":"    def revert_snapshot_based_resize(self, context, instance, migration):"},{"line_number":1886,"context_line":"        \"\"\"Executes the RevertResizeTask"}],"source_content_type":"text/x-python","patch_set":56,"id":"3fa7e38b_3f1f89b9","line":1883,"in_reply_to":"3fa7e38b_1f396d3f","updated":"2019-12-16 14:17:20.000000000","message":"We\u0027ll have to do it manually I think:\n\nhttps://review.opendev.org/#/c/638048/56/nova/tests/functional/test_cross_cell_migrate.py@595","commit_id":"74d18c412f37859ed497232834f0e9dd195c28d3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"0a18d18f83088cd6d424b7794161f1f6eac075e8","unresolved":false,"context_lines":[{"line_number":1880,"context_line":"    # FIXME(mriedem): Upon successful completion of RevertResizeTask the"},{"line_number":1881,"context_line":"    # instance is hard-deleted, along with its instance action record(s), from"},{"line_number":1882,"context_line":"    # the target cell database so wrap_instance_event hits"},{"line_number":1883,"context_line":"    # InstanceActionNotFound on __exit__."},{"line_number":1884,"context_line":"    @wrap_instance_event(prefix\u003d\u0027conductor\u0027)"},{"line_number":1885,"context_line":"    def revert_snapshot_based_resize(self, context, instance, migration):"},{"line_number":1886,"context_line":"        \"\"\"Executes the RevertResizeTask"}],"source_content_type":"text/x-python","patch_set":56,"id":"3fa7e38b_70e68eea","line":1883,"in_reply_to":"3fa7e38b_3f1f89b9","updated":"2019-12-16 16:25:48.000000000","message":"Done: https://review.opendev.org/699238","commit_id":"74d18c412f37859ed497232834f0e9dd195c28d3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"69faa2caa82128ce661ac80ec02ddaa752e0583a","unresolved":false,"context_lines":[{"line_number":1880,"context_line":"    # FIXME(mriedem): Upon successful completion of RevertResizeTask the"},{"line_number":1881,"context_line":"    # instance is hard-deleted, along with its instance action record(s), from"},{"line_number":1882,"context_line":"    # the target cell database so wrap_instance_event hits"},{"line_number":1883,"context_line":"    # InstanceActionNotFound on __exit__."},{"line_number":1884,"context_line":"    @wrap_instance_event(prefix\u003d\u0027conductor\u0027)"},{"line_number":1885,"context_line":"    def revert_snapshot_based_resize(self, context, instance, migration):"},{"line_number":1886,"context_line":"        \"\"\"Executes the RevertResizeTask"}],"source_content_type":"text/x-python","patch_set":56,"id":"3fa7e38b_4a35e5f5","line":1883,"in_reply_to":"3fa7e38b_3f1f89b9","updated":"2019-12-16 15:10:54.000000000","message":"OK. Thanks.","commit_id":"74d18c412f37859ed497232834f0e9dd195c28d3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"e04df74f6258f457367b6af9637a6e5993cdedca","unresolved":false,"context_lines":[{"line_number":1880,"context_line":"    # FIXME(mriedem): Upon successful completion of RevertResizeTask the"},{"line_number":1881,"context_line":"    # instance is hard-deleted, along with its instance action record(s), from"},{"line_number":1882,"context_line":"    # the target cell database so wrap_instance_event hits"},{"line_number":1883,"context_line":"    # InstanceActionNotFound on __exit__."},{"line_number":1884,"context_line":"    @wrap_instance_event(prefix\u003d\u0027conductor\u0027)"},{"line_number":1885,"context_line":"    def revert_snapshot_based_resize(self, context, instance, migration):"},{"line_number":1886,"context_line":"        \"\"\"Executes the RevertResizeTask"}],"source_content_type":"text/x-python","patch_set":56,"id":"3fa7e38b_f53a77c3","line":1883,"in_reply_to":"3fa7e38b_7ac196fd","updated":"2019-12-16 08:59:49.000000000","message":"on a related note as this logs a stack trace for every successful revert functional test case it increases the chance to hit the long running stestr bug :/","commit_id":"74d18c412f37859ed497232834f0e9dd195c28d3"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"eb00afe394bdbec75bc34269555289a8a05e80d4","unresolved":false,"context_lines":[{"line_number":1880,"context_line":"    # FIXME(mriedem): Upon successful completion of RevertResizeTask the"},{"line_number":1881,"context_line":"    # instance is hard-deleted, along with its instance action record(s), from"},{"line_number":1882,"context_line":"    # the target cell database so wrap_instance_event hits"},{"line_number":1883,"context_line":"    # InstanceActionNotFound on __exit__."},{"line_number":1884,"context_line":"    @wrap_instance_event(prefix\u003d\u0027conductor\u0027)"},{"line_number":1885,"context_line":"    def revert_snapshot_based_resize(self, context, instance, migration):"},{"line_number":1886,"context_line":"        \"\"\"Executes the RevertResizeTask"}],"source_content_type":"text/x-python","patch_set":56,"id":"3fa7e38b_1f396d3f","line":1883,"in_reply_to":"3fa7e38b_bfa059a6","updated":"2019-12-16 14:15:39.000000000","message":"Yeah a) seems the cleanest. My followup question would be that then who will set the action to succeeded state when the revert succeeds?","commit_id":"74d18c412f37859ed497232834f0e9dd195c28d3"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"196e2718f3f48257cb1a64443712e43af63bb1fa","unresolved":false,"context_lines":[{"line_number":1880,"context_line":"    # FIXME(mriedem): Upon successful completion of RevertResizeTask the"},{"line_number":1881,"context_line":"    # instance is hard-deleted, along with its instance action record(s), from"},{"line_number":1882,"context_line":"    # the target cell database so wrap_instance_event hits"},{"line_number":1883,"context_line":"    # InstanceActionNotFound on __exit__."},{"line_number":1884,"context_line":"    @wrap_instance_event(prefix\u003d\u0027conductor\u0027)"},{"line_number":1885,"context_line":"    def revert_snapshot_based_resize(self, context, instance, migration):"},{"line_number":1886,"context_line":"        \"\"\"Executes the RevertResizeTask"}],"source_content_type":"text/x-python","patch_set":56,"id":"3fa7e38b_bfa059a6","line":1883,"in_reply_to":"3fa7e38b_f53a77c3","updated":"2019-12-16 14:04:24.000000000","message":"I need to work on it. A couple of thoughts:\n\na) I could pass a kwarg to wrap_instance_event telling it to noop on InstanceActionNotFound on __exit__ when it\u0027s expected.\n\nb) I could try to use the EventReporter directly but I\u0027d likely have the same issue.\n\nc) I could avoid the EventReporter context manager altogether and just manually create the action event on __enter__ but make __exit__ conditional on whether or not the instance still exists.\n\nOf those 3 options, (a) is likely the cleanest.","commit_id":"74d18c412f37859ed497232834f0e9dd195c28d3"}]}
