)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"99dc141e47d5e115c792f1b111566e23e3145175","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"21e59acc_ebcfed39","updated":"2026-04-23 06:38:31.000000000","message":"No unit tests for concurrency_mode_threading() and tpool_wrap() and test_semaphore_eventlet_mode need update","commit_id":"0631aef90c55a6d174bf1d773e0e620d5cd1c658"},{"author":{"_account_id":5314,"name":"Brian Rosmaita","email":"rosmaita.fossdev@gmail.com","username":"brian-rosmaita"},"change_message_id":"f56e1d29e8fef18f77bd4ed41244bbd5844550a3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"02a21737_e2f5724d","updated":"2026-05-05 19:24:21.000000000","message":"Code LGTM.  All current tests pass, so looks like we haven\u0027t caused any regressions.","commit_id":"9cd9023f8c80fbd4eb49dcc1cafbd35f13d35905"}],"cinder/utils.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"84b9ce687cd78a2887df0c0b31ac33ad46ffc179","unresolved":true,"context_lines":[{"line_number":80,"context_line":"    return not monkey_patch.is_patched()"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def tpool_wrap(obj: Any, autowrap: Tuple[Type[Any], ...] \u003d ()) -\u003e Any:"},{"line_number":84,"context_line":"    \"\"\"Wrap obj so blocking I/O does not stall the event loop."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    Under eventlet, wraps *obj* with ``tpool.Proxy`` so every method call"}],"source_content_type":"text/x-python","patch_set":4,"id":"fe58756f_e194f005","line":83,"range":{"start_line":83,"start_character":35,"end_line":83,"end_character":40},"updated":"2026-04-27 19:47:47.000000000","message":"Can use lowercase \"tuple[]\" instead of Tuple here.","commit_id":"0631aef90c55a6d174bf1d773e0e620d5cd1c658"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"d4563ba0bb703d0f7959206558cb623186a4d533","unresolved":false,"context_lines":[{"line_number":80,"context_line":"    return not monkey_patch.is_patched()"},{"line_number":81,"context_line":""},{"line_number":82,"context_line":""},{"line_number":83,"context_line":"def tpool_wrap(obj: Any, autowrap: Tuple[Type[Any], ...] \u003d ()) -\u003e Any:"},{"line_number":84,"context_line":"    \"\"\"Wrap obj so blocking I/O does not stall the event loop."},{"line_number":85,"context_line":""},{"line_number":86,"context_line":"    Under eventlet, wraps *obj* with ``tpool.Proxy`` so every method call"}],"source_content_type":"text/x-python","patch_set":4,"id":"9d38cc21_f0ca2b7e","line":83,"range":{"start_line":83,"start_character":35,"end_line":83,"end_character":40},"in_reply_to":"fe58756f_e194f005","updated":"2026-05-05 11:39:15.000000000","message":"Done","commit_id":"0631aef90c55a6d174bf1d773e0e620d5cd1c658"}]}
