vacuum: catch and log errors to traverse the delete list in ctdb_process_delete_list()
authorMichael Adam <obnox@samba.org>
Sat, 15 Feb 2014 17:06:09 +0000 (18:06 +0100)
committerAmitay Isaacs <amitay@gmail.com>
Thu, 6 Mar 2014 06:35:33 +0000 (17:35 +1100)
Signed-off-by: Michael Adam <obnox@samba.org>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
(Imported from commit f3483de240987f05cc20f747ac467c8ed81bb03e)

server/ctdb_vacuum.c

index a491703288f5889f29e0f1ce0d489fe80dc377e7..cee5bef2b13a12e16a1fb114ee3f73d43cb2c362 100644 (file)
@@ -907,8 +907,12 @@ static int ctdb_process_delete_list(struct ctdb_db_context *ctdb_db,
         * records' RSNs in the database, to ensure we (as dmaster)
         * keep the highest RSN of the records in the cluster.
         */
-       trbt_traversearray32(vdata->delete_list, 1,
-                            delete_marshall_traverse_first, recs);
+       ret = trbt_traversearray32(vdata->delete_list, 1,
+                                  delete_marshall_traverse_first, recs);
+       if (ret != 0) {
+               DEBUG(DEBUG_ERR, (__location__ " Error traversing the "
+                     "delete list for first marshalling.\n"));
+       }
 
        indata.dsize = talloc_get_size(recs->records);
        indata.dptr  = (void *)recs->records;
@@ -1005,8 +1009,12 @@ static int ctdb_process_delete_list(struct ctdb_db_context *ctdb_db,
        }
        recs->records->db_id = ctdb_db->db_id;
 
-       trbt_traversearray32(vdata->delete_list, 1,
-                            delete_marshall_traverse, recs);
+       ret = trbt_traversearray32(vdata->delete_list, 1,
+                                  delete_marshall_traverse, recs);
+       if (ret != 0) {
+               DEBUG(DEBUG_ERR, (__location__ " Error traversing the "
+                     "delete list for second marshalling.\n"));
+       }
 
        indata.dsize = talloc_get_size(recs->records);
        indata.dptr  = (void *)recs->records;
@@ -1087,8 +1095,12 @@ static int ctdb_process_delete_list(struct ctdb_db_context *ctdb_db,
         * active remote nodes.
         */
 
-       trbt_traversearray32(vdata->delete_list, 1,
-                            delete_record_traverse, vdata);
+       ret = trbt_traversearray32(vdata->delete_list, 1,
+                                  delete_record_traverse, vdata);
+       if (ret != 0) {
+               DEBUG(DEBUG_ERR, (__location__ " Error traversing the "
+                     "delete list for deletion.\n"));
+       }
 
 success: