)]}'
{"oslo_messaging/_executors/base.py":[{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"40e03a80132fa9044b5c7df95314befd6ee8a0c3","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\"Wait until the executor has stopped polling."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        If a timeout is provided, and it is not ``None`` then this method will"},{"line_number":44,"context_line":"        wait up to that amount of time for its components to finish, if not"},{"line_number":45,"context_line":"        all components finish in the alloted time, then false will be returned"},{"line_number":46,"context_line":"        otherwise true will be returned."},{"line_number":47,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_457024a4","line":44,"updated":"2015-08-31 17:50:21.000000000","message":"Implementation of this method allows waiting up to 2*timeout amount of time, so this comment or implementation should be fixed.","commit_id":"4c8904abd13e0184dac398725b07775e56c9aed5"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"49f38e346bcec5fd6108509fd030556bfdedd97c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\"Wait until the executor has stopped polling."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        If a timeout is provided, and it is not ``None`` then this method will"},{"line_number":44,"context_line":"        wait up to that amount of time for its components to finish, if not"},{"line_number":45,"context_line":"        all components finish in the alloted time, then false will be returned"},{"line_number":46,"context_line":"        otherwise true will be returned."},{"line_number":47,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_687b8b2a","line":44,"in_reply_to":"da20952f_457024a4","updated":"2015-09-01 15:14:14.000000000","message":"Where do u see 2*timeout being applicable?\n\nThe usage of \u0027w.leftover(return_none\u003dTrue)\u0027 in the code here in the implementation should ensure that the remaining time is always used in the next waiting function...","commit_id":"4c8904abd13e0184dac398725b07775e56c9aed5"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"d49447209939eb36b9b7421d54835687535996d9","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\"Wait until the executor has stopped polling."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        If a timeout is provided, and it is not ``None`` then this method will"},{"line_number":44,"context_line":"        wait up to that amount of time for its components to finish, if not"},{"line_number":45,"context_line":"        all components finish in the alloted time, then false will be returned"},{"line_number":46,"context_line":"        otherwise true will be returned."},{"line_number":47,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_b324b860","line":44,"in_reply_to":"da20952f_687b8b2a","updated":"2015-09-01 15:30:19.000000000","message":"For example:\n\n    \u003e\u003e\u003e from oslo_utils import timeutils\n    \u003e\u003e\u003e w \u003d timeutils.StopWatch(duration\u003d15)\n    \u003e\u003e\u003e w.start()\n    \u003coslo_utils.timeutils.StopWatch object at 0x7f7c56b77890\u003e\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    12.880894476999998\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    11.721107713999999\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    9.712502978999993\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    8.488958316000009\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    7.680596699999995\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    6.904946908999989\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    6.184224210999986\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    4.352965345000001\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    2.279386684000002\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    1.1845297069999958\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    0.3605214760000024\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    0.0\n    \u003e\u003e\u003e w.leftover(return_none\u003dTrue)\n    0.0\n\nTime is always decrementing there, so whatever is leftover is used in further \u0027wait\u0027 calls","commit_id":"4c8904abd13e0184dac398725b07775e56c9aed5"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"273e06e4a2e09fa1f87b78e91ea311280a21f461","unresolved":false,"context_lines":[{"line_number":41,"context_line":"        \"\"\"Wait until the executor has stopped polling."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"        If a timeout is provided, and it is not ``None`` then this method will"},{"line_number":44,"context_line":"        wait up to that amount of time for its components to finish, if not"},{"line_number":45,"context_line":"        all components finish in the alloted time, then false will be returned"},{"line_number":46,"context_line":"        otherwise true will be returned."},{"line_number":47,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":7,"id":"da20952f_980f4c2e","line":44,"in_reply_to":"da20952f_b324b860","updated":"2015-09-01 16:26:46.000000000","message":"You are right, my confusion","commit_id":"4c8904abd13e0184dac398725b07775e56c9aed5"}],"oslo_messaging/tests/executors/test_executor.py":[{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"bceceb7d003a51f2e54b9c999d1dedf5a09ccb0e","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        listener.poll.side_effect \u003d fake_poll"},{"line_number":163,"context_line":"        thread \u003d self._run_in_thread(run_executor, executor)"},{"line_number":164,"context_line":"        self.assertFalse(executor.wait(timeout\u003d0.1))"},{"line_number":165,"context_line":"        thread.join()"},{"line_number":166,"context_line":"        self.assertTrue(executor.wait())"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5a2ca52d_9ea42109","line":164,"updated":"2015-10-13 10:21:02.000000000","message":"You should use a timeout shorter than the sleep (or increase the sleep) to make the test more reliable.","commit_id":"123a0371c4cd9133ea31d05808f6ef07548ee484"},{"author":{"_account_id":1297,"name":"Joshua Harlow","email":"jxharlow@godaddy.com","username":"harlowja"},"change_message_id":"4ca2c23a26f06ccfcbf9cf882db60d4a26df7857","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        listener.poll.side_effect \u003d fake_poll"},{"line_number":163,"context_line":"        thread \u003d self._run_in_thread(run_executor, executor)"},{"line_number":164,"context_line":"        self.assertFalse(executor.wait(timeout\u003d0.1))"},{"line_number":165,"context_line":"        thread.join()"},{"line_number":166,"context_line":"        self.assertTrue(executor.wait())"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5a2ca52d_c3ca67a1","line":164,"in_reply_to":"5a2ca52d_9ea42109","updated":"2015-10-15 00:17:50.000000000","message":"fake_poll should be called 10 times, so thats 1 second of total sleep time right? 0.1 \u003c 1.0","commit_id":"123a0371c4cd9133ea31d05808f6ef07548ee484"},{"author":{"_account_id":9107,"name":"Victor Stinner","email":"vstinner@redhat.com","username":"haypo"},"change_message_id":"b588445fac13022837f133af81aed9121055c802","unresolved":false,"context_lines":[{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        listener.poll.side_effect \u003d fake_poll"},{"line_number":163,"context_line":"        thread \u003d self._run_in_thread(run_executor, executor)"},{"line_number":164,"context_line":"        self.assertFalse(executor.wait(timeout\u003d0.1))"},{"line_number":165,"context_line":"        thread.join()"},{"line_number":166,"context_line":"        self.assertTrue(executor.wait())"},{"line_number":167,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"5a2ca52d_fb786391","line":164,"in_reply_to":"5a2ca52d_c3ca67a1","updated":"2015-10-15 06:55:53.000000000","message":"Oh, I didn\u0027t notice that fake_poll() is called 10 times. Sorry, in this case it\u0027s ok :-)","commit_id":"123a0371c4cd9133ea31d05808f6ef07548ee484"}]}
