summaryrefslogtreecommitdiffstats
path: root/ctdb/server/ctdb_recover.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronniesahlberg@gmail.com>2011-07-20 13:20:32 +1000
committerRonnie Sahlberg <ronniesahlberg@gmail.com>2011-08-23 10:24:44 +1000
commitb01dc029caab470618eb7da97a66cf35bc4cbdec (patch)
treeb8d6f68ff19306aff35b154854a4f8f8b791d021 /ctdb/server/ctdb_recover.c
parent1441b77ccee11d243f475f5c07fb7dd222286409 (diff)
downloadsamba-b01dc029caab470618eb7da97a66cf35bc4cbdec.tar.gz
samba-b01dc029caab470618eb7da97a66cf35bc4cbdec.tar.xz
samba-b01dc029caab470618eb7da97a66cf35bc4cbdec.zip
ReadOnly: After recovering all databases, make sure to clear out the tracking database used to track delegations and revoke. This is because the recovery will implicitely result in a revoke of all delegations.
(This used to be ctdb commit b5520933b9922d6af6f59f535824e1cdacb9f774)
Diffstat (limited to 'ctdb/server/ctdb_recover.c')
-rw-r--r--ctdb/server/ctdb_recover.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/ctdb/server/ctdb_recover.c b/ctdb/server/ctdb_recover.c
index 38466ab560..71f9b6eec6 100644
--- a/ctdb/server/ctdb_recover.c
+++ b/ctdb/server/ctdb_recover.c
@@ -489,6 +489,17 @@ int32_t ctdb_control_push_db(struct ctdb_context *ctdb, TDB_DATA indata)
DEBUG(DEBUG_DEBUG,("finished push of %u records for dbid 0x%x\n",
reply->count, reply->db_id));
+ if (ctdb_db->readonly) {
+ DEBUG(DEBUG_CRIT,("Clearing the tracking database for dbid 0x%x\n",
+ ctdb_db->db_id));
+ if (tdb_wipe_all(ctdb_db->rottdb) != 0) {
+ DEBUG(DEBUG_ERR,("Failed to wipe tracking database for 0x%x. Dropping read-only delegation support\n", ctdb_db->db_id));
+ ctdb_db->readonly = false;
+ tdb_close(ctdb_db->rottdb);
+ ctdb_db->rottdb = NULL;
+ }
+ }
+
ctdb_lock_all_databases_unmark(ctdb, ctdb_db->priority);
return 0;