mirror of
https://github.com/postgres/postgres.git
synced 2025-05-05 09:19:17 +03:00
Extract code to describe recovery stop reason to a function.
StartupXLOG() is very long, this makes it a little bit more readable. Reviewed-by: Andres Freund Discussion: https://www.postgresql.org/message-id/b3b71061-4919-e882-4857-27e370ab134a%40iki.fi
This commit is contained in:
parent
6b16532811
commit
4fe8dcdff3
@ -901,6 +901,7 @@ static void validateRecoveryParameters(void);
|
|||||||
static void exitArchiveRecovery(TimeLineID endTLI, XLogRecPtr endOfLog);
|
static void exitArchiveRecovery(TimeLineID endTLI, XLogRecPtr endOfLog);
|
||||||
static bool recoveryStopsBefore(XLogReaderState *record);
|
static bool recoveryStopsBefore(XLogReaderState *record);
|
||||||
static bool recoveryStopsAfter(XLogReaderState *record);
|
static bool recoveryStopsAfter(XLogReaderState *record);
|
||||||
|
static char *getRecoveryStopReason(void);
|
||||||
static void ConfirmRecoveryPaused(void);
|
static void ConfirmRecoveryPaused(void);
|
||||||
static void recoveryPausesHere(bool endOfRecovery);
|
static void recoveryPausesHere(bool endOfRecovery);
|
||||||
static bool recoveryApplyDelay(XLogReaderState *record);
|
static bool recoveryApplyDelay(XLogReaderState *record);
|
||||||
@ -6059,6 +6060,42 @@ recoveryStopsAfter(XLogReaderState *record)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Create a comment for the history file to explain why and where
|
||||||
|
* timeline changed.
|
||||||
|
*/
|
||||||
|
static char *
|
||||||
|
getRecoveryStopReason(void)
|
||||||
|
{
|
||||||
|
char reason[200];
|
||||||
|
|
||||||
|
if (recoveryTarget == RECOVERY_TARGET_XID)
|
||||||
|
snprintf(reason, sizeof(reason),
|
||||||
|
"%s transaction %u",
|
||||||
|
recoveryStopAfter ? "after" : "before",
|
||||||
|
recoveryStopXid);
|
||||||
|
else if (recoveryTarget == RECOVERY_TARGET_TIME)
|
||||||
|
snprintf(reason, sizeof(reason),
|
||||||
|
"%s %s\n",
|
||||||
|
recoveryStopAfter ? "after" : "before",
|
||||||
|
timestamptz_to_str(recoveryStopTime));
|
||||||
|
else if (recoveryTarget == RECOVERY_TARGET_LSN)
|
||||||
|
snprintf(reason, sizeof(reason),
|
||||||
|
"%s LSN %X/%X\n",
|
||||||
|
recoveryStopAfter ? "after" : "before",
|
||||||
|
LSN_FORMAT_ARGS(recoveryStopLSN));
|
||||||
|
else if (recoveryTarget == RECOVERY_TARGET_NAME)
|
||||||
|
snprintf(reason, sizeof(reason),
|
||||||
|
"at restore point \"%s\"",
|
||||||
|
recoveryStopName);
|
||||||
|
else if (recoveryTarget == RECOVERY_TARGET_IMMEDIATE)
|
||||||
|
snprintf(reason, sizeof(reason), "reached consistency");
|
||||||
|
else
|
||||||
|
snprintf(reason, sizeof(reason), "no recovery target specified");
|
||||||
|
|
||||||
|
return pstrdup(reason);
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Wait until shared recoveryPauseState is set to RECOVERY_NOT_PAUSED.
|
* Wait until shared recoveryPauseState is set to RECOVERY_NOT_PAUSED.
|
||||||
*
|
*
|
||||||
@ -7756,7 +7793,7 @@ StartupXLOG(void)
|
|||||||
PrevTimeLineID = ThisTimeLineID;
|
PrevTimeLineID = ThisTimeLineID;
|
||||||
if (ArchiveRecoveryRequested)
|
if (ArchiveRecoveryRequested)
|
||||||
{
|
{
|
||||||
char reason[200];
|
char *reason;
|
||||||
char recoveryPath[MAXPGPATH];
|
char recoveryPath[MAXPGPATH];
|
||||||
|
|
||||||
Assert(InArchiveRecovery);
|
Assert(InArchiveRecovery);
|
||||||
@ -7765,33 +7802,7 @@ StartupXLOG(void)
|
|||||||
ereport(LOG,
|
ereport(LOG,
|
||||||
(errmsg("selected new timeline ID: %u", ThisTimeLineID)));
|
(errmsg("selected new timeline ID: %u", ThisTimeLineID)));
|
||||||
|
|
||||||
/*
|
reason = getRecoveryStopReason();
|
||||||
* Create a comment for the history file to explain why and where
|
|
||||||
* timeline changed.
|
|
||||||
*/
|
|
||||||
if (recoveryTarget == RECOVERY_TARGET_XID)
|
|
||||||
snprintf(reason, sizeof(reason),
|
|
||||||
"%s transaction %u",
|
|
||||||
recoveryStopAfter ? "after" : "before",
|
|
||||||
recoveryStopXid);
|
|
||||||
else if (recoveryTarget == RECOVERY_TARGET_TIME)
|
|
||||||
snprintf(reason, sizeof(reason),
|
|
||||||
"%s %s\n",
|
|
||||||
recoveryStopAfter ? "after" : "before",
|
|
||||||
timestamptz_to_str(recoveryStopTime));
|
|
||||||
else if (recoveryTarget == RECOVERY_TARGET_LSN)
|
|
||||||
snprintf(reason, sizeof(reason),
|
|
||||||
"%s LSN %X/%X\n",
|
|
||||||
recoveryStopAfter ? "after" : "before",
|
|
||||||
LSN_FORMAT_ARGS(recoveryStopLSN));
|
|
||||||
else if (recoveryTarget == RECOVERY_TARGET_NAME)
|
|
||||||
snprintf(reason, sizeof(reason),
|
|
||||||
"at restore point \"%s\"",
|
|
||||||
recoveryStopName);
|
|
||||||
else if (recoveryTarget == RECOVERY_TARGET_IMMEDIATE)
|
|
||||||
snprintf(reason, sizeof(reason), "reached consistency");
|
|
||||||
else
|
|
||||||
snprintf(reason, sizeof(reason), "no recovery target specified");
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* We are now done reading the old WAL. Turn off archive fetching if
|
* We are now done reading the old WAL. Turn off archive fetching if
|
||||||
|
Loading…
x
Reference in New Issue
Block a user