)]}'
{"taskflow/conductors/backends/impl_executor.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"c77fab6bd67345508f2c0c5de75db9326b4eae4b","unresolved":false,"context_lines":[{"line_number":122,"context_line":"            value\u003dwait_timeout, default_value\u003dself.WAIT_TIMEOUT,"},{"line_number":123,"context_line":"            event_factory\u003dself._event_factory)"},{"line_number":124,"context_line":"        self._dead \u003d self._event_factory()"},{"line_number":125,"context_line":"        self._engine_options.update(abort_event\u003dself._dead)"},{"line_number":126,"context_line":"        self._log \u003d misc.pick_first_not_none(log, self.LOG, LOG)"},{"line_number":127,"context_line":"        self._max_simultaneous_jobs \u003d int("},{"line_number":128,"context_line":"            misc.pick_first_not_none(max_simultaneous_jobs,"}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_0c5c5c24","line":125,"updated":"2016-01-20 19:54:55.000000000","message":"Interesting, makes sense to connect engines like this, smart thinking.","commit_id":"b6bbf0ef46cb32f94cd029c267751ebf9ffa0096"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"0643174275b954844a99951ce707ee43eea43484","unresolved":false,"context_lines":[{"line_number":181,"context_line":"            }"},{"line_number":182,"context_line":""},{"line_number":183,"context_line":"            def _run_engine():"},{"line_number":184,"context_line":"                for _state in engine.run_iter():"},{"line_number":185,"context_line":"                    if self._dead.is_set():"},{"line_number":186,"context_line":"                        self._log.info(\"Conductor stopped, suspending job \""},{"line_number":187,"context_line":"                                       \"execution\")"}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_753a6ae9","line":184,"updated":"2016-01-26 22:26:46.000000000","message":"Because this will continue iterating for a while until it officially suspends probably good idea to not call into suspend more than once (although it shouldn\u0027t be harmful, but might as well not call more than once if we can).","commit_id":"b05d3f36aaaa6c09f9a6d6947dc8b3b0ae1df5ac"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"3730878f34309b05917c70574313989a39228278","unresolved":false,"context_lines":[{"line_number":183,"context_line":"            def _run_engine():"},{"line_number":184,"context_line":"                for _state in engine.run_iter():"},{"line_number":185,"context_line":"                    if self._dead.is_set():"},{"line_number":186,"context_line":"                        self._log.info(\"Conductor stopped, suspending job \""},{"line_number":187,"context_line":"                                       \"execution\")"},{"line_number":188,"context_line":"                        engine.suspend()"},{"line_number":189,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9a68dd71_b881b74f","line":186,"updated":"2016-01-26 22:31:35.000000000","message":"Also probably better to say:\n\n    \"Conductor stopped, requesting suspension of engine running job %s\"\n\nBecause due to the async nature of tasks executing in an engine, if all tasks have actually be dispatched and they are just being waited on (to execute or revert) and the suspend call comes in, then no suspension will actually happen. So the change of wording to be \u0027requesting suspension\u0027 seems more appropriate (since it may not actually result in suspension).","commit_id":"b05d3f36aaaa6c09f9a6d6947dc8b3b0ae1df5ac"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"7c56e6b53e8f8f61332aae1bf5ebca266b734b9a","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                    job, exc_info\u003dTrue)"},{"line_number":225,"context_line":"            else:"},{"line_number":226,"context_line":"                if engine.storage.get_flow_state() \u003d\u003d states.SUSPENDED:"},{"line_number":227,"context_line":"                    self._log.info(\"Job was aborted: %s\", job)"},{"line_number":228,"context_line":"                    consume \u003d False"},{"line_number":229,"context_line":"                else:"},{"line_number":230,"context_line":"                    self._log.info(\"Job completed successfully: %s\", job)"}],"source_content_type":"text/x-python","patch_set":4,"id":"7a5de9d1_4f656c43","line":227,"updated":"2016-01-27 17:39:08.000000000","message":"Hmmm, aborted or suspended? The wording seems somewhat off, if it was suspended :-/","commit_id":"493c31e9c0a2c4f2ad02ba7357ef1cf6a6ac327c"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"4eb983aa3eb83fd7e43b6036c358647c6ee9e217","unresolved":false,"context_lines":[{"line_number":151,"context_line":"            conductor to gracefully shut down, :py:meth:`wait` should be used"},{"line_number":152,"context_line":"            instead."},{"line_number":153,"context_line":"        \"\"\""},{"line_number":154,"context_line":"        self._dead.set()"},{"line_number":155,"context_line":"        self._wait_timeout.interrupt()"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    @property"}],"source_content_type":"text/x-python","patch_set":5,"id":"7a5de9d1_cda844de","line":154,"updated":"2016-01-28 19:10:58.000000000","message":"Ah hmmm, just noticed this,\n\nI think the intention for self._dead was that it only become true when the run() of a conductor is actually finished, and not as a way to signal \u0027death\u0027, the wait_timeout can be used for that, and can be checked in the _run_engine() code,\n\nhttps://github.com/openstack/taskflow/blob/master/taskflow/types/timing.py#L50\n\nThat keeps the original intention of self._dead as is (to basically be used to know when run() is done, and when it is not): this can be seen @ https://github.com/openstack/taskflow/blob/master/taskflow/conductors/backends/impl_executor.py#L312 (the run() method) which has a finally block to set self._dead (when its done).\n\nMake sense?","commit_id":"f3ab081cb1097eaae7dffd72109cfe5410bf91d5"},{"author":{"_account_id":8895,"name":"Stanislav Kudriashev","email":"stas.kudriashev@gmail.com","username":"skudriashev"},"change_message_id":"8fa061b9385b0c38d2420c228e610aeb764a11c0","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"            def _run_engine():"},{"line_number":183,"context_line":"                has_suspended \u003d False"},{"line_number":184,"context_line":"                for _state in engine.run_iter():"},{"line_number":185,"context_line":"                    if not has_suspended and self._wait_timeout.is_stopped():"},{"line_number":186,"context_line":"                        self._log.info(\"Conductor stopped, requesting \""},{"line_number":187,"context_line":"                                       \"suspension of engine running \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a5de9d1_7091c046","line":184,"updated":"2016-01-29 13:10:50.000000000","message":"Why not use \u0027_\u0027 here?","commit_id":"f059ff751fea3dd737201591cc5226a4c62f9296"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"9cb3e2c286c1028ceac261cc7fdb830b2e72d62b","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"            def _run_engine():"},{"line_number":183,"context_line":"                has_suspended \u003d False"},{"line_number":184,"context_line":"                for _state in engine.run_iter():"},{"line_number":185,"context_line":"                    if not has_suspended and self._wait_timeout.is_stopped():"},{"line_number":186,"context_line":"                        self._log.info(\"Conductor stopped, requesting \""},{"line_number":187,"context_line":"                                       \"suspension of engine running \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a5de9d1_ca1f956a","line":184,"in_reply_to":"7a5de9d1_530feb87","updated":"2016-01-29 16:53:09.000000000","message":"Also its generally frowned upon to just use \u0027_\u0027 as is in openstack/python I think in general due to gettext usually using that for translation.\n\nMost python has some version of:\n\n  _ \u003d gettext.gettext\n\nhttps://github.com/openstack/oslo.i18n/blob/master/oslo_i18n/_gettextutils.py#L37\n\nAnd especially openstack, so even though in taskflow we aren\u0027t translating things I didn\u0027t/don\u0027t want to confuse other openstack reviewers/coders by using that.","commit_id":"f059ff751fea3dd737201591cc5226a4c62f9296"},{"author":{"_account_id":9648,"name":"Greg Hill","email":"greg.hill@rackspace.com","username":"jimbobhickville"},"change_message_id":"609d39ae0c71051b6183b2964777799122a23fb3","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"            def _run_engine():"},{"line_number":183,"context_line":"                has_suspended \u003d False"},{"line_number":184,"context_line":"                for _state in engine.run_iter():"},{"line_number":185,"context_line":"                    if not has_suspended and self._wait_timeout.is_stopped():"},{"line_number":186,"context_line":"                        self._log.info(\"Conductor stopped, requesting \""},{"line_number":187,"context_line":"                                       \"suspension of engine running \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a5de9d1_530feb87","line":184,"in_reply_to":"7a5de9d1_7091c046","updated":"2016-01-29 14:31:08.000000000","message":"I could.  I was just following the conventions of the codebase (this line was literally copied from the engine run() method that this supplants).","commit_id":"f059ff751fea3dd737201591cc5226a4c62f9296"},{"author":{"_account_id":8895,"name":"Stanislav Kudriashev","email":"stas.kudriashev@gmail.com","username":"skudriashev"},"change_message_id":"e127c17b01c72c0bba85f70edde92d6c9d8301c6","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"            def _run_engine():"},{"line_number":183,"context_line":"                has_suspended \u003d False"},{"line_number":184,"context_line":"                for _state in engine.run_iter():"},{"line_number":185,"context_line":"                    if not has_suspended and self._wait_timeout.is_stopped():"},{"line_number":186,"context_line":"                        self._log.info(\"Conductor stopped, requesting \""},{"line_number":187,"context_line":"                                       \"suspension of engine running \""}],"source_content_type":"text/x-python","patch_set":6,"id":"7a5de9d1_1ede4fdd","line":184,"in_reply_to":"7a5de9d1_ca1f956a","updated":"2016-01-29 18:24:08.000000000","message":"Ok, understood. Thanks!","commit_id":"f059ff751fea3dd737201591cc5226a4c62f9296"}],"taskflow/engines/action_engine/engine.py":[{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"c77fab6bd67345508f2c0c5de75db9326b4eae4b","unresolved":false,"context_lines":[{"line_number":224,"context_line":"                                           \" try again later\")"},{"line_number":225,"context_line":"            for _state in self.run_iter():"},{"line_number":226,"context_line":"                if self._aborted is not None and self._aborted.is_set():"},{"line_number":227,"context_line":"                    raise exc.ExecutionFailure(\"Engine was aborted\")"},{"line_number":228,"context_line":""},{"line_number":229,"context_line":"    def run_iter(self, timeout\u003dNone):"},{"line_number":230,"context_line":"        \"\"\"Runs the engine using iteration (or die trying)."}],"source_content_type":"text/x-python","patch_set":1,"id":"9a68dd71_8c1a8c6d","line":227,"updated":"2016-01-20 19:54:55.000000000","message":"Soooo thinking this might want to use the suspend() functionality vs this, or at least have https://review.openstack.org/#/c/270446/ go in first, to ensure that when this is raised, that things don\u0027t get lost due to the state-machine iteration being killed in a non-happy manner.","commit_id":"b6bbf0ef46cb32f94cd029c267751ebf9ffa0096"}]}
