diff options
-rw-r--r-- | ctdb/server/ctdb_recoverd.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/ctdb/server/ctdb_recoverd.c b/ctdb/server/ctdb_recoverd.c index 70ed87e355..c5cd36cfa9 100644 --- a/ctdb/server/ctdb_recoverd.c +++ b/ctdb/server/ctdb_recoverd.c @@ -2606,9 +2606,18 @@ static void process_ipreallocate_requests(struct ctdb_context *ctdb, TDB_DATA result; int32_t ret; uint32_t culprit; + struct srvid_requests *current; DEBUG(DEBUG_INFO, ("recovery master forced ip reallocation\n")); + /* Only process requests that are currently pending. More + * might come in while the takeover run is in progress and + * they will need to be processed later since they might + * be in response flag changes. + */ + current = rec->reallocate_requests; + rec->reallocate_requests = NULL; + /* update the list of public ips that a node can handle for all connected nodes */ @@ -2629,7 +2638,7 @@ static void process_ipreallocate_requests(struct ctdb_context *ctdb, result.dsize = sizeof(int32_t); result.dptr = (uint8_t *)&ret; - srvid_requests_reply(ctdb, &rec->reallocate_requests, result); + srvid_requests_reply(ctdb, ¤t, result); } |