/* Are we recovering using offline XLOG archives? */
static bool InArchiveRecovery = false;
-/* Local copy of shared RecoveryProcessingMode state */
+/*
+ * Local copy of shared RecoveryProcessingMode state. True actually
+ * means "not known, need to check the shared state"
+ */
static bool LocalRecoveryProcessingMode = true;
-static bool knownProcessingMode = false;
/* Was the last xlog file restored from archive, or local? */
static bool restoredFromArchive = false;
bool
IsRecoveryProcessingMode(void)
{
- if (knownProcessingMode && !LocalRecoveryProcessingMode)
+ if (!LocalRecoveryProcessingMode)
return false;
-
+ else
{
/* use volatile pointer to prevent code rearrangement */
volatile XLogCtlData *xlogctl = XLogCtl;
- SpinLockAcquire(&xlogctl->mode_lck);
- LocalRecoveryProcessingMode = XLogCtl->SharedRecoveryProcessingMode;
- SpinLockRelease(&xlogctl->mode_lck);
+ LocalRecoveryProcessingMode = xlogctl->SharedRecoveryProcessingMode;
+ return LocalRecoveryProcessingMode;
}
-
- knownProcessingMode = true;
-
- return LocalRecoveryProcessingMode;
}
/*