)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d202e0e2b0e4c58515d978647ecfcb91784346f1","unresolved":false,"context_lines":[{"line_number":13,"context_line":"This includes disk information for the active domains."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"However, the periodic task can race with instances being deleted"},{"line_number":16,"context_line":"concurently and the hypervisor can report the domain but the driver"},{"line_number":17,"context_line":"has already deleted the backing files as part of deleting the"},{"line_number":18,"context_line":"instance, and this leads to failures when running \"qemu-img info\""},{"line_number":19,"context_line":"on the disk path which is now gone."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df7087c5_f1b750f4","line":16,"range":{"start_line":16,"start_character":0,"end_line":16,"end_character":11},"updated":"2018-03-14 20:52:23.000000000","message":"concurrently","commit_id":"396811c92f38c174d25354f63845c98fbec70ab2"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d202e0e2b0e4c58515d978647ecfcb91784346f1","unresolved":false,"context_lines":[{"line_number":23,"context_line":"This change simply tries to detect the specific failure from"},{"line_number":24,"context_line":"\u0027qemu-img info\u0027 and translate it into a DiskNotFound exception which"},{"line_number":25,"context_line":"the driver can handle. In this case, if the associated instance is"},{"line_number":26,"context_line":"undergoinga task state transition such as moving to another host or"},{"line_number":27,"context_line":"being deleted, we log a message and continue. If the instance is in"},{"line_number":28,"context_line":"steady state (task_state is not set), then we consider it a failure"},{"line_number":29,"context_line":"and re-raise it up."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"df7087c5_71c34058","line":26,"range":{"start_line":26,"start_character":0,"end_line":26,"end_character":11},"updated":"2018-03-14 20:52:23.000000000","message":"undergoing a","commit_id":"396811c92f38c174d25354f63845c98fbec70ab2"}],"nova/tests/unit/virt/test_images.py":[{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"dcdd3fc21fad99caf9c9153d96d3cd418f2fcacc","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                  \"\u0027/opt/stack/data/nova/instances/some-uuid/disk\u0027: \""},{"line_number":78,"context_line":"                  \"Could not open \u0027/opt/stack/data/nova/instances/some-uuid/\""},{"line_number":79,"context_line":"                  \"disk\u0027: No such file or directory\\n\")"},{"line_number":80,"context_line":"        mocked_execute.side_effect \u003d \\"},{"line_number":81,"context_line":"            processutils.ProcessExecutionError("},{"line_number":82,"context_line":"                exit_code\u003d1, stderr\u003dstderr)"},{"line_number":83,"context_line":"        self.assertRaises(exception.DiskNotFound, images.qemu_img_info, path)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_917934c9","line":80,"range":{"start_line":80,"start_character":37,"end_line":80,"end_character":38},"updated":"2018-03-14 21:09:35.000000000","message":"Ew. I know this is a copy/paste, but...","commit_id":"2fc52f4c6e2fff5f2638adf4386b613075b021d0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93d2b2685df38bd11f5e40ee2dc81018363851dc","unresolved":false,"context_lines":[{"line_number":77,"context_line":"                  \"\u0027/opt/stack/data/nova/instances/some-uuid/disk\u0027: \""},{"line_number":78,"context_line":"                  \"Could not open \u0027/opt/stack/data/nova/instances/some-uuid/\""},{"line_number":79,"context_line":"                  \"disk\u0027: No such file or directory\\n\")"},{"line_number":80,"context_line":"        mocked_execute.side_effect \u003d \\"},{"line_number":81,"context_line":"            processutils.ProcessExecutionError("},{"line_number":82,"context_line":"                exit_code\u003d1, stderr\u003dstderr)"},{"line_number":83,"context_line":"        self.assertRaises(exception.DiskNotFound, images.qemu_img_info, path)"}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_1d0dfce6","line":80,"range":{"start_line":80,"start_character":37,"end_line":80,"end_character":38},"in_reply_to":"df7087c5_917934c9","updated":"2018-03-16 15:53:46.000000000","message":"And it\u0027s all over the place.","commit_id":"2fc52f4c6e2fff5f2638adf4386b613075b021d0"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"35ea3526d920c390a90603683373517a877f147a","unresolved":false,"context_lines":[{"line_number":78,"context_line":"                  \"Could not open \u0027/opt/stack/data/nova/instances/some-uuid/\""},{"line_number":79,"context_line":"                  \"disk\u0027: No such file or directory\\n\")"},{"line_number":80,"context_line":"        mocked_execute.side_effect \u003d ("},{"line_number":81,"context_line":"            processutils.ProcessExecutionError("},{"line_number":82,"context_line":"                exit_code\u003d1, stderr\u003dstderr))"},{"line_number":83,"context_line":"        self.assertRaises(exception.DiskNotFound, images.qemu_img_info, path)"},{"line_number":84,"context_line":"        exists.assert_called_once_with(path)"}],"source_content_type":"text/x-python","patch_set":3,"id":"df7087c5_39cfafb1","line":81,"range":{"start_line":81,"start_character":0,"end_line":81,"end_character":47},"updated":"2018-03-16 19:13:18.000000000","message":"you *could* just put this on the previous line and nix the extra parens.  (I checked - it wouldn\u0027t exceed 80c.)","commit_id":"57410b807b655a89592b6e219fab561030b4d80d"}],"nova/virt/libvirt/driver.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d9f061498945a6c1973630bae6c91a5cf342a181","unresolved":false,"context_lines":[{"line_number":8006,"context_line":"                                      \u0027task_state\u0027: inst.task_state},"},{"line_number":8007,"context_line":"                                     instance\u003dinst)"},{"line_number":8008,"context_line":"                            ctx.reraise \u003d False"},{"line_number":8009,"context_line":"                    else:"},{"line_number":8010,"context_line":"                        raise Exception(\u0027guest: %s; local_instances: %s\u0027 %"},{"line_number":8011,"context_line":"                                        (guest, local_instances))"},{"line_number":8012,"context_line":""},{"line_number":8013,"context_line":"            # NOTE(gtt116): give other tasks a chance."},{"line_number":8014,"context_line":"            greenthread.sleep(0)"}],"source_content_type":"text/x-python","patch_set":1,"id":"df7087c5_118d2431","line":8011,"range":{"start_line":8009,"start_character":20,"end_line":8011,"end_character":65},"updated":"2018-03-14 20:53:10.000000000","message":"forgot to remove this debug","commit_id":"396811c92f38c174d25354f63845c98fbec70ab2"},{"author":{"_account_id":14070,"name":"Eric Fried","email":"openstack@fried.cc","username":"efried"},"change_message_id":"dcdd3fc21fad99caf9c9153d96d3cd418f2fcacc","unresolved":false,"context_lines":[{"line_number":7990,"context_line":"                            \u0027Error: %(error)s\u0027,"},{"line_number":7991,"context_line":"                            {\u0027i_name\u0027: guest.name, \u0027error\u0027: e})"},{"line_number":7992,"context_line":"            except exception.DiskNotFound:"},{"line_number":7993,"context_line":"                with excutils.save_and_reraise_exception() as ctx:"},{"line_number":7994,"context_line":"                    # If the instance is undergoing a task state transition,"},{"line_number":7995,"context_line":"                    # like moving to another host or is being deleted, we"},{"line_number":7996,"context_line":"                    # should ignore this instance and move on."}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_918b74c1","line":7993,"range":{"start_line":7993,"start_character":62,"end_line":7993,"end_character":65},"updated":"2018-03-14 21:09:35.000000000","message":"Overwrites admin context variable set on L7921.  Doesn\u0027t matter atm because not used again, but better to use a different name.","commit_id":"2fc52f4c6e2fff5f2638adf4386b613075b021d0"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93d2b2685df38bd11f5e40ee2dc81018363851dc","unresolved":false,"context_lines":[{"line_number":7990,"context_line":"                            \u0027Error: %(error)s\u0027,"},{"line_number":7991,"context_line":"                            {\u0027i_name\u0027: guest.name, \u0027error\u0027: e})"},{"line_number":7992,"context_line":"            except exception.DiskNotFound:"},{"line_number":7993,"context_line":"                with excutils.save_and_reraise_exception() as ctx:"},{"line_number":7994,"context_line":"                    # If the instance is undergoing a task state transition,"},{"line_number":7995,"context_line":"                    # like moving to another host or is being deleted, we"},{"line_number":7996,"context_line":"                    # should ignore this instance and move on."}],"source_content_type":"text/x-python","patch_set":2,"id":"df7087c5_3d29e035","line":7993,"range":{"start_line":7993,"start_character":62,"end_line":7993,"end_character":65},"in_reply_to":"df7087c5_918b74c1","updated":"2018-03-16 15:53:46.000000000","message":"Yeah good call, will update.","commit_id":"2fc52f4c6e2fff5f2638adf4386b613075b021d0"}]}
