diff options
author | Michael Adam <obnox@samba.org> | 2014-02-15 18:06:09 +0100 |
---|---|---|
committer | Amitay Isaacs <amitay@gmail.com> | 2014-03-06 11:31:15 +1100 |
commit | f3483de240987f05cc20f747ac467c8ed81bb03e (patch) | |
tree | 4d0f109220c2bd30351a83bb17ba102cf6937c29 /ctdb | |
parent | 72ea9759930bd29b59c0f831d2cb2f4f1e2e643d (diff) | |
download | samba-f3483de240987f05cc20f747ac467c8ed81bb03e.tar.gz samba-f3483de240987f05cc20f747ac467c8ed81bb03e.tar.xz samba-f3483de240987f05cc20f747ac467c8ed81bb03e.zip |
ctdb-vacuum: catch and log errors to traverse the delete list in ctdb_process_delete_list()
Signed-off-by: Michael Adam <obnox@samba.org>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Diffstat (limited to 'ctdb')
-rw-r--r-- | ctdb/server/ctdb_vacuum.c | 24 |
1 files changed, 18 insertions, 6 deletions
diff --git a/ctdb/server/ctdb_vacuum.c b/ctdb/server/ctdb_vacuum.c index a491703288f..cee5bef2b13 100644 --- a/ctdb/server/ctdb_vacuum.c +++ b/ctdb/server/ctdb_vacuum.c @@ -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: |