persistent_store_timout: do not really time out the trans3_commit control in recovery
authorMichael Adam <obnox@samba.org>
Tue, 22 Feb 2011 21:24:50 +0000 (22:24 +0100)
committerMichael Adam <obnox@samba.org>
Mon, 7 May 2012 08:56:33 +0000 (10:56 +0200)
If a recovery was started, then all further processing of the update_record
controls sent by the trans3_commit control and timing them out is disabled.
The recovery should trigger sending the reply for the update record control
when finished.
(cherry picked from commit 983c1ca2e18ecd60fca69bfe9e116125cc695857)

Signed-off-by: Michael Adam <obnox@samba.org>
server/ctdb_persistent.c

index ee695b1bc2ced4ef1bcbbffd979662f0677526ed..b015c4f83c889b77ea3c00a46c01afc4191513c8 100644 (file)
@@ -88,7 +88,13 @@ static void ctdb_persistent_store_timeout(struct event_context *ev, struct timed
                                         struct timeval t, void *private_data)
 {
        struct ctdb_persistent_state *state = talloc_get_type(private_data, struct ctdb_persistent_state);
-       
+
+       if (state->ctdb->recovery_mode != CTDB_RECOVERY_NORMAL) {
+               DEBUG(DEBUG_INFO, ("ctdb_persistent_store_timeout: ignoring "
+                                  "timeout during recovery\n"));
+               return;
+       }
+
        ctdb_request_control_reply(state->ctdb, state->c, NULL, CTDB_TRANS2_COMMIT_TIMEOUT, 
                                   "timeout in ctdb_persistent_state");