mirror of
https://github.com/EnterpriseDB/repmgr.git
synced 2026-03-27 17:06:29 +00:00
Fix node decision logic when priorities are involved. Currently if
two nodes with different prorities are equally good to be promoted the second one (with a lower priority, considering them in descending order) will win. Per report from Brailean Dumitru
This commit is contained in:
@@ -708,13 +708,13 @@ do_failover(void)
|
|||||||
find_best = true;
|
find_best = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* we use the macros provided by xlogdefs.h to compare XLogPtr */
|
/* we use the macros provided by xlogdefs.h to compare XLogRecPtr */
|
||||||
/*
|
/*
|
||||||
* Nodes are retrieved ordered by priority, so if the current
|
* Nodes are retrieved ordered by priority, so if the current
|
||||||
* best candidate is lower or equal to the next node's wal location
|
* best candidate is lower than the next node's wal location
|
||||||
* then assign next node as the new best candidate.
|
* then assign next node as the new best candidate.
|
||||||
*/
|
*/
|
||||||
if (XLByteLE(best_candidate.xlog_location, nodes[i].xlog_location))
|
if (XLByteLT(best_candidate.xlog_location, nodes[i].xlog_location))
|
||||||
{
|
{
|
||||||
best_candidate.nodeId = nodes[i].nodeId;
|
best_candidate.nodeId = nodes[i].nodeId;
|
||||||
best_candidate.xlog_location.xlogid = nodes[i].xlog_location.xlogid;
|
best_candidate.xlog_location.xlogid = nodes[i].xlog_location.xlogid;
|
||||||
|
|||||||
Reference in New Issue
Block a user