aboutsummaryrefslogtreecommitdiff
path: root/src/include/access/xlog.h
diff options
context:
space:
mode:
authorFujii Masao <fujii@postgresql.org>2015-09-09 22:51:44 +0900
committerFujii Masao <fujii@postgresql.org>2015-09-09 22:52:35 +0900
commit2244c0652d2c20cd2557fb1940458b5f21cd48e0 (patch)
tree31e1714574feb3240152b373514a0d66e45d6a90 /src/include/access/xlog.h
parented476669e998b788770f07338aefd2594ff4cce9 (diff)
downloadpostgresql-2244c0652d2c20cd2557fb1940458b5f21cd48e0.tar.gz
postgresql-2244c0652d2c20cd2557fb1940458b5f21cd48e0.zip
Remove files signaling a standby promotion request at postmaster startup
This commit makes postmaster forcibly remove the files signaling a standby promotion request. Otherwise, the existence of those files can trigger a promotion too early, whether a user wants that or not. This removal of files is usually unnecessary because they can exist only during a few moments during a standby promotion. However there is a race condition: if pg_ctl promote is executed and creates the files during a promotion, the files can stay around even after the server is brought up to new master. Then, if new standby starts by using the backup taken from that master, the files can exist at the server startup and should be removed in order to avoid an unexpected promotion. Back-patch to 9.1 where promote signal file was introduced. Problem reported by Feike Steenbergen. Original patch by Michael Paquier, modified by me. Discussion: 20150528100705.4686.91426@wrigleys.postgresql.org
Diffstat (limited to 'src/include/access/xlog.h')
-rw-r--r--src/include/access/xlog.h1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/include/access/xlog.h b/src/include/access/xlog.h
index 84b11108708..d2241498e14 100644
--- a/src/include/access/xlog.h
+++ b/src/include/access/xlog.h
@@ -336,6 +336,7 @@ extern XLogRecPtr GetRedoRecPtr(void);
extern XLogRecPtr GetInsertRecPtr(void);
extern XLogRecPtr GetFlushRecPtr(void);
extern void GetNextXidAndEpoch(TransactionId *xid, uint32 *epoch);
+extern void RemovePromoteSignalFiles(void);
extern bool CheckPromoteSignal(void);
extern void WakeupRecovery(void);