From ef5f320602ccf05415444ee19c1497ed6b07de73 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 e373bd3c..c87c29fa 100644 --- a/patroni/postgresql/__init__.py +++ b/patroni/postgresql/__init__.py @@ -118,6 +118,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') @@ -240,7 +242,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)