)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"23061158753c3a27373c2d488dc8a4bfa0f44c75","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"1de1ecb2_25b920c0","updated":"2024-05-02 13:33:24.000000000","message":"i need to restack with ceph to actully test this but we can get some result form the ci in the mean time.","commit_id":"6383abc2c74cf14b1704b80ed1cf8f56a8f20401"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"e957578cad0f5a91c40b2d77fd1b64c83ab8a4ad","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"af35a88e_3ba33aec","updated":"2024-05-14 11:24:16.000000000","message":"im going to rework this a bit based on stephens comments on the previous patch but i want to wait for ci to run before i do that.","commit_id":"9f1d6b553701cb81843dc48f2bca66f482daa15d"},{"author":{"_account_id":9708,"name":"Balazs Gibizer","display_name":"gibi","email":"gibizer@gmail.com","username":"gibi"},"change_message_id":"b77e7a4ebfbec46db77093d35188415d750c6644","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a4db4c54_55becd1b","updated":"2024-08-26 15:14:44.000000000","message":"looks OK to me.","commit_id":"2ea9807d01987925beab7abdc05794012aaf2aee"}],"nova/storage/rbd_utils.py":[{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"550d488300393b307f5a10ced04788c0d18dcca9","unresolved":true,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"def execute(func, *args, **kwargs):"},{"line_number":67,"context_line":"    \"\"\"Run func in a global executor\"\"\""},{"line_number":68,"context_line":"    LOG.debug("},{"line_number":69,"context_line":"        f\"RBD Executor, \""},{"line_number":70,"context_line":"        f\"submitting function:{func.__name__} with args: {args} \""},{"line_number":71,"context_line":"        f\"and kwargs:{kwargs}\")"},{"line_number":72,"context_line":"    # yield to allow opportunity for logging to happen"},{"line_number":73,"context_line":"    utils.coopretive_yield()"},{"line_number":74,"context_line":"    ret \u003d utils.pass_context("}],"source_content_type":"text/x-python","patch_set":1,"id":"bcdd23e3_c0c7ef27","line":71,"range":{"start_line":68,"start_character":3,"end_line":71,"end_character":31},"updated":"2024-05-02 16:55:40.000000000","message":"this is not logging in the ci jobs","commit_id":"6383abc2c74cf14b1704b80ed1cf8f56a8f20401"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3298c3896b51273110fe44fd917c45a792641f9d","unresolved":false,"context_lines":[{"line_number":65,"context_line":""},{"line_number":66,"context_line":"def execute(func, *args, **kwargs):"},{"line_number":67,"context_line":"    \"\"\"Run func in a global executor\"\"\""},{"line_number":68,"context_line":"    LOG.debug("},{"line_number":69,"context_line":"        f\"RBD Executor, \""},{"line_number":70,"context_line":"        f\"submitting function:{func.__name__} with args: {args} \""},{"line_number":71,"context_line":"        f\"and kwargs:{kwargs}\")"},{"line_number":72,"context_line":"    # yield to allow opportunity for logging to happen"},{"line_number":73,"context_line":"    utils.coopretive_yield()"},{"line_number":74,"context_line":"    ret \u003d utils.pass_context("}],"source_content_type":"text/x-python","patch_set":1,"id":"dfd9df3c_f6b297bd","line":71,"range":{"start_line":68,"start_character":3,"end_line":71,"end_character":31},"in_reply_to":"bcdd23e3_c0c7ef27","updated":"2024-05-16 12:47:23.000000000","message":"Done","commit_id":"6383abc2c74cf14b1704b80ed1cf8f56a8f20401"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"23061158753c3a27373c2d488dc8a4bfa0f44c75","unresolved":true,"context_lines":[{"line_number":92,"context_line":"    # with this approach we would keep the existing proxies but"},{"line_number":93,"context_line":"    # wrap the rbd functions so that they execute on the thread pool"},{"line_number":94,"context_line":"    # and maintain the apparent synchronous invocation internally by"},{"line_number":95,"context_line":"    # waiting for the result of the future and returning that result"},{"line_number":96,"context_line":"    def _execute_wrapper(self, attr):"},{"line_number":97,"context_line":"        attrib \u003d getattr(self._rbd, attr)"},{"line_number":98,"context_line":"        if not callable(attrib):"}],"source_content_type":"text/x-python","patch_set":1,"id":"f2d674c8_705271b5","line":95,"updated":"2024-05-02 13:33:24.000000000","message":"this is similar but not identical to what i did in \nhttps://review.opendev.org/c/openstack/nova/+/900682/1/nova/storage/rbd_utils.py\n\nthe main delta is im not using gevent and i am using a dedicated thread pool for rbd.","commit_id":"6383abc2c74cf14b1704b80ed1cf8f56a8f20401"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3298c3896b51273110fe44fd917c45a792641f9d","unresolved":false,"context_lines":[{"line_number":92,"context_line":"    # with this approach we would keep the existing proxies but"},{"line_number":93,"context_line":"    # wrap the rbd functions so that they execute on the thread pool"},{"line_number":94,"context_line":"    # and maintain the apparent synchronous invocation internally by"},{"line_number":95,"context_line":"    # waiting for the result of the future and returning that result"},{"line_number":96,"context_line":"    def _execute_wrapper(self, attr):"},{"line_number":97,"context_line":"        attrib \u003d getattr(self._rbd, attr)"},{"line_number":98,"context_line":"        if not callable(attrib):"}],"source_content_type":"text/x-python","patch_set":1,"id":"a49e3a38_7f212f0d","line":95,"in_reply_to":"f2d674c8_705271b5","updated":"2024-05-16 12:47:23.000000000","message":"Acknowledged","commit_id":"6383abc2c74cf14b1704b80ed1cf8f56a8f20401"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"550d488300393b307f5a10ced04788c0d18dcca9","unresolved":true,"context_lines":[{"line_number":109,"context_line":"        return wrapper"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def __getattr__(self, attr):"},{"line_number":112,"context_line":"        return getattr(self._rbd, attr)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"# TODO(sean-k-mooney): use executor instead of tpool.Proxy"},{"line_number":115,"context_line":"# the second approach I\u0027m considering is removing all the proxies"}],"source_content_type":"text/x-python","patch_set":1,"id":"20f2b144_00d34ef3","line":112,"updated":"2024-05-02 16:55:40.000000000","message":"... it would help if i called _execute_wrapper here","commit_id":"6383abc2c74cf14b1704b80ed1cf8f56a8f20401"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"3298c3896b51273110fe44fd917c45a792641f9d","unresolved":false,"context_lines":[{"line_number":109,"context_line":"        return wrapper"},{"line_number":110,"context_line":""},{"line_number":111,"context_line":"    def __getattr__(self, attr):"},{"line_number":112,"context_line":"        return getattr(self._rbd, attr)"},{"line_number":113,"context_line":""},{"line_number":114,"context_line":"# TODO(sean-k-mooney): use executor instead of tpool.Proxy"},{"line_number":115,"context_line":"# the second approach I\u0027m considering is removing all the proxies"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fecff9f_179ec82b","line":112,"in_reply_to":"20f2b144_00d34ef3","updated":"2024-05-16 12:47:23.000000000","message":"Done","commit_id":"6383abc2c74cf14b1704b80ed1cf8f56a8f20401"}],"nova/utils.py":[{"author":{"_account_id":28522,"name":"Hervé Beraud","email":"herveberaud.pro@gmail.com","username":"hberaud"},"change_message_id":"4590c45f891c1b646caca3968446256fb7a270ba","unresolved":true,"context_lines":[{"line_number":691,"context_line":""},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"def coopretive_yield():"},{"line_number":694,"context_line":"    if eventletutils.is_monkey_patched(\u0027thread\u0027):"},{"line_number":695,"context_line":"        eventlet.sleep(0)"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"# TODO(sean-k-mooney: make this delegate to execute"}],"source_content_type":"text/x-python","patch_set":4,"id":"d106208c_1f89bfba","line":694,"range":{"start_line":694,"start_character":4,"end_line":694,"end_character":49},"updated":"2024-05-16 13:42:05.000000000","message":"Again https://review.opendev.org/c/openstack/nova/+/905284/comment/c6dd22a2_70eeabf9/\n\nThe threading module would may at some points unpatched, while the time module would may still patched...\n\nI\u0027d suggest to not much trust it.","commit_id":"9f1d6b553701cb81843dc48f2bca66f482daa15d"},{"author":{"_account_id":11604,"name":"sean mooney","email":"smooney@redhat.com","username":"sean-k-mooney"},"change_message_id":"8ebdd2d9d3a406b6d7ce1fcea351e58b3597beac","unresolved":true,"context_lines":[{"line_number":691,"context_line":""},{"line_number":692,"context_line":""},{"line_number":693,"context_line":"def coopretive_yield():"},{"line_number":694,"context_line":"    if eventletutils.is_monkey_patched(\u0027thread\u0027):"},{"line_number":695,"context_line":"        eventlet.sleep(0)"},{"line_number":696,"context_line":""},{"line_number":697,"context_line":"# TODO(sean-k-mooney: make this delegate to execute"}],"source_content_type":"text/x-python","patch_set":4,"id":"00e10ec0_ae05fd73","line":694,"range":{"start_line":694,"start_character":4,"end_line":694,"end_character":49},"in_reply_to":"d106208c_1f89bfba","updated":"2024-05-16 14:15:42.000000000","message":"it wont be unless there is a bug in eventlet.\n\nnova patches everythin unless we have the debugging supprot enabeld which does not actully work properly so this comment is not really releven based on how nova uses eventlet.\n\nim also likely going to clean up this ambigurity by droping the debug support in an earler patch because having used it in the past i can say it does not help with debugging.","commit_id":"9f1d6b553701cb81843dc48f2bca66f482daa15d"}]}
