)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9234,"name":"Steve Heyman","email":"steve@heyman.com","username":"hockeynut"},"change_message_id":"077e56a7b8431c42265753bcd9cd3d73d721fa82","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove time.sleep"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Sustitute time.sleep for interruptable_sleep."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Ie659ce3a87d57632b81252b8865fc838e88890c4"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"3ac371cc_0e4c6141","line":9,"updated":"2016-08-15 17:11:30.000000000","message":"spelling - Substitute\n\nAlso is this fixing a bug or addressing some requirement?  If not then why do it?","commit_id":"35c6fc8ce1413954f72654b92a6b5c44dfc5dc31"},{"author":{"_account_id":12395,"name":"Roman Vasylets","email":"pomeo92@gmail.com","username":"rvasilets"},"change_message_id":"03436d05e21d5909175b51359494e76221829dfc","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Gleb Stepanov \u003cgstepanov@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-06 17:47:28 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove time.sleep"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Substitute time.sleep by sleep_between."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a89bdaa_0d57a658","line":7,"updated":"2016-09-07 09:41:55.000000000","message":"I don\u0027t like the title. Its wrong. Please be more precise next time","commit_id":"b541d30add6cd15a9196bd828c95b8716fa0355e"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"6521ee77f50b664590e29d53862782f2e65568ec","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Gleb Stepanov \u003cgstepanov@mirantis.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2016-09-06 17:47:28 +0300"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Remove time.sleep"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Substitute time.sleep by sleep_between."},{"line_number":10,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":6,"id":"9a89bdaa_110fb888","line":7,"in_reply_to":"9a89bdaa_0d57a658","updated":"2016-09-07 12:04:52.000000000","message":"Sure, thanks!","commit_id":"b541d30add6cd15a9196bd828c95b8716fa0355e"}],"rally/api.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e822baceb144c1034481f8c7a5faa2698a19dcda","unresolved":false,"context_lines":[{"line_number":340,"context_line":"                             \" \u0027running\u0027\") % current_status)"},{"line_number":341,"context_line":"                while (current_status in"},{"line_number":342,"context_line":"                       objects.Task.NOT_IMPLEMENTED_STAGES_FOR_ABORT):"},{"line_number":343,"context_line":"                    utils.interruptable_sleep(1)"},{"line_number":344,"context_line":"                    current_status \u003d objects.Task.get_status(task_uuid)"},{"line_number":345,"context_line":""},{"line_number":346,"context_line":"        objects.Task.get(task_uuid).abort(soft\u003dsoft)"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_d5ce77b6","line":343,"updated":"2016-08-12 12:52:20.000000000","message":"the purpose of interruptable_sleep() is to allow interruption - e. g. if it is run in scenarios then we can interrupt it with this method abort().\n\nBut here, inside the `abort()\u0027 methos, there is no need to use interruptable_sleep because we do not going to abort the `abort()\u0027 method :)","commit_id":"6223ad09dacc80b7389593f2f07b5daf6aaef0d9"}],"rally/plugins/openstack/scenarios/cinder/utils.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"02e7a6ad99191bed9df07f79b7771c9a9e18f2a5","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        # NOTE(msdubov): It is reasonable to wait 5 secs before starting to"},{"line_number":142,"context_line":"        #                check whether the volume is ready \u003d\u003e less API calls."},{"line_number":143,"context_line":"        rutils.interruptable_sleep(CONF.benchmark."},{"line_number":144,"context_line":"                                   cinder_volume_create_prepoll_delay)"},{"line_number":145,"context_line":"        volume \u003d bench_utils.wait_for("},{"line_number":146,"context_line":"            volume,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_fb7037a6","line":143,"updated":"2016-08-17 13:12:56.000000000","message":"Let\u0027s do this even better: there is a special method Scenario.sleep_between() which actually calls interruptable_sleep behind the scenes. This method is specially intended for such cases since it also updates idle_duration (this is what sleeping time actually is)\n\nhttps://github.com/openstack/rally/blob/2b07ff2a9f25cbf3202848e6791f937bb5ff3c32/rally/task/scenario.py#L193\n\nSame for other scenarios.","commit_id":"a436cd0544d166c11a5a511f84387119c882027b"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"c377ae77244cabbebe3e12de32500692228fe0e1","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        # NOTE(msdubov): It is reasonable to wait 5 secs before starting to"},{"line_number":142,"context_line":"        #                check whether the volume is ready \u003d\u003e less API calls."},{"line_number":143,"context_line":"        rutils.interruptable_sleep(CONF.benchmark."},{"line_number":144,"context_line":"                                   cinder_volume_create_prepoll_delay)"},{"line_number":145,"context_line":"        volume \u003d bench_utils.wait_for("},{"line_number":146,"context_line":"            volume,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_eeb22ce4","line":143,"in_reply_to":"3ac371cc_b5bb63e4","updated":"2016-08-17 15:51:50.000000000","message":"the main disadvantage of self.sleep_between() is that there are 2 arguments min_sleep and max_sleep, so in this case both should have same value.\n\nExample: \n sleep_time \u003d CONF.benchmark.cinder_volume_create_prepoll_delay\n self.sleep_between(self, sleep_time, sleep_time)\n\nHowever is better than using interruptable_sleep() directly because self.sleep_between() will update self.idle_duration","commit_id":"a436cd0544d166c11a5a511f84387119c882027b"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"7b3fc87daf73241edb2aa8b3d79253a978210d48","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        # NOTE(msdubov): It is reasonable to wait 5 secs before starting to"},{"line_number":142,"context_line":"        #                check whether the volume is ready \u003d\u003e less API calls."},{"line_number":143,"context_line":"        rutils.interruptable_sleep(CONF.benchmark."},{"line_number":144,"context_line":"                                   cinder_volume_create_prepoll_delay)"},{"line_number":145,"context_line":"        volume \u003d bench_utils.wait_for("},{"line_number":146,"context_line":"            volume,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_2eda84e8","line":143,"in_reply_to":"3ac371cc_eeb22ce4","updated":"2016-08-17 15:54:06.000000000","message":"sleep_between() can be also improved (in another patch) to support single argument for sleeping time","commit_id":"a436cd0544d166c11a5a511f84387119c882027b"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"82eebad919cc8563a89fd7c7cbd4a2f0374afe32","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        # NOTE(msdubov): It is reasonable to wait 5 secs before starting to"},{"line_number":142,"context_line":"        #                check whether the volume is ready \u003d\u003e less API calls."},{"line_number":143,"context_line":"        rutils.interruptable_sleep(CONF.benchmark."},{"line_number":144,"context_line":"                                   cinder_volume_create_prepoll_delay)"},{"line_number":145,"context_line":"        volume \u003d bench_utils.wait_for("},{"line_number":146,"context_line":"            volume,"}],"source_content_type":"text/x-python","patch_set":3,"id":"3ac371cc_b5bb63e4","line":143,"in_reply_to":"3ac371cc_fb7037a6","updated":"2016-08-17 15:15:07.000000000","message":"you, mean use sleep between in all scenarios? Ok,thanks, i will use them instead.","commit_id":"a436cd0544d166c11a5a511f84387119c882027b"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"846790038b10a377ac7027656fd02dfac3bab0a0","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        client \u003d cinder_wrapper.wrap(self._clients.cinder, self)"},{"line_number":271,"context_line":"        snapshot \u003d client.create_snapshot(volume_id, **kwargs)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        rutils.interruptable_sleep(CONF.benchmark."},{"line_number":274,"context_line":"                                   cinder_volume_create_prepoll_delay)"},{"line_number":275,"context_line":"        snapshot \u003d bench_utils.wait_for("},{"line_number":276,"context_line":"            snapshot,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_d025c6c2","line":273,"updated":"2016-09-05 08:44:25.000000000","message":"why not self.sleep_between(...) ?","commit_id":"254ed570c1b0dc538b6e22db301dfce1b5243f2f"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"5e95ff55f6177f87cf0e2e3522096e1d7cde540b","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        client \u003d cinder_wrapper.wrap(self._clients.cinder, self)"},{"line_number":271,"context_line":"        snapshot \u003d client.create_snapshot(volume_id, **kwargs)"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"        rutils.interruptable_sleep(CONF.benchmark."},{"line_number":274,"context_line":"                                   cinder_volume_create_prepoll_delay)"},{"line_number":275,"context_line":"        snapshot \u003d bench_utils.wait_for("},{"line_number":276,"context_line":"            snapshot,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_df4cb244","line":273,"in_reply_to":"9a89bdaa_d025c6c2","updated":"2016-09-06 14:00:14.000000000","message":"yep, i\u0027ve forgot to change, fixed","commit_id":"254ed570c1b0dc538b6e22db301dfce1b5243f2f"}],"rally/plugins/openstack/scenarios/heat/utils.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"846790038b10a377ac7027656fd02dfac3bab0a0","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        }"},{"line_number":183,"context_line":"        self.clients(\"heat\").stacks.update(stack.id, **kw)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        rutils.interruptable_sleep(CONF.benchmark."},{"line_number":186,"context_line":"                                   heat_stack_update_prepoll_delay)"},{"line_number":187,"context_line":"        stack \u003d utils.wait_for("},{"line_number":188,"context_line":"            stack,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_840ea332","line":185,"updated":"2016-09-05 08:44:25.000000000","message":"why not self.sleep_between(...) ?","commit_id":"254ed570c1b0dc538b6e22db301dfce1b5243f2f"},{"author":{"_account_id":12712,"name":"Gleb Stepanov","email":"gstepanov@mirantis.com","username":"stgleb"},"change_message_id":"5e95ff55f6177f87cf0e2e3522096e1d7cde540b","unresolved":false,"context_lines":[{"line_number":182,"context_line":"        }"},{"line_number":183,"context_line":"        self.clients(\"heat\").stacks.update(stack.id, **kw)"},{"line_number":184,"context_line":""},{"line_number":185,"context_line":"        rutils.interruptable_sleep(CONF.benchmark."},{"line_number":186,"context_line":"                                   heat_stack_update_prepoll_delay)"},{"line_number":187,"context_line":"        stack \u003d utils.wait_for("},{"line_number":188,"context_line":"            stack,"}],"source_content_type":"text/x-python","patch_set":4,"id":"9a89bdaa_1f57face","line":185,"in_reply_to":"9a89bdaa_840ea332","updated":"2016-09-06 14:00:14.000000000","message":"yep, i\u0027ve forgot to change, fixed","commit_id":"254ed570c1b0dc538b6e22db301dfce1b5243f2f"}],"rally/task/engine.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"e822baceb144c1034481f8c7a5faa2698a19dcda","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            elif self.is_done.isSet():"},{"line_number":94,"context_line":"                break"},{"line_number":95,"context_line":"            else:"},{"line_number":96,"context_line":"                utils.interruptable_sleep(0.1)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def __exit__(self, exc_type, exc_value, exc_traceback):"},{"line_number":99,"context_line":"        self.finish \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_b52f833d","line":96,"updated":"2016-08-12 12:52:20.000000000","message":"utils.interruptable_sleep() uses atomic_delay\u003d0.1 by default so it is very strange (and gives zero profit) to call interruptable_sleep with 0.1s, at least with default atomic_delay","commit_id":"6223ad09dacc80b7389593f2f07b5daf6aaef0d9"},{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"42641bf6aab2ec06f32c4d5eba5f8e307301b707","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            elif self.is_done.isSet():"},{"line_number":94,"context_line":"                break"},{"line_number":95,"context_line":"            else:"},{"line_number":96,"context_line":"                utils.interruptable_sleep(0.1, 0.001)"},{"line_number":97,"context_line":""},{"line_number":98,"context_line":"    def __exit__(self, exc_type, exc_value, exc_traceback):"},{"line_number":99,"context_line":"        self.finish \u003d time.time()"}],"source_content_type":"text/x-python","patch_set":2,"id":"9ad45d7e_bf9e3d61","line":96,"updated":"2016-08-12 13:44:09.000000000","message":"This change is useless at all. Please read my comment at patch set 1 and also reconsider if there is a need to interrupt 0.1s period of time. Current code is OK, and also there is no need to make small periods of time interruptable.\n\nI would recommend to discard the whole this patch - it is useless.","commit_id":"35c6fc8ce1413954f72654b92a6b5c44dfc5dc31"}],"rally/task/runner.py":[{"author":{"_account_id":10475,"name":"Alexander Maretskiy","email":"amaretskiy@mirantis.com","username":"maretskiy"},"change_message_id":"5316a4d9efd686081d940a46c0aae364ac72fefc","unresolved":false,"context_lines":[{"line_number":205,"context_line":""},{"line_number":206,"context_line":"            if result_queue.empty():"},{"line_number":207,"context_line":"                # sleep a bit to avoid 100% usage of CPU by this method"},{"line_number":208,"context_line":"                rutils.interruptable_sleep(0.001)"},{"line_number":209,"context_line":""},{"line_number":210,"context_line":"            while not result_queue.empty():"},{"line_number":211,"context_line":"                self._send_result(result_queue.get())"}],"source_content_type":"text/x-python","patch_set":1,"id":"9ad45d7e_75c4eb5e","line":208,"updated":"2016-08-12 12:53:34.000000000","message":"see my comment in engine.py","commit_id":"6223ad09dacc80b7389593f2f07b5daf6aaef0d9"}]}
