File tree Expand file tree Collapse file tree 3 files changed +22
-29
lines changed
lib/charms/postgresql_k8s/v1 Expand file tree Collapse file tree 3 files changed +22
-29
lines changed Original file line number Diff line number Diff line change @@ -1267,23 +1267,6 @@ def update_user_password(
1267
1267
if connection is not None :
1268
1268
connection .close ()
1269
1269
1270
- def is_restart_pending (self ) -> bool :
1271
- """Query pg_settings for pending restart."""
1272
- connection = None
1273
- try :
1274
- with self ._connect_to_database () as connection , connection .cursor () as cursor :
1275
- cursor .execute ("SELECT COUNT(*) FROM pg_settings WHERE pending_restart=True;" )
1276
- return cursor .fetchone ()[0 ] > 0
1277
- except psycopg2 .OperationalError :
1278
- logger .warning ("Failed to connect to PostgreSQL." )
1279
- return False
1280
- except psycopg2 .Error as e :
1281
- logger .error (f"Failed to check if restart is pending: { e } " )
1282
- return False
1283
- finally :
1284
- if connection :
1285
- connection .close ()
1286
-
1287
1270
def database_exists (self , db : str ) -> bool :
1288
1271
"""Check whether specified database exists."""
1289
1272
connection = None
Original file line number Diff line number Diff line change @@ -2436,18 +2436,11 @@ def _handle_postgresql_restart_need(self) -> None:
2436
2436
self ._patroni .reload_patroni_configuration ()
2437
2437
except Exception as e :
2438
2438
logger .error (f"Reload patroni call failed! error: { e !s} " )
2439
- # Wait for some more time than the Patroni's loop_wait default value (10 seconds),
2440
- # which tells how much time Patroni will wait before checking the configuration
2441
- # file again to reload it.
2442
- try :
2443
- for attempt in Retrying (stop = stop_after_attempt (5 ), wait = wait_fixed (3 )):
2444
- with attempt :
2445
- restart_postgresql = restart_postgresql or self .postgresql .is_restart_pending ()
2446
- if not restart_postgresql :
2447
- raise Exception
2448
- except RetryError :
2449
- # Ignore the error, as it happens only to indicate that the configuration has not changed.
2450
- pass
2439
+
2440
+ restart_pending = self ._patroni .is_restart_pending ()
2441
+ logger .debug (f"Checking if restart pending: { restart_postgresql } or { restart_pending } " )
2442
+ restart_postgresql = restart_postgresql or restart_pending
2443
+
2451
2444
self .unit_peer_data .update ({"tls" : "enabled" if self .is_tls_enabled else "" })
2452
2445
self .postgresql_client_relation .update_endpoints ()
2453
2446
Original file line number Diff line number Diff line change @@ -439,6 +439,23 @@ def get_patroni_health(self) -> dict[str, str]:
439
439
440
440
return r .json ()
441
441
442
+ def is_restart_pending (self ) -> bool :
443
+ """Returns whether the Patroni/PostgreSQL restart pending."""
444
+ patroni_status = requests .get (
445
+ f"{ self ._patroni_url } /patroni" ,
446
+ verify = self .verify ,
447
+ timeout = API_REQUEST_TIMEOUT ,
448
+ auth = self ._patroni_auth ,
449
+ )
450
+ try :
451
+ pending_restart = patroni_status .json ()["pending_restart" ]
452
+ except KeyError :
453
+ pending_restart = False
454
+ pass
455
+ logger .debug (f"Patroni API is_restart_pending: { pending_restart } " )
456
+
457
+ return pending_restart
458
+
442
459
@property
443
460
def is_creating_backup (self ) -> bool :
444
461
"""Returns whether a backup is being created."""
You can’t perform that action at this time.
0 commit comments