)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"161893bb02381e39639e1e306e0284279b7012f2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"20812a6e_20a3922a","updated":"2026-03-25 04:21:44.000000000","message":"recheck","commit_id":"20b618e462f32bc09c1afc825bf1ab813d437d3d"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"88216c1afaebe432a1740b069e02c6218a476466","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"d1258fb9_163d9acf","updated":"2026-03-30 13:51:40.000000000","message":"recheck","commit_id":"20b618e462f32bc09c1afc825bf1ab813d437d3d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"b63b0a122240ed97ceaccfd02d700f8ad431b5c7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"b46a256e_2bd9e844","updated":"2026-04-29 21:47:12.000000000","message":"LGTM, thank you @inyong.hong@samsung.com","commit_id":"ec23384554e27b76638490ff5eda35d415e96ef3"},{"author":{"_account_id":29632,"name":"Carlos Eduardo","email":"ces.eduardo98@gmail.com","username":"silvacarlos"},"change_message_id":"4b7b5f39b2d9291d52ff7ba8e55715978d27e39e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"ab2246aa_6ac9068e","updated":"2026-05-01 09:25:21.000000000","message":"LGTM, thanks for the fix!","commit_id":"ec23384554e27b76638490ff5eda35d415e96ef3"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"de03f0502132312b23e2a3cfcfca3cbb2b4a9ab1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"13484685_2086da5e","updated":"2026-04-01 09:53:27.000000000","message":"Thanks for the review. I’ve double-checked the logic in our environment and found that several other attributes also need to be initialized before super().__init__().\nSince oslo_context can trigger get_logging_values() attributes like timestamp, remote_address, quota_class, and service_catalog must be bound to self beforehand to avoid an AttributeError.\nI\u0027ve moved those up as well and addressed your other comments in this new patch set. Please take another look!\n\nFor reference, here is where oslo_context calls to_dict() during logging:\nhttps://opendev.org/openstack/oslo.context/src/commit/044826fb46ffced940c48fb6f07828282c1a0fcd/oslo_context/context.py#L367","commit_id":"ec23384554e27b76638490ff5eda35d415e96ef3"},{"author":{"_account_id":38940,"name":"Oluwasola Akintewe","display_name":"nathan_akin","email":"solaakintewe@gmail.com","username":"nathan_akin"},"change_message_id":"c81f806f4f09ec590a9a110f3d6ec8399ea9c648","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"c7691b39_100d38b5","updated":"2026-04-16 18:50:59.000000000","message":"so i read through context.py, the fix makes sense, because  to_dict() references read_deleted, remote_address, timestamp, quota_class, and service_catalog, but those are only assigned after super().__init__() is called. oslo_log\u0027s formatter calls get_logging_values() to to_dict() so if anything triggers a log call before __init__ finishes, you\u0027d get an AttributeError. moving the assignments before super().__init__() fixes it and ,  also the netapp CI failure on patchset 3 looks like the infra issue anoop mentioned,  RETRY_LIMIT in 7 minutes, not an actual test failure....","commit_id":"ec23384554e27b76638490ff5eda35d415e96ef3"}],"manila/context.py":[{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"847666cf002be372205a5f9106f928eff1278668","unresolved":true,"context_lines":[{"line_number":51,"context_line":"        kwargs.setdefault(\u0027user_id\u0027, user_id)"},{"line_number":52,"context_line":"        kwargs.setdefault(\u0027project_id\u0027, project_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # initialize before init()"},{"line_number":55,"context_line":"        self._read_deleted \u003d None"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        super().__init__(is_admin\u003dis_admin, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"7a4b4c95_b630993d","line":54,"updated":"2026-03-31 05:19:06.000000000","message":"The comment could be more descriptive. Consider:\n\n```python\n# _read_deleted must exist before super().__init__() because the\n# parent class may access the read_deleted property during init.\n```","commit_id":"20b618e462f32bc09c1afc825bf1ab813d437d3d"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"de03f0502132312b23e2a3cfcfca3cbb2b4a9ab1","unresolved":false,"context_lines":[{"line_number":51,"context_line":"        kwargs.setdefault(\u0027user_id\u0027, user_id)"},{"line_number":52,"context_line":"        kwargs.setdefault(\u0027project_id\u0027, project_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # initialize before init()"},{"line_number":55,"context_line":"        self._read_deleted \u003d None"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        super().__init__(is_admin\u003dis_admin, **kwargs)"}],"source_content_type":"text/x-python","patch_set":2,"id":"d6a40598_1342f7e1","line":54,"in_reply_to":"7a4b4c95_b630993d","updated":"2026-04-01 09:53:27.000000000","message":"Acknowledged","commit_id":"20b618e462f32bc09c1afc825bf1ab813d437d3d"},{"author":{"_account_id":16643,"name":"Goutham Pacha Ravi","email":"gouthampravi@gmail.com","username":"gouthamr"},"change_message_id":"847666cf002be372205a5f9106f928eff1278668","unresolved":true,"context_lines":[{"line_number":52,"context_line":"        kwargs.setdefault(\u0027project_id\u0027, project_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # initialize before init()"},{"line_number":55,"context_line":"        self._read_deleted \u003d None"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        super().__init__(is_admin\u003dis_admin, **kwargs)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"24b958a8_b9b108f8","line":55,"updated":"2026-03-31 05:19:06.000000000","message":"`self._read_deleted \u003d None` prevents the `AttributeError`, but `None` is not a valid value for this property — the valid values are `\u0027no\u0027`, `\u0027yes\u0027`, `\u0027only\u0027` (enforced by the setter on line 85). If oslo_context\u0027s `__init__` reads `self.read_deleted` (which is what triggers the original bug), it would now get `None` instead of a crash, but could still cause unexpected behavior.\n\nPlease initialize to the default value instead:\n\n```\nself._read_deleted \u003d \u0027no\u0027\n```\n\nThis matches the parameter default on line 39 and ensures the property always returns a valid value throughout the object\u0027s lifecycle.","commit_id":"20b618e462f32bc09c1afc825bf1ab813d437d3d"},{"author":{"_account_id":36686,"name":"Inyong Hong","display_name":"hongp","email":"inyong.hong@samsung.com","username":"hong-p"},"change_message_id":"de03f0502132312b23e2a3cfcfca3cbb2b4a9ab1","unresolved":false,"context_lines":[{"line_number":52,"context_line":"        kwargs.setdefault(\u0027project_id\u0027, project_id)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"        # initialize before init()"},{"line_number":55,"context_line":"        self._read_deleted \u003d None"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"        super().__init__(is_admin\u003dis_admin, **kwargs)"},{"line_number":58,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"860d5d97_a6c2b233","line":55,"in_reply_to":"24b958a8_b9b108f8","updated":"2026-04-01 09:53:27.000000000","message":"Acknowledged","commit_id":"20b618e462f32bc09c1afc825bf1ab813d437d3d"}]}
