summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ctdb/server/ctdb_recover.c15
1 files changed, 14 insertions, 1 deletions
diff --git a/ctdb/server/ctdb_recover.c b/ctdb/server/ctdb_recover.c
index 2e9408fc9e..7fd0ac36ea 100644
--- a/ctdb/server/ctdb_recover.c
+++ b/ctdb/server/ctdb_recover.c
@@ -1350,9 +1350,22 @@ int32_t ctdb_control_recd_ping(struct ctdb_context *ctdb)
int32_t ctdb_control_set_recmaster(struct ctdb_context *ctdb, uint32_t opcode, TDB_DATA indata)
{
+ uint32_t new_recmaster;
+
CHECK_CONTROL_DATA_SIZE(sizeof(uint32_t));
+ new_recmaster = ((uint32_t *)(&indata.dptr[0]))[0];
+
+ if (ctdb->pnn != new_recmaster && ctdb->recovery_master == ctdb->pnn) {
+ DEBUG(DEBUG_NOTICE,
+ ("This node (%u) is no longer the recovery master\n", ctdb->pnn));
+ }
+
+ if (ctdb->pnn == new_recmaster && ctdb->recovery_master != new_recmaster) {
+ DEBUG(DEBUG_NOTICE,
+ ("This node (%u) is now the recovery master\n", ctdb->pnn));
+ }
- ctdb->recovery_master = ((uint32_t *)(&indata.dptr[0]))[0];
+ ctdb->recovery_master = new_recmaster;
return 0;
}