merged from ronnie
authorAndrew Tridgell <tridge@samba.org>
Tue, 5 May 2009 22:17:45 +0000 (08:17 +1000)
committerAndrew Tridgell <tridge@samba.org>
Tue, 5 May 2009 22:17:45 +0000 (08:17 +1000)
include/ctdb_private.h
server/ctdb_traverse.c

index 9ba4cc0b12c31d077884a960e9e3b18c13330ab5..f37560abe065c68d83a89b597b29a96f9a6d8b94 100644 (file)
@@ -556,12 +556,12 @@ enum ctdb_controls {CTDB_CONTROL_PROCESS_EXISTS          = 0,
                    CTDB_CONTROL_TAKEOVER_IP             = 89,
                    CTDB_CONTROL_GET_PUBLIC_IPS          = 90,
                    CTDB_CONTROL_GET_NODEMAP             = 91,
-                   CTDB_CONTROL_TRAVERSE_KILL           = 92,
-                   CTDB_CONTROL_EVENT_SCRIPT_INIT       = 93,
-                   CTDB_CONTROL_EVENT_SCRIPT_START      = 94,
-                   CTDB_CONTROL_EVENT_SCRIPT_STOP       = 95,
-                   CTDB_CONTROL_EVENT_SCRIPT_FINISHED   = 96,
-                   CTDB_CONTROL_GET_EVENT_SCRIPT_STATUS = 97,
+                   CTDB_CONTROL_EVENT_SCRIPT_INIT       = 92,
+                   CTDB_CONTROL_EVENT_SCRIPT_START      = 93,
+                   CTDB_CONTROL_EVENT_SCRIPT_STOP       = 94,
+                   CTDB_CONTROL_EVENT_SCRIPT_FINISHED   = 95,
+                   CTDB_CONTROL_GET_EVENT_SCRIPT_STATUS = 96,
+                   CTDB_CONTROL_TRAVERSE_KILL           = 97,
 };     
 
 /*
index 60a8e90b1b5d0491e9bf05c03c1838acadd11f64..dbb4b4f6cc6cb07df173fafd06fa92b0f2cce333 100644 (file)
@@ -92,7 +92,6 @@ static int ctdb_traverse_local_fn(struct tdb_context *tdb, TDB_DATA key, TDB_DAT
        struct ctdb_rec_data *d;
        struct ctdb_ltdb_header *hdr;
 
-       
        hdr = (struct ctdb_ltdb_header *)data.dptr;
 
        if (h->ctdb_db->persistent == 0) {
@@ -229,10 +228,10 @@ static void ctdb_traverse_all_timeout(struct event_context *ev, struct timed_eve
 {
        struct ctdb_traverse_all_handle *state = talloc_get_type(private_data, struct ctdb_traverse_all_handle);
 
+       DEBUG(DEBUG_ERR,(__location__ " Traverse all timeout on database:%s\n", state->ctdb_db->db_name));
        state->ctdb->statistics.timeouts.traverse++;
 
        state->callback(state->private_data, tdb_null, tdb_null);
-       talloc_free(state);
 }
 
 
@@ -265,7 +264,7 @@ static struct ctdb_traverse_all_handle *ctdb_daemon_traverse_all(struct ctdb_db_
        struct ctdb_traverse_all r;
        uint32_t destination;
 
-       state = talloc(ctdb_db, struct ctdb_traverse_all_handle);
+       state = talloc(start_state, struct ctdb_traverse_all_handle);
        if (state == NULL) {
                return NULL;
        }
@@ -450,11 +449,6 @@ int32_t ctdb_control_traverse_data(struct ctdb_context *ctdb, TDB_DATA data, TDB
        private_data = state->private_data;
 
        callback(private_data, key, data);
-       if (key.dsize == 0 && data.dsize == 0) {
-               /* we've received all of the null replies, so all
-                  nodes are finished */
-               talloc_free(state);
-       }
        return 0;
 }      
 
@@ -495,6 +489,7 @@ static int ctdb_traverse_start_destructor(struct traverse_start_state *state)
        struct ctdb_traverse_start r;
        TDB_DATA data;
 
+       DEBUG(DEBUG_ERR,(__location__ " Traverse cancelled by client disconnect for database:0x%08x\n", state->db_id));
        r.db_id = state->db_id;
        r.reqid = state->reqid;
        r.srvid = state->srvid;