diff options
| -rw-r--r-- | ctdb/server/ctdb_recover.c | 15 |
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; } |
