)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7366,"name":"Ivan Melnikov","email":"imelnikov@griddynamics.com","username":"imelnikov"},"change_message_id":"43a3cc2873789a61ab593382f7a46d1eefac1079","unresolved":false,"context_lines":[{"line_number":10,"context_line":"allow there to be a new api run_iter() that will yield"},{"line_number":11,"context_line":"back the engine state transitions while running. This"},{"line_number":12,"context_line":"allows for a engine user to do alternate work while an"},{"line_number":13,"context_line":"engine is running (and come back to yield on there own"},{"line_number":14,"context_line":"time)."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"Implements blueprint iterable-execution"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"9ad9bd40_ece829e4","line":13,"updated":"2014-05-07 08:24:12.000000000","message":"their?","commit_id":"c5a3a8cf6728e73762a73ac4751a2e2b60d86e5a"}],"taskflow/engines/action_engine/engine.py":[{"author":{"_account_id":7366,"name":"Ivan Melnikov","email":"imelnikov@griddynamics.com","username":"imelnikov"},"change_message_id":"43a3cc2873789a61ab593382f7a46d1eefac1079","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                self._change_state(states.RUNNING)"},{"line_number":104,"context_line":"                for state in self._root.execute_iter(timeout\u003dtimeout):"},{"line_number":105,"context_line":"                    try:"},{"line_number":106,"context_line":"                        try_suspend \u003d yield state"},{"line_number":107,"context_line":"                    except GeneratorExit:"},{"line_number":108,"context_line":"                        break"},{"line_number":109,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad9bd40_ccae0598","line":106,"updated":"2014-05-07 08:24:12.000000000","message":"So we\u0027re yielding control while holding lock...","commit_id":"c5a3a8cf6728e73762a73ac4751a2e2b60d86e5a"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"8ce2cab49288f106711d02ee198cfd3b74c47993","unresolved":false,"context_lines":[{"line_number":103,"context_line":"                self._change_state(states.RUNNING)"},{"line_number":104,"context_line":"                for state in self._root.execute_iter(timeout\u003dtimeout):"},{"line_number":105,"context_line":"                    try:"},{"line_number":106,"context_line":"                        try_suspend \u003d yield state"},{"line_number":107,"context_line":"                    except GeneratorExit:"},{"line_number":108,"context_line":"                        break"},{"line_number":109,"context_line":"                    else:"}],"source_content_type":"text/x-python","patch_set":12,"id":"7adec928_1348be5a","line":106,"in_reply_to":"9ad9bd40_ccae0598","updated":"2014-05-07 16:19:25.000000000","message":"Ya, I was wondering about this and what to do here about that. Have a few ideas.","commit_id":"c5a3a8cf6728e73762a73ac4751a2e2b60d86e5a"},{"author":{"_account_id":11024,"name":"Dan Krause","email":"dan@dankrause.net","username":"dankrause"},"change_message_id":"acd21489ea036352c5514e5bf7270f25d83abf5b","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                        break"},{"line_number":109,"context_line":"                    else:"},{"line_number":110,"context_line":"                        if try_suspend:"},{"line_number":111,"context_line":"                            self.suspend()"},{"line_number":112,"context_line":"            except Exception:"},{"line_number":113,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":114,"context_line":"                    self._change_state(states.FAILURE)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad9bd40_a0785390","line":111,"updated":"2014-05-02 14:22:06.000000000","message":"If we suspend here, is there anything that stops the run method from continuing to execute \"run_iter\" over and over?","commit_id":"c5a3a8cf6728e73762a73ac4751a2e2b60d86e5a"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"7e74b516bbac436dd066d673b47c89730e43528d","unresolved":false,"context_lines":[{"line_number":108,"context_line":"                        break"},{"line_number":109,"context_line":"                    else:"},{"line_number":110,"context_line":"                        if try_suspend:"},{"line_number":111,"context_line":"                            self.suspend()"},{"line_number":112,"context_line":"            except Exception:"},{"line_number":113,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":114,"context_line":"                    self._change_state(states.FAILURE)"}],"source_content_type":"text/x-python","patch_set":12,"id":"9ad9bd40_16222501","line":111,"in_reply_to":"9ad9bd40_a0785390","updated":"2014-05-02 15:55:51.000000000","message":"So in that case (which will be hard to invoke from the run() method, since normal iteration like in the run method doesn\u0027t return results from yielding, if u are interested in this search for generators + send() on google/yahoo) what will happen is that if the engine suspends itself and the underlying execution finishes up and currently executing tasks (and then stops) this for loop will stop yielding values back, that will mean the for loop in run() will also stop (since this method will not yield any more results to it) so both will stop if suspend is called (and the underlying execution has finished up).","commit_id":"c5a3a8cf6728e73762a73ac4751a2e2b60d86e5a"}]}
