)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"79d3b300d46459a123fcb54118d2e45fffb37006","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Vitalii Solodilov \u003cmcdkr@yandex.ru\u003e"},{"line_number":5,"context_line":"CommitDate: 2018-07-30 10:18:36 +0400"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Force fail a join task if upstream task was failed"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"* Added new parameter for task complete function"},{"line_number":10,"context_line":"* Added set of tests which cover join task and"},{"line_number":11,"context_line":"  transitions with expressions"},{"line_number":12,"context_line":"* Minor docs improvements"},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Change-Id: I50f840b7fafbbbedf1db7bebd9f37a65de255d26"},{"line_number":15,"context_line":"Signed-off-by: Vitalii Solodilov \u003cmcdkr@yandex.ru\u003e"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"5f7c97a3_5ea185f5","line":12,"range":{"start_line":7,"start_character":0,"end_line":12,"end_character":25},"updated":"2018-07-30 09:49:49.000000000","message":"I was able to understand the goal of this patch only when I was looking at the code changes. Please add more info in the commit message about what problem you\u0027re addressing. In fact, the problem you\u0027re trying to solve is not mentioned in the commit message at all, which is \"in case if join fails because some if its preconditions can\u0027t be satisfied, we need to skip running task policies as we do for normal completion. For example, it doesn\u0027t make sense to retry this task, it will always be failing.\"\n\nBtw, are you sure that we need to skip all policies? May be only \"retry\" policy? For example, \"wait-after\" policy still makes sense to me even in this case. I assume there may be others added later that will be OK to.","commit_id":"7a40c507331cd1c1499795e235d73cb8079b2a42"}],"doc/source/user/wf_lang_v2.rst":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"79d3b300d46459a123fcb54118d2e45fffb37006","unresolved":false,"context_lines":[{"line_number":606,"context_line":""},{"line_number":607,"context_line":".. code-block:: mistral"},{"line_number":608,"context_line":""},{"line_number":609,"context_line":"    version: \u00272.0\u0027"},{"line_number":610,"context_line":"    wf:"},{"line_number":611,"context_line":"      type: direct"},{"line_number":612,"context_line":"      tasks:"},{"line_number":613,"context_line":"        task1:"},{"line_number":614,"context_line":"          on-success:"},{"line_number":615,"context_line":"            - join_task: \u003c% false %\u003e"},{"line_number":616,"context_line":"        task2:"},{"line_number":617,"context_line":"          on-success:"},{"line_number":618,"context_line":"            - join_task: \u003c% true %\u003e"},{"line_number":619,"context_line":"        join_task:"},{"line_number":620,"context_line":"          join: all"},{"line_number":621,"context_line":""},{"line_number":622,"context_line":"Both edges (task1 and task2) are considered preconditions for `join_task`."},{"line_number":623,"context_line":"`join_task` will be in WAITING state as long as both transitions are still"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_fe3bb1c5","line":620,"range":{"start_line":609,"start_character":4,"end_line":620,"end_character":19},"updated":"2018-07-30 09:49:49.000000000","message":"Please make the style of these examples consistent with others in the document. Add a blank line after \"version: \u00272.0\u0027\", \"type: direct\" and each task definition.","commit_id":"7a40c507331cd1c1499795e235d73cb8079b2a42"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"79d3b300d46459a123fcb54118d2e45fffb37006","unresolved":false,"context_lines":[{"line_number":623,"context_line":"`join_task` will be in WAITING state as long as both transitions are still"},{"line_number":624,"context_line":"possible and not evaluated yet."},{"line_number":625,"context_line":"join_task will be in ERROR state if at least one of those routes will become impossible."},{"line_number":626,"context_line":"So workflow above will be failed. But the following workflow will finish"},{"line_number":627,"context_line":"successfully. Because at least one transition must be evaluated as `true`."},{"line_number":628,"context_line":""},{"line_number":629,"context_line":".. code-block:: mistral"}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_be13f959","line":626,"range":{"start_line":626,"start_character":18,"end_line":626,"end_character":32},"updated":"2018-07-30 09:49:49.000000000","message":"-\u003e will fail","commit_id":"7a40c507331cd1c1499795e235d73cb8079b2a42"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"79d3b300d46459a123fcb54118d2e45fffb37006","unresolved":false,"context_lines":[{"line_number":624,"context_line":"possible and not evaluated yet."},{"line_number":625,"context_line":"join_task will be in ERROR state if at least one of those routes will become impossible."},{"line_number":626,"context_line":"So workflow above will be failed. But the following workflow will finish"},{"line_number":627,"context_line":"successfully. Because at least one transition must be evaluated as `true`."},{"line_number":628,"context_line":""},{"line_number":629,"context_line":".. code-block:: mistral"},{"line_number":630,"context_line":""}],"source_content_type":"text/x-rst","patch_set":2,"id":"5f7c97a3_9e287d85","line":627,"range":{"start_line":627,"start_character":64,"end_line":627,"end_character":66},"updated":"2018-07-30 09:49:49.000000000","message":"-\u003e to","commit_id":"7a40c507331cd1c1499795e235d73cb8079b2a42"}],"mistral/engine/task_handler.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"79d3b300d46459a123fcb54118d2e45fffb37006","unresolved":false,"context_lines":[{"line_number":231,"context_line":"        return"},{"line_number":232,"context_line":""},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"def complete_task(task_ex, state, state_info, force\u003dFalse):"},{"line_number":235,"context_line":"    wf_spec \u003d spec_parser.get_workflow_spec_by_execution_id("},{"line_number":236,"context_line":"        task_ex.workflow_execution_id"},{"line_number":237,"context_line":"    )"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_a331a20c","line":234,"range":{"start_line":234,"start_character":46,"end_line":234,"end_character":51},"updated":"2018-07-30 09:49:49.000000000","message":"Honestly, I don\u0027t like the name of this parameter. May be make it more specific? \"skip_policies\"","commit_id":"7a40c507331cd1c1499795e235d73cb8079b2a42"}],"mistral/engine/tasks.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"79d3b300d46459a123fcb54118d2e45fffb37006","unresolved":false,"context_lines":[{"line_number":196,"context_line":""},{"line_number":197,"context_line":"        :param state: New task state."},{"line_number":198,"context_line":"        :param state_info: New state information (i.e. error message)."},{"line_number":199,"context_line":"        :param force: If force equals True policies will be skipped"},{"line_number":200,"context_line":"        :type force: bool"},{"line_number":201,"context_line":"        \"\"\""},{"line_number":202,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_2306f222","line":199,"range":{"start_line":199,"start_character":31,"end_line":199,"end_character":42},"updated":"2018-07-30 09:49:49.000000000","message":"-\u003e \"equals to True\"","commit_id":"7a40c507331cd1c1499795e235d73cb8079b2a42"},{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"79d3b300d46459a123fcb54118d2e45fffb37006","unresolved":false,"context_lines":[{"line_number":229,"context_line":"                    ex.output \u003d {}"},{"line_number":230,"context_line":""},{"line_number":231,"context_line":"        if not force:"},{"line_number":232,"context_line":"            self._after_task_complete()"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"            # Ignore DELAYED state."},{"line_number":235,"context_line":"            if self.task_ex.state \u003d\u003d states.RUNNING_DELAYED:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_a31a0279","line":232,"range":{"start_line":232,"start_character":12,"end_line":232,"end_character":39},"updated":"2018-07-30 09:49:49.000000000","message":"The thing is that the method \"_after_task_complete\" may do something else besides running policies. Part of those things may need to be done even in case we don\u0027t need to run policies. So, per my previous comment in the task_handler.py module, I\u0027d prefer to have a more specific name such as \"skip_policies\". Even the description of this parameter tells about it.","commit_id":"7a40c507331cd1c1499795e235d73cb8079b2a42"}],"mistral/tests/unit/engine/test_join.py":[{"author":{"_account_id":8731,"name":"Renat Akhmerov","email":"renat.akhmerov@gmail.com","username":"rakhmerov"},"change_message_id":"79d3b300d46459a123fcb54118d2e45fffb37006","unresolved":false,"context_lines":[{"line_number":1313,"context_line":"        wf_text \u003d \"\"\"---"},{"line_number":1314,"context_line":"        version: \u00272.0\u0027"},{"line_number":1315,"context_line":"        wf:"},{"line_number":1316,"context_line":"          type: direct"},{"line_number":1317,"context_line":"          tasks:"},{"line_number":1318,"context_line":"            task1:"},{"line_number":1319,"context_line":"              on-success:"}],"source_content_type":"text/x-python","patch_set":2,"id":"5f7c97a3_63b4ea81","line":1316,"range":{"start_line":1316,"start_character":10,"end_line":1316,"end_character":22},"updated":"2018-07-30 09:49:49.000000000","message":"Soft: can be removed.","commit_id":"7a40c507331cd1c1499795e235d73cb8079b2a42"}]}
