)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":35587,"name":"Hiroki Narukawa","email":"hnarukaw@lycorp.co.jp","username":"nhirokinet"},"change_message_id":"0df7281b4a4f884fe8a194bcc2920a3c4b600176","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"ea4c0ede_afa44ad5","updated":"2023-07-07 04:55:28.000000000","message":"Hi, how is the status of this patch? For each comments I applied or commented, do I have other actions to advance this patch?","commit_id":"8167b857ca60a7707e9368e11af0b15edae91b8c"}],"futurist/_futures.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5bbf0ba427461f04a9cc1f82f44de0544ab8a0df","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                self._shutdown \u003d True"},{"line_number":410,"context_line":"        if wait:"},{"line_number":411,"context_line":"            self._delayed_work.join()"},{"line_number":412,"context_line":"            self._pool.waitall()"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"class ExecutorStatistics(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"5ef2128d_2bae57b9","line":412,"updated":"2022-12-12 16:18:46.000000000","message":"Are you sure these are safe to call twice?","commit_id":"8637cc49a02d38ba34ceb136aa636d8c5023b50a"},{"author":{"_account_id":35587,"name":"Hiroki Narukawa","email":"hnarukaw@lycorp.co.jp","username":"nhirokinet"},"change_message_id":"da258d913db8cafdf20644db8eca1e6e9ce0e8b1","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                self._shutdown \u003d True"},{"line_number":410,"context_line":"        if wait:"},{"line_number":411,"context_line":"            self._delayed_work.join()"},{"line_number":412,"context_line":"            self._pool.waitall()"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"class ExecutorStatistics(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"75e9b232_9fc6a1fc","line":412,"in_reply_to":"5ef2128d_2bae57b9","updated":"2022-12-13 05:30:55.000000000","message":"waitall() comes down to eventlet.event.Event.wait(). Reading the comment below, it seems to support multiple calls.\n\nhttps://github.com/eventlet/eventlet/blob/85290a11dd5c5f511a45f4010b512eedfef87000/eventlet/event.py#L17-L18\n\nBut of course it is possible to modify GreenThreadPoolExecutor so that it will have the additional flag whether shutdown with wait\u003dTrue is already called or not. Is it better to do so?","commit_id":"8637cc49a02d38ba34ceb136aa636d8c5023b50a"},{"author":{"_account_id":35587,"name":"Hiroki Narukawa","email":"hnarukaw@lycorp.co.jp","username":"nhirokinet"},"change_message_id":"6b2b0ae2a0e30b10170629ab6ea95e8097edb849","unresolved":false,"context_lines":[{"line_number":409,"context_line":"                self._shutdown \u003d True"},{"line_number":410,"context_line":"        if wait:"},{"line_number":411,"context_line":"            self._delayed_work.join()"},{"line_number":412,"context_line":"            self._pool.waitall()"},{"line_number":413,"context_line":""},{"line_number":414,"context_line":""},{"line_number":415,"context_line":"class ExecutorStatistics(object):"}],"source_content_type":"text/x-python","patch_set":1,"id":"6c498c17_610a3c34","line":412,"in_reply_to":"75e9b232_9fc6a1fc","updated":"2022-12-13 09:52:49.000000000","message":"I missed checking about self.delayed_work.join() in the comment above, but yet this came down to eventlet.event.Event.wait() via eventlet.queue.Queue.join(), so the both two lines seems to be okay to be called many times.\n\nhttps://github.com/eventlet/eventlet/blob/85290a11dd5c5f511a45f4010b512eedfef87000/eventlet/queue.py#L461","commit_id":"8637cc49a02d38ba34ceb136aa636d8c5023b50a"}],"futurist/tests/test_executors.py":[{"author":{"_account_id":10239,"name":"Dmitry Tantsur","email":"dtantsur@protonmail.com","username":"dtantsur"},"change_message_id":"5bbf0ba427461f04a9cc1f82f44de0544ab8a0df","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            # Skipping this behavior as intended behavior,"},{"line_number":145,"context_line":"            # because concurrent.futures.ProcessPoolExecutor raises"},{"line_number":146,"context_line":"            # on shutdown(wait\u003dFalse)"},{"line_number":147,"context_line":"            return"},{"line_number":148,"context_line":"        self.executor.submit(delayed, 0.2)"},{"line_number":149,"context_line":"        self.executor.shutdown(wait\u003dFalse)"},{"line_number":150,"context_line":"        self.executor.shutdown(wait\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"575493aa_435ac425","line":147,"updated":"2022-12-12 16:18:46.000000000","message":"I think there is a way to mark a test as skipped (self.skip or some exception)","commit_id":"8637cc49a02d38ba34ceb136aa636d8c5023b50a"},{"author":{"_account_id":35587,"name":"Hiroki Narukawa","email":"hnarukaw@lycorp.co.jp","username":"nhirokinet"},"change_message_id":"da258d913db8cafdf20644db8eca1e6e9ce0e8b1","unresolved":false,"context_lines":[{"line_number":144,"context_line":"            # Skipping this behavior as intended behavior,"},{"line_number":145,"context_line":"            # because concurrent.futures.ProcessPoolExecutor raises"},{"line_number":146,"context_line":"            # on shutdown(wait\u003dFalse)"},{"line_number":147,"context_line":"            return"},{"line_number":148,"context_line":"        self.executor.submit(delayed, 0.2)"},{"line_number":149,"context_line":"        self.executor.shutdown(wait\u003dFalse)"},{"line_number":150,"context_line":"        self.executor.shutdown(wait\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":1,"id":"661c8df4_6341fd9c","line":147,"in_reply_to":"575493aa_435ac425","updated":"2022-12-13 05:30:55.000000000","message":"Changed it to skip in patch set 2.","commit_id":"8637cc49a02d38ba34ceb136aa636d8c5023b50a"}]}
