)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"c058e248b569413fe5347ffcaa46c9ea20e1a225","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"b87eb13b_9cfcefa6","updated":"2024-04-15 14:17:39.000000000","message":"The commit message is a bit confusing because the proposed implementation supports only redis sentinel and doesn\u0027t support redis. To make the implementation consistent with oslo.cache probably we should support both ?","commit_id":"55cf340c1f1b94cc281832682c66fce5804ba545"},{"author":{"_account_id":36624,"name":"Matúš Jenča","email":"matus.jenca@dnation.cloud","username":"matusjenca"},"change_message_id":"b64417c5b640754063fd388c9148dbe484c16ef4","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":1,"id":"dc91f04a_164793d9","in_reply_to":"b87eb13b_9cfcefa6","updated":"2024-04-16 11:44:15.000000000","message":"I made this with Kolla Ansible in mind, that uses Redis Sentinel, I can make redis support as well, it\u0027s not too much work.","commit_id":"55cf340c1f1b94cc281832682c66fce5804ba545"},{"author":{"_account_id":36624,"name":"Matúš Jenča","email":"matus.jenca@dnation.cloud","username":"matusjenca"},"change_message_id":"9dd2ff2824261e8df65caa897dff3283e1135530","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"eb9e0c5d_233c750b","in_reply_to":"dc91f04a_164793d9","updated":"2024-04-17 13:50:40.000000000","message":"Acknowledged","commit_id":"55cf340c1f1b94cc281832682c66fce5804ba545"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e7e8a9780834fb180cfff4d1b144ed101a35c6d4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":9,"id":"76e3205a_c9bbcf45","updated":"2026-01-26 17:16:47.000000000","message":"-1 due to wrong removal of import ssl line.\n\nI\u0027m still wondering if we want to add more and more backend specific implementation here or we prefer using oslo.cache implementation (use its normal cache interface rather than directly importing its client code).","commit_id":"0236107d6d35e70df92f252720ccb951f67e9bde"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"10edadecf4617078beab7c1b91bc456459da2a99","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":15,"id":"b19c69de_c5dd1113","updated":"2026-03-07 15:01:34.000000000","message":"So I created a draft implementation to let keystonemiddleware use oslo.cache backend.\n\nhttps://review.opendev.org/c/openstack/keystonemiddleware/+/979374\n\nI wonder if this could support your use case ?\n\nIMO that approach is preferred here because we don\u0027t have to implement individual backends. For example you don\u0027t have to implement new valkey support here within keysontmeliddleware if you want it.","commit_id":"3ab25c0ec7f10411db38f0f061d7ba6a0b82afbc"}],"keystonemiddleware/auth_token/__init__.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e7e8a9780834fb180cfff4d1b144ed101a35c6d4","unresolved":true,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"import copy"},{"line_number":221,"context_line":"import re"},{"line_number":222,"context_line":"import ssl"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"from keystoneauth1 import access"},{"line_number":225,"context_line":"from keystoneauth1 import adapter"}],"source_content_type":"text/x-python","patch_set":9,"id":"84f0f577_4b8f19c6","side":"PARENT","line":222,"range":{"start_line":222,"start_character":0,"end_line":222,"end_character":10},"updated":"2026-01-26 17:16:47.000000000","message":"Do not remove this. I believe removing this breaks `ssl.create_default_context` later called.","commit_id":"44460934f87f771f5a4feb00cab7e28a921dc2d4"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"eb7a3e84b7bccadcf0f70795bc539d614e78d5ba","unresolved":false,"context_lines":[{"line_number":219,"context_line":""},{"line_number":220,"context_line":"import copy"},{"line_number":221,"context_line":"import re"},{"line_number":222,"context_line":"import ssl"},{"line_number":223,"context_line":""},{"line_number":224,"context_line":"from keystoneauth1 import access"},{"line_number":225,"context_line":"from keystoneauth1 import adapter"}],"source_content_type":"text/x-python","patch_set":9,"id":"10f2e6c8_e9ac9641","side":"PARENT","line":222,"range":{"start_line":222,"start_character":0,"end_line":222,"end_character":10},"in_reply_to":"84f0f577_4b8f19c6","updated":"2026-01-26 17:19:41.000000000","message":"Done","commit_id":"44460934f87f771f5a4feb00cab7e28a921dc2d4"}],"keystonemiddleware/auth_token/_cache.py":[{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e7e8a9780834fb180cfff4d1b144ed101a35c6d4","unresolved":true,"context_lines":[{"line_number":254,"context_line":"            return"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        key, context \u003d self._get_cache_key(token_id)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        with self._cache_pool.reserve() as cache:"},{"line_number":259,"context_line":"            serialized \u003d cache.get(key)"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"4d1d0300_cfe72e56","side":"PARENT","line":257,"updated":"2026-01-26 17:16:47.000000000","message":"idk why these changes are needed","commit_id":"44460934f87f771f5a4feb00cab7e28a921dc2d4"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"dbed14700b206a2a78857aff2e533461731ba4ef","unresolved":false,"context_lines":[{"line_number":254,"context_line":"            return"},{"line_number":255,"context_line":""},{"line_number":256,"context_line":"        key, context \u003d self._get_cache_key(token_id)"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"        with self._cache_pool.reserve() as cache:"},{"line_number":259,"context_line":"            serialized \u003d cache.get(key)"},{"line_number":260,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"e64f4874_955bc4a8","side":"PARENT","line":257,"in_reply_to":"4d1d0300_cfe72e56","updated":"2026-01-26 17:22:29.000000000","message":"Removed the removals ;-)","commit_id":"44460934f87f771f5a4feb00cab7e28a921dc2d4"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e7e8a9780834fb180cfff4d1b144ed101a35c6d4","unresolved":true,"context_lines":[{"line_number":184,"context_line":"                 redis_sentinel_servers\u003dNone,"},{"line_number":185,"context_line":"                 **kwargs):"},{"line_number":186,"context_line":"        self._LOG \u003d log"},{"line_number":187,"context_line":"        self._cache_time \u003d cache_time"},{"line_number":188,"context_line":"        self._env_cache_name \u003d env_cache_name"},{"line_number":189,"context_line":"        self._memcached_servers \u003d memcacached_servers"},{"line_number":190,"context_line":"        self._cache_backend \u003d cache_backend"}],"source_content_type":"text/x-python","patch_set":9,"id":"da91d693_20b67d97","line":187,"range":{"start_line":187,"start_character":13,"end_line":187,"end_character":24},"updated":"2026-01-26 17:16:47.000000000","message":"I could not find any code passing this to RedisCache. Am I correct that tokens never expire in cache ?","commit_id":"0236107d6d35e70df92f252720ccb951f67e9bde"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"dbed14700b206a2a78857aff2e533461731ba4ef","unresolved":true,"context_lines":[{"line_number":184,"context_line":"                 redis_sentinel_servers\u003dNone,"},{"line_number":185,"context_line":"                 **kwargs):"},{"line_number":186,"context_line":"        self._LOG \u003d log"},{"line_number":187,"context_line":"        self._cache_time \u003d cache_time"},{"line_number":188,"context_line":"        self._env_cache_name \u003d env_cache_name"},{"line_number":189,"context_line":"        self._memcached_servers \u003d memcacached_servers"},{"line_number":190,"context_line":"        self._cache_backend \u003d cache_backend"}],"source_content_type":"text/x-python","patch_set":9,"id":"a935b1f3_0bc38551","line":187,"range":{"start_line":187,"start_character":13,"end_line":187,"end_character":24},"in_reply_to":"da91d693_20b67d97","updated":"2026-01-26 17:22:29.000000000","message":"Will check later this week.","commit_id":"0236107d6d35e70df92f252720ccb951f67e9bde"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"e7e8a9780834fb180cfff4d1b144ed101a35c6d4","unresolved":true,"context_lines":[{"line_number":203,"context_line":"        self._initialized \u003d False"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_cache_pool(self, cache):"},{"line_number":206,"context_line":"        try:"},{"line_number":207,"context_line":"            host \u003d self._cache_options[\u0027host\u0027]"},{"line_number":208,"context_line":"        except KeyError:"},{"line_number":209,"context_line":"            host \u003d None"},{"line_number":210,"context_line":"        if cache:"},{"line_number":211,"context_line":"            return _EnvCachePool(cache)"},{"line_number":212,"context_line":"        elif ("}],"source_content_type":"text/x-python","patch_set":9,"id":"9e98ed9b_4a30abe8","line":209,"range":{"start_line":206,"start_character":0,"end_line":209,"end_character":23},"updated":"2026-01-26 17:16:47.000000000","message":"```suggestion\n        host \u003d self._cache_options.get(\u0027host\u0027)\n```","commit_id":"0236107d6d35e70df92f252720ccb951f67e9bde"},{"author":{"_account_id":22629,"name":"Michal Nasiadka","email":"mnasiadka@gmail.com","username":"mnasiadka"},"change_message_id":"eb7a3e84b7bccadcf0f70795bc539d614e78d5ba","unresolved":false,"context_lines":[{"line_number":203,"context_line":"        self._initialized \u003d False"},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"    def _get_cache_pool(self, cache):"},{"line_number":206,"context_line":"        try:"},{"line_number":207,"context_line":"            host \u003d self._cache_options[\u0027host\u0027]"},{"line_number":208,"context_line":"        except KeyError:"},{"line_number":209,"context_line":"            host \u003d None"},{"line_number":210,"context_line":"        if cache:"},{"line_number":211,"context_line":"            return _EnvCachePool(cache)"},{"line_number":212,"context_line":"        elif ("}],"source_content_type":"text/x-python","patch_set":9,"id":"f1d540f8_79909755","line":209,"range":{"start_line":206,"start_character":0,"end_line":209,"end_character":23},"in_reply_to":"9e98ed9b_4a30abe8","updated":"2026-01-26 17:19:41.000000000","message":"Fix applied.","commit_id":"0236107d6d35e70df92f252720ccb951f67e9bde"},{"author":{"_account_id":9816,"name":"Takashi Kajinami","email":"kajinamit@oss.nttdata.com","username":"kajinamit"},"change_message_id":"10edadecf4617078beab7c1b91bc456459da2a99","unresolved":true,"context_lines":[{"line_number":136,"context_line":"            self.region.set(key, value)"},{"line_number":137,"context_line":""},{"line_number":138,"context_line":"        def get(self, key):"},{"line_number":139,"context_line":"            from dogpile.cache.api import NoValue"},{"line_number":140,"context_line":"            ret \u003d self.region.get(key)"},{"line_number":141,"context_line":"            # NOTE: We must return None instead of NoValue"},{"line_number":142,"context_line":"            if isinstance(ret, NoValue):"}],"source_content_type":"text/x-python","patch_set":15,"id":"c68b8667_d87a215e","line":139,"range":{"start_line":139,"start_character":17,"end_line":139,"end_character":30},"updated":"2026-03-07 15:01:34.000000000","message":"This introduces direct dependency on dogpile.cache so we should add it to optional dependencies of this library.","commit_id":"3ab25c0ec7f10411db38f0f061d7ba6a0b82afbc"}]}
