From aea9a2b0cac7d175b6b9773b7d5986eaa74df46c Mon Sep 17 00:00:00 2001 From: Waynerv Date: Thu, 30 Nov 2023 19:02:42 +0800 Subject: [PATCH] Cache `postgres --describe-config` output results (#2967) We don't expect GUCs list to change for the same major version and don't expect major version to change while Patroni is running. --- patroni/postgresql/__init__.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/patroni/postgresql/__init__.py b/patroni/postgresql/__init__.py index fdfc26c1..f54d0c96 100644 --- a/patroni/postgresql/__init__.py +++ b/patroni/postgresql/__init__.py @@ -119,6 +119,8 @@ class Postgresql(object): # Last known running process self._postmaster_proc = None + self._available_gucs = None + if self.is_running(): # If we found postmaster process we need to figure out whether postgres is accepting connections self.set_state('starting') @@ -241,7 +243,9 @@ class Postgresql(object): @property def available_gucs(self) -> CaseInsensitiveSet: """GUCs available in this Postgres server.""" - return self._get_gucs() + if not self._available_gucs: + self._available_gucs = self._get_gucs() + return self._available_gucs def _version_file_exists(self) -> bool: return not self.data_directory_empty() and os.path.isfile(self._version_file)