112112from relations .postgresql_provider import PostgreSQLProvider
113113from rotate_logs import RotateLogs
114114from upgrade import PostgreSQLUpgrade , get_postgresql_dependencies_model
115- from utils import new_password
115+ from utils import new_password , snap_refreshed
116116
117117logger = logging .getLogger (__name__ )
118118
@@ -753,7 +753,9 @@ def _start_stop_pgbackrest_service(self, event: HookEvent) -> None:
753753 self .backup .coordinate_stanza_fields ()
754754
755755 if "exporter-started" not in self .unit_peer_data :
756- self ._setup_exporter ()
756+ cache = snap .SnapCache ()
757+ postgres_snap = cache [POSTGRESQL_SNAP_NAME ]
758+ self ._setup_exporter (postgres_snap )
757759
758760 def _update_new_unit_status (self ) -> None :
759761 """Update the status of a new unit that recently joined the cluster."""
@@ -1330,7 +1332,7 @@ def _restart_metrics_service(self) -> None:
13301332 return None
13311333
13321334 if snap_password != self .get_secret (APP_SCOPE , MONITORING_PASSWORD_KEY ):
1333- self ._setup_exporter ()
1335+ self ._setup_exporter (postgres_snap )
13341336
13351337 def _restart_ldap_sync_service (self ) -> None :
13361338 """Restart the LDAP sync service in case any configuration changed."""
@@ -1352,37 +1354,26 @@ def _restart_ldap_sync_service(self) -> None:
13521354 return
13531355
13541356 if self .is_primary and self .is_ldap_enabled :
1355- self ._setup_ldap_sync ()
1357+ self ._setup_ldap_sync (postgres_snap )
13561358
1357- def _setup_exporter (self ) -> None :
1359+ def _setup_exporter (self , postgres_snap : snap . Snap ) -> None :
13581360 """Set up postgresql_exporter options."""
1359- cache = snap .SnapCache ()
1360- postgres_snap = cache [POSTGRESQL_SNAP_NAME ]
1361-
1362- if postgres_snap .revision != next (
1363- filter (lambda snap_package : snap_package [0 ] == POSTGRESQL_SNAP_NAME , SNAP_PACKAGES )
1364- )[1 ]["revision" ].get (platform .machine ()):
1365- logger .debug (
1366- "Early exit _setup_exporter: snap was not refreshed to the right version yet"
1367- )
1368- return
1369-
13701361 postgres_snap .set ({
13711362 "exporter.user" : MONITORING_USER ,
13721363 "exporter.password" : self .get_secret (APP_SCOPE , MONITORING_PASSWORD_KEY ),
13731364 })
1365+
13741366 if postgres_snap .services [MONITORING_SNAP_SERVICE ]["active" ] is False :
13751367 postgres_snap .start (services = [MONITORING_SNAP_SERVICE ], enable = True )
13761368 else :
13771369 postgres_snap .restart (services = [MONITORING_SNAP_SERVICE ])
1370+
13781371 self .unit_peer_data .update ({"exporter-started" : "True" })
13791372
1380- def _setup_ldap_sync (self ) -> None :
1373+ def _setup_ldap_sync (self , postgres_snap : snap . Snap ) -> None :
13811374 """Set up postgresql_ldap_sync options."""
1382- cache = snap .SnapCache ()
1383- postgres_snap = cache [POSTGRESQL_SNAP_NAME ]
1384-
13851375 ldap_params = self .get_ldap_parameters ()
1376+
13861377 ldap_url = urlparse (ldap_params ["ldapurl" ])
13871378 ldap_host = ldap_url .hostname
13881379 ldap_port = ldap_url .port
@@ -2053,6 +2044,14 @@ def update_config(self, is_creating_backup: bool = False, no_peers: bool = False
20532044 })
20542045
20552046 self ._handle_postgresql_restart_need (enable_tls )
2047+
2048+ cache = snap .SnapCache ()
2049+ postgres_snap = cache [POSTGRESQL_SNAP_NAME ]
2050+
2051+ if not snap_refreshed (postgres_snap .revision ):
2052+ logger .debug ("Early exit: snap was not refreshed to the right version yet" )
2053+ return True
2054+
20562055 self ._restart_metrics_service ()
20572056 self ._restart_ldap_sync_service ()
20582057
0 commit comments