)]}'
{"oslo_utils/eventletutils.py":[{"author":{"_account_id":29222,"name":"Natal Ngétal","email":"hobbestigrou@erakis.eu","username":"hobbestigrou"},"change_message_id":"a100cfc93ef206e5f498dc178044bad8cd85eeb6","unresolved":false,"context_lines":[{"line_number":152,"context_line":"    def clear(self):"},{"line_number":153,"context_line":"        try:"},{"line_number":154,"context_line":"            old_event \u003d self._event"},{"line_number":155,"context_line":"            old_event.send(True)"},{"line_number":156,"context_line":"        except AttributeError:"},{"line_number":157,"context_line":"            # no old event exist"},{"line_number":158,"context_line":"            # nothing to do and nothing to send"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_56c1d34e","line":155,"updated":"2018-11-16 09:43:39.000000000","message":"If you prefer use this syntax, I recommend to move this line in a else section.","commit_id":"2c0e070d4299b67e131e4df6be02de0f1c414785"},{"author":{"_account_id":29222,"name":"Natal Ngétal","email":"hobbestigrou@erakis.eu","username":"hobbestigrou"},"change_message_id":"a100cfc93ef206e5f498dc178044bad8cd85eeb6","unresolved":false,"context_lines":[{"line_number":153,"context_line":"        try:"},{"line_number":154,"context_line":"            old_event \u003d self._event"},{"line_number":155,"context_line":"            old_event.send(True)"},{"line_number":156,"context_line":"        except AttributeError:"},{"line_number":157,"context_line":"            # no old event exist"},{"line_number":158,"context_line":"            # nothing to do and nothing to send"},{"line_number":159,"context_line":"            pass"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_36b9b7ea","line":156,"updated":"2018-11-16 09:43:39.000000000","message":"Why don\u0027t simply use the getattr function in this case ?","commit_id":"2c0e070d4299b67e131e4df6be02de0f1c414785"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"70393885777ae2ee2fbc5511cdee5b605b7fa26f","unresolved":false,"context_lines":[{"line_number":151,"context_line":""},{"line_number":152,"context_line":"    def clear(self):"},{"line_number":153,"context_line":"        old_event \u003d getattr(self, \"_event\", None)"},{"line_number":154,"context_line":"        if old_event:"},{"line_number":155,"context_line":"            old_event.send(True)"},{"line_number":156,"context_line":"        self._set \u003d False"},{"line_number":157,"context_line":"        self._event \u003d _eventlet.event.Event()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_562bc27b","line":154,"updated":"2018-11-22 00:52:09.000000000","message":"nit: Event doesn\u0027t define __nonzero__ so this is OK, but I\u0027d feel more comfortable if this checked for \u0027is not None\u0027 specifically.","commit_id":"d01ff324d7a49df4699d6e0eeacb9d1b12c46d73"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"70393885777ae2ee2fbc5511cdee5b605b7fa26f","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        self._event.send(True)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def wait(self, timeout\u003dNone):"},{"line_number":172,"context_line":"        event \u003d self._event"},{"line_number":173,"context_line":"        while True:"},{"line_number":174,"context_line":"            with _eventlet.timeout.Timeout(timeout, False):"},{"line_number":175,"context_line":"                event.wait()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_7059255a","line":172,"updated":"2018-11-22 00:52:09.000000000","message":"Doesn\u0027t this have to be inside the while True loop? Otherwise when the old event is triggered from clear(), it\u0027ll go right back to waiting for the old event again - and in fact continue doing so forever.","commit_id":"d01ff324d7a49df4699d6e0eeacb9d1b12c46d73"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"88593a5d2f768413cc718d5ab99d606f39386bb8","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        self._event.send(True)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def wait(self, timeout\u003dNone):"},{"line_number":172,"context_line":"        event \u003d self._event"},{"line_number":173,"context_line":"        while True:"},{"line_number":174,"context_line":"            with _eventlet.timeout.Timeout(timeout, False):"},{"line_number":175,"context_line":"                event.wait()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_d337d9da","line":172,"in_reply_to":"3f79a3b5_7059255a","updated":"2018-11-22 14:34:08.000000000","message":"If you put event initialization inside the True loop then the \u0027if\u0027 statement become useless... self._event and event are already equal","commit_id":"d01ff324d7a49df4699d6e0eeacb9d1b12c46d73"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"46653b87d3472c2d7dfa56aaedcc19610547e1ce","unresolved":false,"context_lines":[{"line_number":169,"context_line":"        self._event.send(True)"},{"line_number":170,"context_line":""},{"line_number":171,"context_line":"    def wait(self, timeout\u003dNone):"},{"line_number":172,"context_line":"        event \u003d self._event"},{"line_number":173,"context_line":"        while True:"},{"line_number":174,"context_line":"            with _eventlet.timeout.Timeout(timeout, False):"},{"line_number":175,"context_line":"                event.wait()"}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_73ff9efe","line":172,"in_reply_to":"3f79a3b5_d337d9da","updated":"2018-11-27 18:37:20.000000000","message":"The whole point of the patch is that the value of self._event can change during the call to event.wait().","commit_id":"d01ff324d7a49df4699d6e0eeacb9d1b12c46d73"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"70393885777ae2ee2fbc5511cdee5b605b7fa26f","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        while True:"},{"line_number":174,"context_line":"            with _eventlet.timeout.Timeout(timeout, False):"},{"line_number":175,"context_line":"                event.wait()"},{"line_number":176,"context_line":"            if event is not self._event:"},{"line_number":177,"context_line":"                continue"},{"line_number":178,"context_line":"            break"},{"line_number":179,"context_line":"        return self.is_set()"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_504c2996","line":177,"range":{"start_line":176,"start_character":0,"end_line":177,"end_character":24},"updated":"2018-11-22 00:52:09.000000000","message":"I think this should be inside the \u0027if\u0027 statement - if the event times out we never want to wait for it again.\n\nIn theory we also want to adjust the timeout down to account for any time elapsed since we first started waiting.","commit_id":"d01ff324d7a49df4699d6e0eeacb9d1b12c46d73"},{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"88593a5d2f768413cc718d5ab99d606f39386bb8","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        while True:"},{"line_number":174,"context_line":"            with _eventlet.timeout.Timeout(timeout, False):"},{"line_number":175,"context_line":"                event.wait()"},{"line_number":176,"context_line":"            if event is not self._event:"},{"line_number":177,"context_line":"                continue"},{"line_number":178,"context_line":"            break"},{"line_number":179,"context_line":"        return self.is_set()"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_f3177541","line":177,"range":{"start_line":176,"start_character":0,"end_line":177,"end_character":24},"in_reply_to":"3f79a3b5_504c2996","updated":"2018-11-22 14:34:08.000000000","message":"Why should be inside the \u0027if\u0027 statement? the \u0027event.wait()\u0027?","commit_id":"d01ff324d7a49df4699d6e0eeacb9d1b12c46d73"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"46653b87d3472c2d7dfa56aaedcc19610547e1ce","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        while True:"},{"line_number":174,"context_line":"            with _eventlet.timeout.Timeout(timeout, False):"},{"line_number":175,"context_line":"                event.wait()"},{"line_number":176,"context_line":"            if event is not self._event:"},{"line_number":177,"context_line":"                continue"},{"line_number":178,"context_line":"            break"},{"line_number":179,"context_line":"        return self.is_set()"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_53086223","line":177,"range":{"start_line":176,"start_character":0,"end_line":177,"end_character":24},"in_reply_to":"3f79a3b5_f3177541","updated":"2018-11-27 18:37:20.000000000","message":"Sorry, my comment was very confusing. It should have read \"be inside the \u0027with\u0027 statement\" (not the \u0027if\u0027 statement).","commit_id":"d01ff324d7a49df4699d6e0eeacb9d1b12c46d73"},{"author":{"_account_id":4257,"name":"Zane Bitter","email":"zbitter@redhat.com","username":"zaneb"},"change_message_id":"70393885777ae2ee2fbc5511cdee5b605b7fa26f","unresolved":false,"context_lines":[{"line_number":175,"context_line":"                event.wait()"},{"line_number":176,"context_line":"            if event is not self._event:"},{"line_number":177,"context_line":"                continue"},{"line_number":178,"context_line":"            break"},{"line_number":179,"context_line":"        return self.is_set()"},{"line_number":180,"context_line":""},{"line_number":181,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"3f79a3b5_901ba182","line":178,"updated":"2018-11-22 00:52:09.000000000","message":"nit: Given that we\u0027re breaking to the return statement, it would be more readable to just put the return statement here IMHO.","commit_id":"d01ff324d7a49df4699d6e0eeacb9d1b12c46d73"},{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"055194520576d864d5f008222d129c99d9e0c85f","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        with timeutils.StopWatch(timeout) as timer:"},{"line_number":175,"context_line":"            while True:"},{"line_number":176,"context_line":"                event \u003d self._event"},{"line_number":177,"context_line":"                with _eventlet.timeout.Timeout(timer.leftover(), False):"},{"line_number":178,"context_line":"                    event.wait()"},{"line_number":179,"context_line":"                    if event is not self._event:"},{"line_number":180,"context_line":"                        continue"}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_7bb04c42","line":177,"range":{"start_line":177,"start_character":47,"end_line":177,"end_character":63},"updated":"2018-12-04 18:11:12.000000000","message":"This raises a RuntimeError if timeout is None.\n\nhttps://github.com/openstack/oslo.utils/blob/master/oslo_utils/timeutils.py#L507\n\nBased on the previous behavior, I think we want it to be timer.leftover(return_none\u003dTrue).","commit_id":"bd8f1d2ceb618f5ddeab20582167b7082ff04d60"}],"oslo_utils/tests/test_eventletutils.py":[{"author":{"_account_id":6928,"name":"Ben Nemec","email":"openstack@nemebean.com","username":"bnemec"},"change_message_id":"055194520576d864d5f008222d129c99d9e0c85f","unresolved":false,"context_lines":[{"line_number":157,"context_line":"        event \u003d eventletutils._Event()"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"        def thread_a():"},{"line_number":160,"context_line":"            self.assertTrue(event.wait(2))"},{"line_number":161,"context_line":""},{"line_number":162,"context_line":"        a \u003d greenthread.spawn(thread_a)"},{"line_number":163,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"3f79a3b5_fb0bfc29","line":160,"range":{"start_line":160,"start_character":39,"end_line":160,"end_character":40},"updated":"2018-12-04 18:11:12.000000000","message":"If we remove the timeout here it tests the case I mentioned in the other file, and since we wrap the whole thing in a timeout object anyway we shouldn\u0027t need to worry about it hanging. We test the actual timeout functionality in the next test so I don\u0027t think we lose any coverage.","commit_id":"bd8f1d2ceb618f5ddeab20582167b7082ff04d60"}]}
