)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"6352e6a1f180ab7c5d3d52768b7cd29b6fffe838","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bd0a3145_f5cde995","updated":"2025-05-02 17:51:20.000000000","message":"This change unifies the two path (with cooperative token and without) beautifully and makes the flow easier to follow, very nice, got it squashed, thanks a lot for the help!","commit_id":"6bafebea000c5d50a40e8106668cfad5618f422e"}],"swift/proxy/controllers/obj.py":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"ce5ae918bbb412c8a70d82aad6bc774938eb8c3e","unresolved":true,"context_lines":[{"line_number":163,"context_line":"        return self.policy_to_controller_cls[int(policy)]"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"class UncooperativeNamespaceCachePopulator:"},{"line_number":167,"context_line":"    set_cache_state \u003d \"set\""},{"line_number":168,"context_line":"    token_acquired \u003d False"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"aa24cb9e_a241dd3a","line":166,"range":{"start_line":166,"start_character":6,"end_line":166,"end_character":42},"updated":"2025-04-30 18:52:59.000000000","message":"Probably needs a better name ;-)","commit_id":"6bafebea000c5d50a40e8106668cfad5618f422e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"29b6fb58bcbfc833545ed9e1e98c462b9e32a8d9","unresolved":true,"context_lines":[{"line_number":163,"context_line":"        return self.policy_to_controller_cls[int(policy)]"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"class UncooperativeNamespaceCachePopulator:"},{"line_number":167,"context_line":"    set_cache_state \u003d \"set\""},{"line_number":168,"context_line":"    token_acquired \u003d False"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"08ce8492_21cdcea6","line":166,"range":{"start_line":166,"start_character":6,"end_line":166,"end_character":42},"in_reply_to":"1df11a53_5ff5ef95","updated":"2025-05-02 21:36:10.000000000","message":"👍","commit_id":"6bafebea000c5d50a40e8106668cfad5618f422e"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"6352e6a1f180ab7c5d3d52768b7cd29b6fffe838","unresolved":true,"context_lines":[{"line_number":163,"context_line":"        return self.policy_to_controller_cls[int(policy)]"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":""},{"line_number":166,"context_line":"class UncooperativeNamespaceCachePopulator:"},{"line_number":167,"context_line":"    set_cache_state \u003d \"set\""},{"line_number":168,"context_line":"    token_acquired \u003d False"},{"line_number":169,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"1df11a53_5ff5ef95","line":166,"range":{"start_line":166,"start_character":6,"end_line":166,"end_character":42},"in_reply_to":"aa24cb9e_a241dd3a","updated":"2025-05-02 17:51:20.000000000","message":"yes, probably ``DirectNamespaceCachePopulator`` is better.","commit_id":"6bafebea000c5d50a40e8106668cfad5618f422e"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"6352e6a1f180ab7c5d3d52768b7cd29b6fffe838","unresolved":true,"context_lines":[{"line_number":167,"context_line":"    set_cache_state \u003d \"set\""},{"line_number":168,"context_line":"    token_acquired \u003d False"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def __init__(self, ctrl, logger, account, container, req, cache_key):"},{"line_number":171,"context_line":"        self.ctrl \u003d ctrl"},{"line_number":172,"context_line":"        self.account \u003d account"},{"line_number":173,"context_line":"        self.container \u003d container"}],"source_content_type":"text/x-python","patch_set":1,"id":"b610c580_f11e4d19","line":170,"updated":"2025-05-02 17:51:20.000000000","message":"I got ``logger`` removed.","commit_id":"6bafebea000c5d50a40e8106668cfad5618f422e"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"26fd17e11725028f8a880e781c12779030673811","unresolved":false,"context_lines":[{"line_number":167,"context_line":"    set_cache_state \u003d \"set\""},{"line_number":168,"context_line":"    token_acquired \u003d False"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def __init__(self, ctrl, logger, account, container, req, cache_key):"},{"line_number":171,"context_line":"        self.ctrl \u003d ctrl"},{"line_number":172,"context_line":"        self.account \u003d account"},{"line_number":173,"context_line":"        self.container \u003d container"}],"source_content_type":"text/x-python","patch_set":1,"id":"67fd7bf2_175c2285","line":170,"in_reply_to":"98c2251a_f6464912","updated":"2025-05-03 00:52:12.000000000","message":"You are right! my dental appointment took so long today, otherwise I would see this blowing up in the unit test.","commit_id":"6bafebea000c5d50a40e8106668cfad5618f422e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"29b6fb58bcbfc833545ed9e1e98c462b9e32a8d9","unresolved":true,"context_lines":[{"line_number":167,"context_line":"    set_cache_state \u003d \"set\""},{"line_number":168,"context_line":"    token_acquired \u003d False"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"    def __init__(self, ctrl, logger, account, container, req, cache_key):"},{"line_number":171,"context_line":"        self.ctrl \u003d ctrl"},{"line_number":172,"context_line":"        self.account \u003d account"},{"line_number":173,"context_line":"        self.container \u003d container"}],"source_content_type":"text/x-python","patch_set":1,"id":"98c2251a_f6464912","line":170,"in_reply_to":"b610c580_f11e4d19","updated":"2025-05-02 21:36:10.000000000","message":"Doesn\u0027t `CooperativeCachePopulator` still need it, though? I\u0027ll be interested in seeing the diff :-)","commit_id":"6bafebea000c5d50a40e8106668cfad5618f422e"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"6352e6a1f180ab7c5d3d52768b7cd29b6fffe838","unresolved":true,"context_lines":[{"line_number":177,"context_line":"    def fetch_data(self):"},{"line_number":178,"context_line":"        ns_bound_list, self.backend_resp \u003d self.ctrl._get_updating_namespaces("},{"line_number":179,"context_line":"            self.req, self.account, self.container)"},{"line_number":180,"context_line":"        self.set_cache_state \u003d None"},{"line_number":181,"context_line":"        if ns_bound_list:"},{"line_number":182,"context_line":"            # only store the list of namespace lower bounds and names into"},{"line_number":183,"context_line":"            # infocache and memcache."}],"source_content_type":"text/x-python","patch_set":1,"id":"a1133e1c_5768510b","line":180,"updated":"2025-05-02 17:51:20.000000000","message":"``set_cache_state`` will need to be an instance variable instead of class.","commit_id":"6bafebea000c5d50a40e8106668cfad5618f422e"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"29b6fb58bcbfc833545ed9e1e98c462b9e32a8d9","unresolved":true,"context_lines":[{"line_number":177,"context_line":"    def fetch_data(self):"},{"line_number":178,"context_line":"        ns_bound_list, self.backend_resp \u003d self.ctrl._get_updating_namespaces("},{"line_number":179,"context_line":"            self.req, self.account, self.container)"},{"line_number":180,"context_line":"        self.set_cache_state \u003d None"},{"line_number":181,"context_line":"        if ns_bound_list:"},{"line_number":182,"context_line":"            # only store the list of namespace lower bounds and names into"},{"line_number":183,"context_line":"            # infocache and memcache."}],"source_content_type":"text/x-python","patch_set":1,"id":"4fd2ae3c_e198410d","line":180,"in_reply_to":"a1133e1c_5768510b","updated":"2025-05-02 21:36:10.000000000","message":"Oh, yeah! I think I started with that `set_cache_state \u003d \"set\"` before realizing that we could still get to `set_error`/`disabled`","commit_id":"6bafebea000c5d50a40e8106668cfad5618f422e"},{"author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"change_message_id":"6352e6a1f180ab7c5d3d52768b7cd29b6fffe838","unresolved":true,"context_lines":[{"line_number":187,"context_line":"        return ns_bound_list"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"class NamespaceCachePopulator(CooperativeCachePopulator):"},{"line_number":191,"context_line":"    \"\"\""},{"line_number":192,"context_line":"    CooperativeCachePopulator to fetch updating namespaces from backend"},{"line_number":193,"context_line":"    container cooperatively using cooperative token and memcached."}],"source_content_type":"text/x-python","patch_set":1,"id":"00098464_5cb90c24","line":190,"updated":"2025-05-02 17:51:20.000000000","message":"also changed this name to be ``CooperativeNamespaceCachePopulator``","commit_id":"6bafebea000c5d50a40e8106668cfad5618f422e"}]}
