From 58cd27f85a300dc802e57d1370d4d99bb91e60be Mon Sep 17 00:00:00 2001 From: Amul Sul Date: Thu, 23 Sep 2021 00:57:20 -0400 Subject: [PATCH v5 2/2] Deduplicate code updating ControleFile's DBState --- src/backend/access/transam/xlog.c | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c index 669fa6b4d38..093946e48f5 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -5043,6 +5043,18 @@ UpdateControlFile(void) update_controlfile(DataDir, ControlFile, true); } +/* + * Useful to set only ControlFile's database state. + */ +static void +SetControlFileDBState(DBState state) +{ + LWLockAcquire(ControlFileLock, LW_EXCLUSIVE); + ControlFile->state = state; + UpdateControlFile(); + LWLockRelease(ControlFileLock); +} + /* * Returns the unique system identifier from control file. */ @@ -9137,12 +9149,7 @@ CreateCheckPoint(int flags) START_CRIT_SECTION(); if (shutdown) - { - LWLockAcquire(ControlFileLock, LW_EXCLUSIVE); - ControlFile->state = DB_SHUTDOWNING; - UpdateControlFile(); - LWLockRelease(ControlFileLock); - } + SetControlFileDBState(DB_SHUTDOWNING); /* * Let smgr prepare for checkpoint; this has to happen before we determine @@ -9732,12 +9739,8 @@ CreateRestartPoint(int flags) UpdateMinRecoveryPoint(InvalidXLogRecPtr, true); if (flags & CHECKPOINT_IS_SHUTDOWN) - { - LWLockAcquire(ControlFileLock, LW_EXCLUSIVE); - ControlFile->state = DB_SHUTDOWNED_IN_RECOVERY; - UpdateControlFile(); - LWLockRelease(ControlFileLock); - } + SetControlFileDBState(DB_SHUTDOWNED_IN_RECOVERY); + return false; } -- 2.18.0