vacuum: disabling vacuuming during a freeze
authorRusty Russell <rusty@rustcorp.com.au>
Wed, 21 Jul 2010 02:58:04 +0000 (12:28 +0930)
committerMichael Adam <obnox@samba.org>
Thu, 12 Jan 2012 07:47:38 +0000 (08:47 +0100)
We shouldn't even think about vacuuming when we've frozen the database
(which is earlier than when we set CTDB_RECOVERY_ACTIVE)

CQ:S1018154 & S1018349
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
(cherry picked from commit d8df6835a931082af232c4b94f1dede6f16169f9)

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

index 9ad4592f8bee26341c665a6de40355c269bd4f69..0cc0bd9de8ae5c9a4f8fb34c7b33fc79f59230c9 100644 (file)
@@ -1133,8 +1133,14 @@ ctdb_vacuum_event(struct event_context *ev, struct timed_event *te,
        struct ctdb_vacuum_child_context *child_ctx;
        int ret;
 
-       /* we dont vacuum if we are in recovery mode */
-       if (ctdb->recovery_mode == CTDB_RECOVERY_ACTIVE) {
+       /* we dont vacuum if we are in recovery mode, or db frozen */
+       if (ctdb->recovery_mode == CTDB_RECOVERY_ACTIVE ||
+           ctdb->freeze_mode[ctdb_db->priority] != CTDB_FREEZE_NONE) {
+               DEBUG(DEBUG_INFO, ("Not vacuuming %s (%s)\n", ctdb_db->db_name,
+                                  ctdb->recovery_mode == CTDB_RECOVERY_ACTIVE ? "in recovery"
+                                  : ctdb->freeze_mode[ctdb_db->priority] == CTDB_FREEZE_PENDING
+                                  ? "freeze pending"
+                                  : "frozen"));
                event_add_timed(ctdb->ev, vacuum_handle, timeval_current_ofs(ctdb->tunable.vacuum_default_interval, 0), ctdb_vacuum_event, vacuum_handle);
                return;
        }