)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"9a464b93d8b849af6fd109179fd3281020078b37","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Do sleep(0) for first task sleep"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This results in a functional test run which is up to 20% faster than"},{"line_number":10,"context_line":"the current sleep(1)"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I1f594963dd164e44b8d9c601610a4036a0253ece"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"da9b358b_519ca40e","line":10,"updated":"2015-04-01 10:53:17.000000000","message":"Do we need a bug for this so it can be backported?","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"971e96673a02120faad1cacd3435bcb902037cc1","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Do sleep(0) for first task sleep"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This results in a functional test run which is up to 20% faster than"},{"line_number":10,"context_line":"the current sleep(1)"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I1f594963dd164e44b8d9c601610a4036a0253ece"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baa041b7_a1ad4a33","line":10,"in_reply_to":"baa041b7_491a3919","updated":"2015-04-01 22:35:21.000000000","message":"Done","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"83890815f4bf8644ce733bdce94cd85e9e7e5d3c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Do sleep(0) for first task sleep"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This results in a functional test run which is up to 20% faster than"},{"line_number":10,"context_line":"the current sleep(1)"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I1f594963dd164e44b8d9c601610a4036a0253ece"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baa041b7_8b0fe0e0","line":10,"in_reply_to":"baa041b7_650f40e2","updated":"2015-04-02 18:25:39.000000000","message":"It decreases latency by up to 1s (up to, because other greenthreads may run when we yield) per stack. (Assuming that check_create_complete() can return True immediately - otherwise it may well increase latency.) Throughput is increased not at all. It\u0027s really hard to get exercised about this as anything more than a test optimisation.","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"0b07becded0e54879efeae2b056487dd5c421b76","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Do sleep(0) for first task sleep"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This results in a functional test run which is up to 20% faster than"},{"line_number":10,"context_line":"the current sleep(1)"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I1f594963dd164e44b8d9c601610a4036a0253ece"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baa041b7_650f40e2","line":10,"in_reply_to":"baa041b7_a1ad4a33","updated":"2015-04-02 09:04:24.000000000","message":"Zane: Perhaps I\u0027m missing something, but surely the reason the functional tests run faster is because this is a performance improvement to heat - we no longer wait 1s before starting every task, so surely that\u0027s a beneficial backport to contemplate?\n\nOr is there some risk/downside I\u0027m not considering here?\n\nSeems like a low-risk win to me, but I must be missing something :)","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"a833fe08442661191fccc67f6adfeda831722e87","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Do sleep(0) for first task sleep"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This results in a functional test run which is up to 20% faster than"},{"line_number":10,"context_line":"the current sleep(1)"},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Change-Id: I1f594963dd164e44b8d9c601610a4036a0253ece"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"baa041b7_491a3919","line":10,"in_reply_to":"da9b358b_519ca40e","updated":"2015-04-01 14:36:24.000000000","message":"Meh, how many functional tests are we actually running against stable branches? I would prefer not to backport this unless we really need to.","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"}],"heat/engine/scheduler.py":[{"author":{"_account_id":6577,"name":"Sergey Kraynev","email":"sergejyit@gmail.com","username":"skraynev"},"change_message_id":"242fa542e9ee2c64a4b7d123430c3c761cef3769","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        \"\"\""},{"line_number":169,"context_line":"        Start and run the task to completion."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        The task will sleep for `wait_time` seconds between steps. To avoid"},{"line_number":172,"context_line":"        sleeping, pass `None` for `wait_time`."},{"line_number":173,"context_line":"        \"\"\""},{"line_number":174,"context_line":"        self.start(timeout\u003dtimeout)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_60c75246","line":171,"updated":"2015-04-01 13:40:28.000000000","message":"please update this docstring corresponding changes in sleep period","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"a833fe08442661191fccc67f6adfeda831722e87","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        \"\"\""},{"line_number":169,"context_line":"        Start and run the task to completion."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        The task will sleep for `wait_time` seconds between steps. To avoid"},{"line_number":172,"context_line":"        sleeping, pass `None` for `wait_time`."},{"line_number":173,"context_line":"        \"\"\""},{"line_number":174,"context_line":"        self.start(timeout\u003dtimeout)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_e9622dad","line":171,"in_reply_to":"baa041b7_43f1f8cc","updated":"2015-04-01 14:36:24.000000000","message":"Actually it means that we don\u0027t sleep for wait_time *after* the first step, so arguably it is a change in the documented behaviour. As an example:\n\n def my_task():\n    do_some_stuff()\n\n    yield  # sleep(0)\n\n    while not stuff_done():\n      do_some_more_stuff()\n\n      yield  # sleep(wait_time)","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"},{"author":{"_account_id":4328,"name":"Steven Hardy","email":"steven.hardy@suse.com","username":"shardy"},"change_message_id":"4485393080a277a77d7c4fbd949a61be9f4b7717","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        \"\"\""},{"line_number":169,"context_line":"        Start and run the task to completion."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        The task will sleep for `wait_time` seconds between steps. To avoid"},{"line_number":172,"context_line":"        sleeping, pass `None` for `wait_time`."},{"line_number":173,"context_line":"        \"\"\""},{"line_number":174,"context_line":"        self.start(timeout\u003dtimeout)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_43f1f8cc","line":171,"in_reply_to":"baa041b7_60c75246","updated":"2015-04-01 13:52:41.000000000","message":"But the docs are correct aren\u0027t they?  \n\nWe still sleep for wait_time *between* steps, via the run_to_completion, we just don\u0027t sleep for wait_time before the first step (which is a bug and not the documented behaviour)?","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"971e96673a02120faad1cacd3435bcb902037cc1","unresolved":false,"context_lines":[{"line_number":168,"context_line":"        \"\"\""},{"line_number":169,"context_line":"        Start and run the task to completion."},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"        The task will sleep for `wait_time` seconds between steps. To avoid"},{"line_number":172,"context_line":"        sleeping, pass `None` for `wait_time`."},{"line_number":173,"context_line":"        \"\"\""},{"line_number":174,"context_line":"        self.start(timeout\u003dtimeout)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_61e2a2a1","line":171,"in_reply_to":"baa041b7_e9622dad","updated":"2015-04-01 22:35:21.000000000","message":"Done","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"},{"author":{"_account_id":9542,"name":"Pavlo Shchelokovskyy","email":"pshchelokovskyy@mirantis.com","username":"pshchelo"},"change_message_id":"86e8ef0e4d1bf6fdbbe8c80c153b1d01ce8f1528","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        sleeping, pass `None` for `wait_time`."},{"line_number":173,"context_line":"        \"\"\""},{"line_number":174,"context_line":"        self.start(timeout\u003dtimeout)"},{"line_number":175,"context_line":"        # ensure that wait is applied only if task has not completed."},{"line_number":176,"context_line":"        if not self.done() and wait_time:"},{"line_number":177,"context_line":"            self._sleep(0)"},{"line_number":178,"context_line":"        self.run_to_completion(wait_time\u003dwait_time)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_86c4ae92","line":175,"updated":"2015-04-01 14:06:13.000000000","message":"now it seems this comment makes little sense...","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"971e96673a02120faad1cacd3435bcb902037cc1","unresolved":false,"context_lines":[{"line_number":172,"context_line":"        sleeping, pass `None` for `wait_time`."},{"line_number":173,"context_line":"        \"\"\""},{"line_number":174,"context_line":"        self.start(timeout\u003dtimeout)"},{"line_number":175,"context_line":"        # ensure that wait is applied only if task has not completed."},{"line_number":176,"context_line":"        if not self.done() and wait_time:"},{"line_number":177,"context_line":"            self._sleep(0)"},{"line_number":178,"context_line":"        self.run_to_completion(wait_time\u003dwait_time)"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_41ee7e8c","line":175,"in_reply_to":"baa041b7_86c4ae92","updated":"2015-04-01 22:35:21.000000000","message":"Done","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"}],"heat/tests/test_metadata_refresh.py":[{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"a833fe08442661191fccc67f6adfeda831722e87","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        scheduler.TaskRunner._sleep(0).WithSideEffects(check_empty)"},{"line_number":274,"context_line":"        scheduler.TaskRunner._sleep(1).WithSideEffects(post_success)"},{"line_number":275,"context_line":"        scheduler.TaskRunner._sleep(1).MultipleTimes().AndReturn("},{"line_number":276,"context_line":"            None)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        self.m.ReplayAll()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_e99fcdb2","line":275,"updated":"2015-04-01 14:36:24.000000000","message":"This actually would have worked already, not sure we needed to change it.","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"},{"author":{"_account_id":4571,"name":"Steve Baker","email":"sbaker@redhat.com","username":"steve-stevebaker"},"change_message_id":"971e96673a02120faad1cacd3435bcb902037cc1","unresolved":false,"context_lines":[{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        scheduler.TaskRunner._sleep(0).WithSideEffects(check_empty)"},{"line_number":274,"context_line":"        scheduler.TaskRunner._sleep(1).WithSideEffects(post_success)"},{"line_number":275,"context_line":"        scheduler.TaskRunner._sleep(1).MultipleTimes().AndReturn("},{"line_number":276,"context_line":"            None)"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"        self.m.ReplayAll()"}],"source_content_type":"text/x-python","patch_set":1,"id":"baa041b7_c1af2ee2","line":275,"in_reply_to":"baa041b7_e99fcdb2","updated":"2015-04-01 22:35:21.000000000","message":"oh, this was leftover from previous experiments.\n\nDone","commit_id":"e9ed6c5ad018b4ebab7f837248fb6a9534d0f7f5"}]}
