)]}'
{"mistral/engine/post_tx_queue.py":[{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"079a78a35c16b31d7e61723eda616d34f39e0224","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            except Exception as e:"},{"line_number":121,"context_line":"                LOG.error(\"Failed to run transactional engine operation.\")"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"                raise e"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"def _process_non_tx_queue(queue):"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_2dd9d37f","line":123,"range":{"start_line":123,"start_character":16,"end_line":123,"end_character":23},"updated":"2018-11-09 06:47:27.000000000","message":"the stacktrace gets lost this way. \u0027e\u0027 should be removed.","commit_id":"2ee4e980c0cf7a7f324ebdd6cf65a527a870b327"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"9d0ed5bdf3af417dd5f53ee60e826dcfdef7ee37","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            except Exception as e:"},{"line_number":121,"context_line":"                LOG.error(\"Failed to run transactional engine operation.\")"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"                raise e"},{"line_number":124,"context_line":""},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"def _process_non_tx_queue(queue):"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_ed88bb21","line":123,"range":{"start_line":123,"start_character":16,"end_line":123,"end_character":23},"in_reply_to":"3f79a3b5_2dd9d37f","updated":"2018-11-09 06:59:13.000000000","message":"Done","commit_id":"2ee4e980c0cf7a7f324ebdd6cf65a527a870b327"},{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"079a78a35c16b31d7e61723eda616d34f39e0224","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    for func, args in queue:"},{"line_number":128,"context_line":"        try:"},{"line_number":129,"context_line":"            func(*args)"},{"line_number":130,"context_line":"        except Exception:"},{"line_number":131,"context_line":"            LOG.error(\"Failed to run non-transactional engine operation.\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_cdcdbfba","line":130,"range":{"start_line":130,"start_character":7,"end_line":130,"end_character":24},"updated":"2018-11-09 06:47:27.000000000","message":"the exception should be swallowed here?","commit_id":"2ee4e980c0cf7a7f324ebdd6cf65a527a870b327"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"9d0ed5bdf3af417dd5f53ee60e826dcfdef7ee37","unresolved":false,"context_lines":[{"line_number":127,"context_line":"    for func, args in queue:"},{"line_number":128,"context_line":"        try:"},{"line_number":129,"context_line":"            func(*args)"},{"line_number":130,"context_line":"        except Exception:"},{"line_number":131,"context_line":"            LOG.error(\"Failed to run non-transactional engine operation.\")"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_6dc6eb6b","line":130,"range":{"start_line":130,"start_character":7,"end_line":130,"end_character":24},"in_reply_to":"3f79a3b5_cdcdbfba","updated":"2018-11-09 06:59:13.000000000","message":"Ooh, yes, LOG.error should be replaced with LOG.exception.\n\nDone","commit_id":"2ee4e980c0cf7a7f324ebdd6cf65a527a870b327"}],"mistral/engine/task_handler.py":[{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"079a78a35c16b31d7e61723eda616d34f39e0224","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        task_ex.name"},{"line_number":297,"context_line":"    )"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    def _schedule_if_needed(t_ex_id):"},{"line_number":300,"context_line":"        # NOTE(rakhmerov): we need to minimize the number of delayed calls"},{"line_number":301,"context_line":"        # that refresh state of \"join\" tasks. We\u0027ll check if corresponding"},{"line_number":302,"context_line":"        # calls are already scheduled. Note that we must ignore delayed calls"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_ed351ba8","line":299,"range":{"start_line":299,"start_character":4,"end_line":299,"end_character":37},"updated":"2018-11-09 06:47:27.000000000","message":"it would be so good to get rid of these issues completely by serializing events that can happen to an execution","commit_id":"2ee4e980c0cf7a7f324ebdd6cf65a527a870b327"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"9d0ed5bdf3af417dd5f53ee60e826dcfdef7ee37","unresolved":false,"context_lines":[{"line_number":296,"context_line":"        task_ex.name"},{"line_number":297,"context_line":"    )"},{"line_number":298,"context_line":""},{"line_number":299,"context_line":"    def _schedule_if_needed(t_ex_id):"},{"line_number":300,"context_line":"        # NOTE(rakhmerov): we need to minimize the number of delayed calls"},{"line_number":301,"context_line":"        # that refresh state of \"join\" tasks. We\u0027ll check if corresponding"},{"line_number":302,"context_line":"        # calls are already scheduled. Note that we must ignore delayed calls"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_8d902743","line":299,"range":{"start_line":299,"start_character":4,"end_line":299,"end_character":37},"in_reply_to":"3f79a3b5_ed351ba8","updated":"2018-11-09 06:59:13.000000000","message":"Yes, I see where you\u0027re going to. This will be probably our next big step.","commit_id":"2ee4e980c0cf7a7f324ebdd6cf65a527a870b327"},{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"079a78a35c16b31d7e61723eda616d34f39e0224","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        else:"},{"line_number":432,"context_line":"            # Must never get here."},{"line_number":433,"context_line":"            raise RuntimeError("},{"line_number":434,"context_line":"                \u0027Unexpected logical task state [task_ex_id\u003d%s, \u0027"},{"line_number":435,"context_line":"                \u0027task_name\u003d%s, state\u003d%s]\u0027 %"},{"line_number":436,"context_line":"                (task_ex_id, task_ex.name, state)"},{"line_number":437,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_2d47931d","line":434,"range":{"start_line":434,"start_character":28,"end_line":434,"end_character":35},"updated":"2018-11-09 06:47:27.000000000","message":"what does logical mean here?","commit_id":"2ee4e980c0cf7a7f324ebdd6cf65a527a870b327"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"9d0ed5bdf3af417dd5f53ee60e826dcfdef7ee37","unresolved":false,"context_lines":[{"line_number":431,"context_line":"        else:"},{"line_number":432,"context_line":"            # Must never get here."},{"line_number":433,"context_line":"            raise RuntimeError("},{"line_number":434,"context_line":"                \u0027Unexpected logical task state [task_ex_id\u003d%s, \u0027"},{"line_number":435,"context_line":"                \u0027task_name\u003d%s, state\u003d%s]\u0027 %"},{"line_number":436,"context_line":"                (task_ex_id, task_ex.name, state)"},{"line_number":437,"context_line":"            )"}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_6dd10bca","line":434,"range":{"start_line":434,"start_character":28,"end_line":434,"end_character":35},"in_reply_to":"3f79a3b5_2d47931d","updated":"2018-11-09 06:59:13.000000000","message":"Well, it chose this term originally to show that there are two states of the task: actual state (state task_ex obj) and the state that the task is supposed to have according to the states of other tasks in the workflow. I called the latter \"logical\".","commit_id":"2ee4e980c0cf7a7f324ebdd6cf65a527a870b327"}],"mistral/engine/workflows.py":[{"author":{"_account_id":21970,"name":"Andras Kovi","email":"akovi@nokia.com","username":"andras.kovi"},"change_message_id":"079a78a35c16b31d7e61723eda616d34f39e0224","unresolved":false,"context_lines":[{"line_number":572,"context_line":"                \" if a workflow is not in SUCCESS, ERROR or CANCELLED state.\""},{"line_number":573,"context_line":"            )"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"        # Register an asynchronous command to send the result to the parent"},{"line_number":576,"context_line":"        # workflow outside of the main DB transaction."},{"line_number":577,"context_line":"        def _send_result():"},{"line_number":578,"context_line":"            rpc.get_engine_client().on_action_complete("}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_6d182b1e","line":575,"range":{"start_line":575,"start_character":22,"end_line":575,"end_character":42},"updated":"2018-11-09 06:47:27.000000000","message":"One thing I don\u0027t understand is how is this an asynchronous call? I think this will block the post_tx_queue execution as long as the  on_action_complete is not processed completely. Or maybe I have a misunderstanding of asynchronous here.","commit_id":"2ee4e980c0cf7a7f324ebdd6cf65a527a870b327"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"9d0ed5bdf3af417dd5f53ee60e826dcfdef7ee37","unresolved":false,"context_lines":[{"line_number":572,"context_line":"                \" if a workflow is not in SUCCESS, ERROR or CANCELLED state.\""},{"line_number":573,"context_line":"            )"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"        # Register an asynchronous command to send the result to the parent"},{"line_number":576,"context_line":"        # workflow outside of the main DB transaction."},{"line_number":577,"context_line":"        def _send_result():"},{"line_number":578,"context_line":"            rpc.get_engine_client().on_action_complete("}],"source_content_type":"text/x-python","patch_set":14,"id":"3f79a3b5_4dff6f34","line":575,"range":{"start_line":575,"start_character":22,"end_line":575,"end_character":42},"in_reply_to":"3f79a3b5_6d182b1e","updated":"2018-11-09 06:59:13.000000000","message":"Well, maybe it\u0027s a little subtle here, yes. But basically I meant that it will run in a new thread.","commit_id":"2ee4e980c0cf7a7f324ebdd6cf65a527a870b327"}]}
