From 4f77d6f349ad39d3e8074f18130622aaddd50069 Mon Sep 17 00:00:00 2001 From: Amul Sul Date: Thu, 23 Sep 2021 00:57:20 -0400 Subject: [PATCH v4 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 e439148aa7e..e865f23143a 100644 --- a/src/backend/access/transam/xlog.c +++ b/src/backend/access/transam/xlog.c @@ -4952,6 +4952,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. */ @@ -8952,12 +8964,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 @@ -9504,12 +9511,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