)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"faa0017bbbe7759f18964463427df1551bf4e3f1","unresolved":false,"context_lines":[{"line_number":10,"context_line":"instance is ERROR state, but the instance.task_state"},{"line_number":11,"context_line":"is not None. According to the defination of task_state,"},{"line_number":12,"context_line":"instance task states represent what is happening to"},{"line_number":13,"context_line":"the instance at the current moment. The users are confusion"},{"line_number":14,"context_line":"when they find a instance with vm_state\u003dERROR and task_state\u003d"},{"line_number":15,"context_line":"spawning."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa1b9901_551bf080","line":13,"updated":"2015-08-21 01:29:29.000000000","message":"s/are confusion/will be confused","commit_id":"19bd571756e220c327e465b6600e756f43b815c9"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"a1f4f18a3d4fa210c0cf29ce8e7bc69f122d7184","unresolved":false,"context_lines":[{"line_number":10,"context_line":"instance is ERROR state, but the instance.task_state"},{"line_number":11,"context_line":"is not None. According to the defination of task_state,"},{"line_number":12,"context_line":"instance task states represent what is happening to"},{"line_number":13,"context_line":"the instance at the current moment. The users are confusion"},{"line_number":14,"context_line":"when they find a instance with vm_state\u003dERROR and task_state\u003d"},{"line_number":15,"context_line":"spawning."},{"line_number":16,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":10,"id":"fa1b9901_ea7b3ebc","line":13,"in_reply_to":"fa1b9901_551bf080","updated":"2015-08-21 02:36:32.000000000","message":"Done","commit_id":"19bd571756e220c327e465b6600e756f43b815c9"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"7c6e32a55526f76d522f201dc092991126239716","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When booting instance failed in nova-compute, the"},{"line_number":10,"context_line":"instance is ERROR state, but the instance.task_state"},{"line_number":11,"context_line":"is not None. According to the defination of task_state,"},{"line_number":12,"context_line":"instance task states represent what is happening to"},{"line_number":13,"context_line":"the instance at the current moment. The users will be confused"},{"line_number":14,"context_line":"when they find a instance with vm_state\u003dERROR and task_state\u003d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa1b9901_1a082ed9","line":11,"updated":"2015-08-21 10:50:25.000000000","message":"/defination/definition/","commit_id":"ebe17152eb4a0222aa0c4725db8f43f8400e2d98"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"c51a371fad873640d2a460f4f7d5a3d049b78e56","unresolved":false,"context_lines":[{"line_number":8,"context_line":""},{"line_number":9,"context_line":"When booting instance failed in nova-compute, the"},{"line_number":10,"context_line":"instance is ERROR state, but the instance.task_state"},{"line_number":11,"context_line":"is not None. According to the defination of task_state,"},{"line_number":12,"context_line":"instance task states represent what is happening to"},{"line_number":13,"context_line":"the instance at the current moment. The users will be confused"},{"line_number":14,"context_line":"when they find a instance with vm_state\u003dERROR and task_state\u003d"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":11,"id":"fa1b9901_07c17580","line":11,"in_reply_to":"fa1b9901_1a082ed9","updated":"2015-08-24 01:48:41.000000000","message":"Done","commit_id":"ebe17152eb4a0222aa0c4725db8f43f8400e2d98"}],"nova/compute/manager.py":[{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"847691f5640d1e66b053833bbcffb89ed7b37afc","unresolved":false,"context_lines":[{"line_number":742,"context_line":"        try:"},{"line_number":743,"context_line":"            instance.vm_state \u003d vm_states.ERROR"},{"line_number":744,"context_line":"            if clean_task_state:"},{"line_number":745,"context_line":"                instance.task_state \u003d None"},{"line_number":746,"context_line":"            instance.save()"},{"line_number":747,"context_line":"        except exception.InstanceNotFound:"},{"line_number":748,"context_line":"            LOG.debug(\u0027Instance has been destroyed from under us while \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_da883b25","line":745,"updated":"2015-08-04 10:53:36.000000000","message":"I am wondering whether this makes operator harder to find the root cause of the ERROR , keep the state might let them know\nhow the deploy going and when it failed\n\na reset --active can rescue the status so changes in the patch might do no benefit ...\n\nwe might change the document if it does affect the reader...","commit_id":"00755803536b97f6dd07d30e9d321dcf9d8adf00"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"0ac3c45b8d0d28d3c8fc6f031b57fcb930a7ef52","unresolved":false,"context_lines":[{"line_number":742,"context_line":"        try:"},{"line_number":743,"context_line":"            instance.vm_state \u003d vm_states.ERROR"},{"line_number":744,"context_line":"            if clean_task_state:"},{"line_number":745,"context_line":"                instance.task_state \u003d None"},{"line_number":746,"context_line":"            instance.save()"},{"line_number":747,"context_line":"        except exception.InstanceNotFound:"},{"line_number":748,"context_line":"            LOG.debug(\u0027Instance has been destroyed from under us while \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa1b9901_07454b44","line":745,"in_reply_to":"1a4dcd0f_5a24260c","updated":"2015-08-21 01:33:42.000000000","message":"hi jichenjc, I think this patch will be helpful for non-admin users which can not reset-state. a xxx_ing task_state will block for other operations such as rebuild/migrate/resize right?","commit_id":"00755803536b97f6dd07d30e9d321dcf9d8adf00"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"322736b36ef6bc5ef69f286649ba449e75c119cc","unresolved":false,"context_lines":[{"line_number":742,"context_line":"        try:"},{"line_number":743,"context_line":"            instance.vm_state \u003d vm_states.ERROR"},{"line_number":744,"context_line":"            if clean_task_state:"},{"line_number":745,"context_line":"                instance.task_state \u003d None"},{"line_number":746,"context_line":"            instance.save()"},{"line_number":747,"context_line":"        except exception.InstanceNotFound:"},{"line_number":748,"context_line":"            LOG.debug(\u0027Instance has been destroyed from under us while \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1a4dcd0f_5a24260c","line":745,"in_reply_to":"1a4dcd0f_da883b25","updated":"2015-08-04 12:14:08.000000000","message":"Yeah, keeping task_state have some value for operators.\n\nAs an end user, if booting instance failed, he may want to rebuild the instance, but the rebuilding is blocked by the task_state, he must call the operators to reset_state.\n\nIMO the operators can get error message details from instance fault, if the task_state is reverted to None.","commit_id":"00755803536b97f6dd07d30e9d321dcf9d8adf00"},{"author":{"_account_id":6062,"name":"jichenjc","email":"jichenjc@cn.ibm.com","username":"jichenjc"},"change_message_id":"b223bba4f5494d7da1fcdbb5d47af13ecbb7b365","unresolved":false,"context_lines":[{"line_number":742,"context_line":"        try:"},{"line_number":743,"context_line":"            instance.vm_state \u003d vm_states.ERROR"},{"line_number":744,"context_line":"            if clean_task_state:"},{"line_number":745,"context_line":"                instance.task_state \u003d None"},{"line_number":746,"context_line":"            instance.save()"},{"line_number":747,"context_line":"        except exception.InstanceNotFound:"},{"line_number":748,"context_line":"            LOG.debug(\u0027Instance has been destroyed from under us while \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"fa1b9901_8729b78b","line":745,"in_reply_to":"fa1b9901_07454b44","updated":"2015-08-25 12:37:55.000000000","message":"yes, but if the instance is in ERROR state, the user need to reset the state?? I think it\u0027s not something user need to do","commit_id":"00755803536b97f6dd07d30e9d321dcf9d8adf00"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"1522f40d02147d379d4f2211d189c5edbb4f426a","unresolved":false,"context_lines":[{"line_number":741,"context_line":"        self._update_resource_tracker(context, instance_ref)"},{"line_number":742,"context_line":"        return instance_ref"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"    def _nil_out_instance_obj_host_and_node(self, instance):"},{"line_number":745,"context_line":"        # NOTE(jwcroppe): We don\u0027t do instance.save() here for performance"},{"line_number":746,"context_line":"        # reasons; a call to this is expected to be immediately followed by"},{"line_number":747,"context_line":"        # another call that does instance.save(), thus avoiding two writes"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_88da1a4b","line":744,"updated":"2015-08-28 20:41:05.000000000","message":"Not related to this change really, but we should have just moved this into _set_instance_obj_error_state and triggered it with a boolean like you have for clean_task_state below (clean_host_and_node or something).  It\u0027s pretty gross that there is this note in here about relying on outside calls to save the instance after calling this method, it\u0027s a bit tightly coupled to everything else then.","commit_id":"67f29b196c3bbbde413c9176b83c8b878753a38d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"9938b676c4cb74eb86054761a0f4dc046ab56d0e","unresolved":false,"context_lines":[{"line_number":741,"context_line":"        self._update_resource_tracker(context, instance_ref)"},{"line_number":742,"context_line":"        return instance_ref"},{"line_number":743,"context_line":""},{"line_number":744,"context_line":"    def _nil_out_instance_obj_host_and_node(self, instance):"},{"line_number":745,"context_line":"        # NOTE(jwcroppe): We don\u0027t do instance.save() here for performance"},{"line_number":746,"context_line":"        # reasons; a call to this is expected to be immediately followed by"},{"line_number":747,"context_line":"        # another call that does instance.save(), thus avoiding two writes"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_2880aef6","line":744,"in_reply_to":"da20952f_88da1a4b","updated":"2015-08-28 20:43:52.000000000","message":"Nevermind, there are other cases where _set_instance_obj_error_state aren\u0027t called right after calling this.","commit_id":"67f29b196c3bbbde413c9176b83c8b878753a38d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea253632fea19526f331f8982feab92591725d02","unresolved":false,"context_lines":[{"line_number":750,"context_line":"        instance.node \u003d None"},{"line_number":751,"context_line":""},{"line_number":752,"context_line":"    def _set_instance_obj_error_state(self, context, instance,"},{"line_number":753,"context_line":"                                      clean_task_state\u003dFalse):"},{"line_number":754,"context_line":"        try:"},{"line_number":755,"context_line":"            instance.vm_state \u003d vm_states.ERROR"},{"line_number":756,"context_line":"            if clean_task_state:"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_db3b30ea","line":753,"updated":"2015-08-28 02:14:11.000000000","message":"The reverts_task_state decorator should be used and working - if it\u0027s not, that\u0027s the bug.","commit_id":"67f29b196c3bbbde413c9176b83c8b878753a38d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"93370b8289b5402e6cac58627100bf3dd8340df6","unresolved":false,"context_lines":[{"line_number":1849,"context_line":"            # locked because we could wait in line to build this instance"},{"line_number":1850,"context_line":"            # for a while and we want to make sure that nothing else tries"},{"line_number":1851,"context_line":"            # to do anything with this instance while we wait."},{"line_number":1852,"context_line":"            with self._build_semaphore:"},{"line_number":1853,"context_line":"                self._do_build_and_run_instance(*args, **kwargs)"},{"line_number":1854,"context_line":""},{"line_number":1855,"context_line":"        # NOTE(danms): We spawn here to return the RPC worker thread back to"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_88653ab6","line":1852,"updated":"2015-08-28 20:38:40.000000000","message":"What might be marginally better is checking to see if the returned value from this is build_results.FAILED and if instance.task_state is not None, reset it to None.  That\u0027s not awesome either though.  I\u0027m wondering which approach alaski prefers.","commit_id":"67f29b196c3bbbde413c9176b83c8b878753a38d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"ea253632fea19526f331f8982feab92591725d02","unresolved":false,"context_lines":[{"line_number":1862,"context_line":"                      block_device_mapping, node, limits)"},{"line_number":1863,"context_line":""},{"line_number":1864,"context_line":"    @hooks.add_hook(\u0027build_instance\u0027)"},{"line_number":1865,"context_line":"    @wrap_exception()"},{"line_number":1866,"context_line":"    @reverts_task_state"},{"line_number":1867,"context_line":"    @wrap_instance_event"},{"line_number":1868,"context_line":"    @wrap_instance_fault"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_3b4eec96","line":1865,"updated":"2015-08-28 02:14:11.000000000","message":"The reverts_task_state decorator should be resetting the task_state to None - why isn\u0027t that happening?","commit_id":"67f29b196c3bbbde413c9176b83c8b878753a38d"},{"author":{"_account_id":5441,"name":"Andrew Laski","email":"andrew@lascii.com","username":"alaski"},"change_message_id":"de3b17db1c16a62f2236b4a864c99f233bd6d527","unresolved":false,"context_lines":[{"line_number":1862,"context_line":"                      block_device_mapping, node, limits)"},{"line_number":1863,"context_line":""},{"line_number":1864,"context_line":"    @hooks.add_hook(\u0027build_instance\u0027)"},{"line_number":1865,"context_line":"    @wrap_exception()"},{"line_number":1866,"context_line":"    @reverts_task_state"},{"line_number":1867,"context_line":"    @wrap_instance_event"},{"line_number":1868,"context_line":"    @wrap_instance_fault"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_6b76a0a5","line":1865,"in_reply_to":"da20952f_08412a38","updated":"2015-08-28 21:03:12.000000000","message":"The return statuses are for the hook.  It\u0027s a problem that the reverts_task_state decorator and the hook here aren\u0027t cooperating, but the new argument below seems the cleanest way forward for now.","commit_id":"67f29b196c3bbbde413c9176b83c8b878753a38d"},{"author":{"_account_id":8276,"name":"kiwik","email":"chenrui.momo@gmail.com","username":"kiwik"},"change_message_id":"d4c4e97ee3f7e17c6753c261a6c5cee3acb1e60b","unresolved":false,"context_lines":[{"line_number":1862,"context_line":"                      block_device_mapping, node, limits)"},{"line_number":1863,"context_line":""},{"line_number":1864,"context_line":"    @hooks.add_hook(\u0027build_instance\u0027)"},{"line_number":1865,"context_line":"    @wrap_exception()"},{"line_number":1866,"context_line":"    @reverts_task_state"},{"line_number":1867,"context_line":"    @wrap_instance_event"},{"line_number":1868,"context_line":"    @wrap_instance_fault"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_a3164a53","line":1865,"in_reply_to":"da20952f_3b4eec96","updated":"2015-08-28 07:07:13.000000000","message":"All the exceptions are caught in _do_build_and_run_instance(), like Eli say, @reverts_task_state have no chance to reset task_state, so you means I should remove the decorator, Matt?","commit_id":"67f29b196c3bbbde413c9176b83c8b878753a38d"},{"author":{"_account_id":12175,"name":"Eli Qiao","email":"qiaoliyong@gmail.com","username":"Eli"},"change_message_id":"b484f948e2f27324e1f2a136b24ae9090018ba9a","unresolved":false,"context_lines":[{"line_number":1862,"context_line":"                      block_device_mapping, node, limits)"},{"line_number":1863,"context_line":""},{"line_number":1864,"context_line":"    @hooks.add_hook(\u0027build_instance\u0027)"},{"line_number":1865,"context_line":"    @wrap_exception()"},{"line_number":1866,"context_line":"    @reverts_task_state"},{"line_number":1867,"context_line":"    @wrap_instance_event"},{"line_number":1868,"context_line":"    @wrap_instance_fault"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_0c064cce","line":1865,"in_reply_to":"da20952f_3b4eec96","updated":"2015-08-28 03:46:21.000000000","message":"hi Matt,\nas you can see in line 1919, _do_build_and_run_instance returns with build_results.FAILED instead of raise Exception, so I don\u0027t think reverts_task_state catch any exception.\n\nany thought?","commit_id":"67f29b196c3bbbde413c9176b83c8b878753a38d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"c70f5ea2a59a0b7ffb367eeff74fccd6e5ab6d27","unresolved":false,"context_lines":[{"line_number":1862,"context_line":"                      block_device_mapping, node, limits)"},{"line_number":1863,"context_line":""},{"line_number":1864,"context_line":"    @hooks.add_hook(\u0027build_instance\u0027)"},{"line_number":1865,"context_line":"    @wrap_exception()"},{"line_number":1866,"context_line":"    @reverts_task_state"},{"line_number":1867,"context_line":"    @wrap_instance_event"},{"line_number":1868,"context_line":"    @wrap_instance_fault"}],"source_content_type":"text/x-python","patch_set":13,"id":"da20952f_08412a38","line":1865,"in_reply_to":"da20952f_a3164a53","updated":"2015-08-28 20:34:31.000000000","message":"Ah good point. Don\u0027t remove the @reverts_task_state decorator.  I\u0027m not crazy about the kwarg to _set_instance_obj_error_state either, but will have to think about whether or not I have a better alternative.","commit_id":"67f29b196c3bbbde413c9176b83c8b878753a38d"}]}
