)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"fb7b90e346e983b79a57b90b8506af18ff9c2d03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"73a02abf_b49b0301","updated":"2023-12-21 14:24:27.000000000","message":"recheck","commit_id":"a6c80fd8bc1ee71a96d3d1b4af44e2eca0a95a35"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"9d81e892bb4f4f9c29d0dfaad71d2e6effd1addd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"bb96199d_9b377b2a","updated":"2023-12-18 13:09:48.000000000","message":"recheck","commit_id":"a6c80fd8bc1ee71a96d3d1b4af44e2eca0a95a35"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"b9c1ec245ee48eee2db6277854cdb2eeab855b6a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c88c1ea2_6cdd7ddf","updated":"2023-12-17 14:09:17.000000000","message":"recheck","commit_id":"a6c80fd8bc1ee71a96d3d1b4af44e2eca0a95a35"},{"author":{"_account_id":5997,"name":"Walt","display_name":"Hemna","email":"waboring@hemna.com","username":"walter-boring","status":"SAP"},"change_message_id":"3e21ab8d1aec0ec5f53a06fe02000bd0483c7a0b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"fd354946_5a2977ed","updated":"2023-12-19 21:32:54.000000000","message":"recheck","commit_id":"a6c80fd8bc1ee71a96d3d1b4af44e2eca0a95a35"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"f5a5b0517be5ef14775e37f59950aadc4f3e7d94","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":16,"id":"85be599a_53694af1","updated":"2026-08-04 06:27:08.000000000","message":"Also release notes are missing.","commit_id":"28450394e658c39dfc73d5db83feca31fffc92ad"}],"cinder/action_track.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"f5a5b0517be5ef14775e37f59950aadc4f3e7d94","unresolved":true,"context_lines":[{"line_number":122,"context_line":"        lineno \u003d 0"},{"line_number":123,"context_line":"        funcname \u003d \"unknown\""},{"line_number":124,"context_line":"        for frame_info, frame_lineno in traceback.walk_stack(None):"},{"line_number":125,"context_line":"            if frame_info.f_code.co_filename !\u003d __file__:"},{"line_number":126,"context_line":"                filename \u003d frame_info.f_code.co_filename"},{"line_number":127,"context_line":"                lineno \u003d frame_lineno"},{"line_number":128,"context_line":"                funcname \u003d frame_info.f_code.co_name"}],"source_content_type":"text/x-python","patch_set":16,"id":"41e9453d_dbe7f952","line":125,"updated":"2026-08-04 06:27:08.000000000","message":"Is stack walk does reliably identify the Cinder call site when track() is invoked through @decorator.decorator. In the decorator path, the first frame outside action_track.py can be the generated trampoline in decorator/__init__.py, producing output such as decorator/**** instead of the decorated Cinder function. That defeats the stated purpose of the FILE field.\n\nPlease avoid runtime stack walking for the decorator path. The decorator already has func, so it can pass deterministic metadata derived from func.__code__.co_filename, func.__code__.co_firstlineno and func.__qualname__.\n\nPlease add a test that decorates a function outside action_track.py and asserts that FILE identifies that function rather than decorator/__init__.py.","commit_id":"28450394e658c39dfc73d5db83feca31fffc92ad"},{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"f5a5b0517be5ef14775e37f59950aadc4f3e7d94","unresolved":true,"context_lines":[{"line_number":218,"context_line":"                        context, action, resource, message,"},{"line_number":219,"context_line":"                        \"unknown\", 0, \"unknown\","},{"line_number":220,"context_line":"                        loglevel\u003dlogging.ERROR"},{"line_number":221,"context_line":"                    )"},{"line_number":222,"context_line":"    return inner"}],"source_content_type":"text/x-python","patch_set":16,"id":"05f90d08_7443f598","line":221,"updated":"2026-08-04 06:27:08.000000000","message":"action_track must be best-effort and must never alter the operation being observed.\n\nThis call executes inside save_and_reraise_exception(), but track_with_info() is not failure-safe. It can raise because of an unsupported loglevel, resource formatting, logger adapter processing, malformed message data, or future changes that dereference context.\n\nIf tracking raises here, the tracking exception can replace or obscure the original driver, DB, RPC, migration, attachment or backup exception.\n\nPlease make the emitter explicitly non-fatal, for example by catching failures inside the tracking implementation, logging a DEBUG diagnostic with exc_info\u003dTrue, and returning without raising. Please also add a unit test where the logging/emitter call raises and verify that the exact original exception is still propagated.","commit_id":"28450394e658c39dfc73d5db83feca31fffc92ad"}],"cinder/volume/manager.py":[{"author":{"_account_id":36171,"name":"jayaanand borra","display_name":"jayaanand borra","email":"jayaanand.borra@netapp.com","username":"jayaanan","status":"netapp"},"change_message_id":"f5a5b0517be5ef14775e37f59950aadc4f3e7d94","unresolved":true,"context_lines":[{"line_number":2760,"context_line":"            except Exception:"},{"line_number":2761,"context_line":"                with excutils.save_and_reraise_exception():"},{"line_number":2762,"context_line":"                    action_track.track("},{"line_number":2763,"context_line":"                        context, action_track.ACTION_VOLUME_MIGRATE,"},{"line_number":2764,"context_line":"                        volume, \"Failed generic migration\","},{"line_number":2765,"context_line":"                        loglevel\u003dlogging.ERROR"},{"line_number":2766,"context_line":"                    )"}],"source_content_type":"text/x-python","patch_set":16,"id":"c2cfd3d0_03dbacf3","line":2763,"updated":"2026-08-04 06:27:08.000000000","message":"def migrate_volume(self,\n                       ctxt: context.RequestContext,\n                       volume,\n                       host....This method receives the request context as ctxt, while the bare name context resolves to the imported cinder.context module.\n\nThese tracking calls therefore pass the module object instead of the current RequestContext.","commit_id":"28450394e658c39dfc73d5db83feca31fffc92ad"}]}
