summaryrefslogtreecommitdiff
path: root/src/include
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2016-03-10 19:26:24 +0000
committerSimon Riggs <simon@2ndQuadrant.com>2016-03-10 19:26:24 +0000
commit37c54863cf71a4a1126d21db8eb68974bef34374 (patch)
treead1213376b9b14f5479d14efaeec857b732f8b2f /src/include
parent53be0b1add7064ca5db3cd884302dfc3268d884e (diff)
Rework wait for AccessExclusiveLocks on Hot Standby
Earlier version committed in 9.0 caused spurious waits in some cases. New infrastructure for lock waits in 9.3 used to correct and improve this. Jeff Janes based upon a proposal by Simon Riggs, who also reviewed Additional review comments from Amit Kapila
Diffstat (limited to 'src/include')
-rw-r--r--src/include/storage/standby.h3
-rw-r--r--src/include/utils/timeout.h1
2 files changed, 4 insertions, 0 deletions
diff --git a/src/include/storage/standby.h b/src/include/storage/standby.h
index 7e6b2254cd0..aafc9b8a482 100644
--- a/src/include/storage/standby.h
+++ b/src/include/storage/standby.h
@@ -15,6 +15,7 @@
#define STANDBY_H
#include "storage/standbydefs.h"
+#include "storage/lock.h"
#include "storage/procsignal.h"
#include "storage/relfilenode.h"
@@ -31,10 +32,12 @@ extern void ResolveRecoveryConflictWithSnapshot(TransactionId latestRemovedXid,
extern void ResolveRecoveryConflictWithTablespace(Oid tsid);
extern void ResolveRecoveryConflictWithDatabase(Oid dbid);
+extern void ResolveRecoveryConflictWithLock(LOCKTAG locktag);
extern void ResolveRecoveryConflictWithBufferPin(void);
extern void CheckRecoveryConflictDeadlock(void);
extern void StandbyDeadLockHandler(void);
extern void StandbyTimeoutHandler(void);
+extern void StandbyLockTimeoutHandler(void);
/*
* Standby Rmgr (RM_STANDBY_ID)
diff --git a/src/include/utils/timeout.h b/src/include/utils/timeout.h
index 723b475d2ab..14e9720c885 100644
--- a/src/include/utils/timeout.h
+++ b/src/include/utils/timeout.h
@@ -29,6 +29,7 @@ typedef enum TimeoutId
STATEMENT_TIMEOUT,
STANDBY_DEADLOCK_TIMEOUT,
STANDBY_TIMEOUT,
+ STANDBY_LOCK_TIMEOUT,
/* First user-definable timeout reason */
USER_TIMEOUT,
/* Maximum number of timeout reasons */