)]}'
{"cinder/backup/chunkeddriver.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"94a2af0cb05df8742cd8556219ea3e96941d5976","unresolved":true,"context_lines":[{"line_number":407,"context_line":"        object_meta[\u0027list\u0027] \u003d object_list"},{"line_number":408,"context_line":"        object_meta[\u0027id\u0027] \u003d object_id"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"        time.sleep(0)"},{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    def _prepare_output_data(self, data):"},{"line_number":413,"context_line":"        if self.compressor is None:"}],"source_content_type":"text/x-python","patch_set":10,"id":"9e8671f5_a16aa3e9","line":410,"updated":"2026-04-06 12:43:44.000000000","message":"eventlet.sleep(0)\n and time.sleep(0) are different as far as i understand?","commit_id":"eec9131d47ffd3f8243cc7dcff3abf72d6b26c6b"}],"cinder/utils.py":[{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"e763f8fd576d39b1afece85ccfe7468c5901f443","unresolved":true,"context_lines":[{"line_number":99,"context_line":"    return tpool.Proxy(obj)"},{"line_number":100,"context_line":""},{"line_number":101,"context_line":""},{"line_number":102,"context_line":"def thread_sleep(seconds: float) -\u003e None:"},{"line_number":103,"context_line":"    \"\"\"Sleep while yielding control appropriately for the current mode."},{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    Uses ``eventlet.sleep`` under eventlet so other greenthreads can run,"}],"source_content_type":"text/x-python","patch_set":2,"id":"1d6ede60_cd9f9add","line":102,"updated":"2026-02-24 20:39:50.000000000","message":"This method is unnecessary, you can just use time.sleep() and eventlet monkey_patching will handle it when in eventlet mode.","commit_id":"50e1083f496bac168ebc6fb1e5e16d6d9573f8db"},{"author":{"_account_id":4523,"name":"Eric Harney","email":"eharney@redhat.com","username":"eharney"},"change_message_id":"fd74d3add261026f6efd901884d81d3d38944021","unresolved":true,"context_lines":[{"line_number":85,"context_line":"    return val in (\u00271\u0027, \u0027true\u0027, \u0027yes\u0027)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def tpool_wrap(obj: object) -\u003e object:"},{"line_number":89,"context_line":"    \"\"\"Wrap obj so blocking I/O does not stall the event loop."},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    Under eventlet, wraps *obj* with ``tpool.Proxy`` so every method call"}],"source_content_type":"text/x-python","patch_set":10,"id":"b9a95e04_6e7f7d77","line":88,"range":{"start_line":88,"start_character":4,"end_line":88,"end_character":14},"updated":"2026-04-02 14:44:45.000000000","message":"Please split this into another patch so it can be used by I0b0e32282 for the RBD driver.","commit_id":"eec9131d47ffd3f8243cc7dcff3abf72d6b26c6b"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"94a2af0cb05df8742cd8556219ea3e96941d5976","unresolved":true,"context_lines":[{"line_number":1049,"context_line":"        # Eventlet does not work with multiprocessing\u0027s Semaphore, so we have"},{"line_number":1050,"context_line":"        # to execute it in a native thread to avoid getting blocked when trying"},{"line_number":1051,"context_line":"        # to acquire the semaphore."},{"line_number":1052,"context_line":"        return tpool.execute(self.semaphore.__enter__)"},{"line_number":1053,"context_line":""},{"line_number":1054,"context_line":"    def __exit__(self, *args):"},{"line_number":1055,"context_line":"        # Don\u0027t use native thread for exit, as it will only add overhead"}],"source_content_type":"text/x-python","patch_set":10,"id":"5d078bf2_48caee1b","line":1052,"updated":"2026-04-06 12:43:44.000000000","message":"unconditionally calls `tpool.execute(self.semaphore.__enter__)`, which relies on eventlet\u0027s tpool","commit_id":"eec9131d47ffd3f8243cc7dcff3abf72d6b26c6b"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"94a2af0cb05df8742cd8556219ea3e96941d5976","unresolved":true,"context_lines":[{"line_number":1050,"context_line":"        # to execute it in a native thread to avoid getting blocked when trying"},{"line_number":1051,"context_line":"        # to acquire the semaphore."},{"line_number":1052,"context_line":"        return tpool.execute(self.semaphore.__enter__)"},{"line_number":1053,"context_line":""},{"line_number":1054,"context_line":"    def __exit__(self, *args):"},{"line_number":1055,"context_line":"        # Don\u0027t use native thread for exit, as it will only add overhead"},{"line_number":1056,"context_line":"        return self.semaphore.__exit__(*args)"}],"source_content_type":"text/x-python","patch_set":10,"id":"af198a9a_cd97f261","line":1053,"updated":"2026-04-06 12:43:44.000000000","message":"__enter__ may need to condition on is_native_threading()","commit_id":"eec9131d47ffd3f8243cc7dcff3abf72d6b26c6b"}]}
