)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"53c05421671421ea0b99ef7a8d1121019679cf37","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"8577e63d_c5bb048b","updated":"2026-09-04 11:32:03.000000000","message":"Thank you jiho for suggesting this patch. However, it moves pool/backend loading from once-per-process to once-per-zone-action — a synchronous RPC plus a fresh backend-driver instantiation on every create/update/delete, not just the \"one RPC\" the commit describes","commit_id":"15f6bfc08b542c65f4a2b7f1fce8bafe1e1d1ced"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"e95c8a85a70bead1dd958cc913e989d22e341669","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"219d0398_85b6efcc","updated":"2026-09-18 15:10:23.000000000","message":"Thanks for the thorough response to the earlier comment, patch set 2 is a real improvement over dropping the cache outright.\n\nThat said, I don\u0027t think this should change behavior by default. Today the worker caches a pool for the lifetime of the process — full stop. This patch replaces that with a TTL that, by default, makes every worker silently start re-fetching pools and rebuilding backend instances on a recurring basis. That\u0027s a meaningful behavior and resource-usage change for every existing deployment on upgrade, not just a bug fix landing quietly.\n\nI\u0027d rather this shipped disabled by default, so upgrading doesn\u0027t change anything unless an operator opts in. Concretely: add a value that means \"never expire\" (e.g. pool_cache_ttl \u003d -1 or None) and make that the default, preserving today\u0027s behavior exactly. Operators who want pool edits to propagate without a restart can then set a finite TTL themselves.","commit_id":"ba50b00c9b2407c36a4c50fd47285d6878ec7edb"},{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"b924ed13c0e0e3521ee5e3baa58cebb516bfd5b8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"74b14d96_41b89c13","updated":"2026-09-23 10:54:49.000000000","message":"LGTM","commit_id":"bb40c44ba263d71336a0602fa0d41d36fb080957"}],"designate/worker/service.py":[{"author":{"_account_id":31664,"name":"Omer Schwartz","email":"oschwart@redhat.com","username":"oschwart"},"change_message_id":"53c05421671421ea0b99ef7a8d1121019679cf37","unresolved":true,"context_lines":[{"line_number":123,"context_line":"            self._executor \u003d processing.Executor()"},{"line_number":124,"context_line":"        return self._executor"},{"line_number":125,"context_line":""},{"line_number":126,"context_line":"    def get_pool(self, pool_id):"},{"line_number":127,"context_line":"        # NOTE: the pool is deliberately not cached. It is edited at runtime -"},{"line_number":128,"context_line":"        #       \"designate-manage pool update\" appends a target, changes a"},{"line_number":129,"context_line":"        #       nameserver or rotates a TSIG key - and the documentation states"},{"line_number":130,"context_line":"        #       that no restart is required for those changes to take effect."},{"line_number":131,"context_line":"        #       Caching it for the lifetime of the process broke that promise,"},{"line_number":132,"context_line":"        #       since nothing invalidated the cache."},{"line_number":133,"context_line":"        LOG.debug(\u0027Loading pool %s\u0027, pool_id)"},{"line_number":134,"context_line":"        return self.load_pool(pool_id)"},{"line_number":135,"context_line":""},{"line_number":136,"context_line":"    def start(self):"},{"line_number":137,"context_line":"        super().start()"},{"line_number":138,"context_line":"        self.heartbeat.start()"}],"source_content_type":"text/x-python","patch_set":1,"id":"a57c3c49_eb58bd79","line":135,"range":{"start_line":126,"start_character":4,"end_line":135,"end_character":0},"updated":"2026-09-04 11:32:03.000000000","message":"I tested this patch on devstack: two back-to-back zone actions on the same pool each re-trigger Loading pool -\u003e Backend Driver loaded -\u003e N targets setup — the backend driver is rebuilt on every action now, not just an RPC call. For bind9 that\u0027s cheap, but pdns4Backend.__init__ does file I/O + cert parsing (_verify_ssl()/check_pqc_compliance()) when PQC check_mode is enabled, so the real per-action cost is backend-dependent, not just \"one RPC\" as the commit msg says.","commit_id":"15f6bfc08b542c65f4a2b7f1fce8bafe1e1d1ced"},{"author":{"_account_id":36710,"name":"Jeong Jiho","display_name":"jiho","email":"jiho.jeong@samsung.com","username":"jihoJeong"},"change_message_id":"3a2fdc972e7c377f4e7744fd529a2bfbe897ccd0","unresolved":false,"context_lines":[{"line_number":130,"context_line":"            self._pools_map \u003d {}"},{"line_number":131,"context_line":"        return self._pools_map"},{"line_number":132,"context_line":""},{"line_number":133,"context_line":"    def get_pool(self, pool_id):"},{"line_number":134,"context_line":"        ttl \u003d CONF[\u0027service:worker\u0027].pool_cache_ttl"},{"line_number":135,"context_line":"        cached \u003d self.pools_map.get(pool_id)"},{"line_number":136,"context_line":"        if cached is not None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"7f916699_6292d6b9","line":133,"in_reply_to":"a57c3c49_eb58bd79","updated":"2026-09-14 05:49:43.000000000","message":"Addressed in patch set 2: the pool and its backend instances are now cached with a TTL ([service:worker] pool_cache_ttl, default 60s) instead of being rebuilt on every zone action.","commit_id":"ba50b00c9b2407c36a4c50fd47285d6878ec7edb"}]}
