Create a tunable for how often to collect rolling statistics and initialize it to...
[metze/ctdb/wip.git] / server / ctdb_tunables.c
index 491c965656329001123785931756c4fbabf74481..02e76ae30822d3462cedeb81d59d4b7cc6dcc9fe 100644 (file)
@@ -25,22 +25,47 @@ static const struct {
        size_t offset;  
 } tunable_map[] = {
        { "MaxRedirectCount",     3,  offsetof(struct ctdb_tunable, max_redirect_count) },
-       { "SeqnumFrequency",      1,  offsetof(struct ctdb_tunable, seqnum_frequency) },
+       { "SeqnumInterval",      1000,  offsetof(struct ctdb_tunable, seqnum_interval) },
        { "ControlTimeout",      60, offsetof(struct ctdb_tunable, control_timeout) },
        { "TraverseTimeout",     20, offsetof(struct ctdb_tunable, traverse_timeout) },
-       { "KeepaliveInterval",    2,  offsetof(struct ctdb_tunable, keepalive_interval) },
+       { "KeepaliveInterval",    5,  offsetof(struct ctdb_tunable, keepalive_interval) },
        { "KeepaliveLimit",       5,  offsetof(struct ctdb_tunable, keepalive_limit) },
        { "MaxLACount",           7,  offsetof(struct ctdb_tunable, max_lacount) },
-       { "RecoverTimeout",       5,  offsetof(struct ctdb_tunable, recover_timeout) },
+       { "RecoverTimeout",      20,  offsetof(struct ctdb_tunable, recover_timeout) },
        { "RecoverInterval",      1,  offsetof(struct ctdb_tunable, recover_interval) },
        { "ElectionTimeout",      3,  offsetof(struct ctdb_tunable, election_timeout) },
        { "TakeoverTimeout",      5,  offsetof(struct ctdb_tunable, takeover_timeout) },
        { "MonitorInterval",     15,  offsetof(struct ctdb_tunable, monitor_interval) },
-       { "EventScriptTimeout",  20,  offsetof(struct ctdb_tunable, script_timeout) },
-       { "RecoveryGracePeriod", 60,  offsetof(struct ctdb_tunable, recovery_grace_period) },
+       { "TickleUpdateInterval",20,  offsetof(struct ctdb_tunable, tickle_update_interval) },
+       { "EventScriptTimeout",  30,  offsetof(struct ctdb_tunable, script_timeout) },
+       { "EventScriptTimeoutCount", 1,  offsetof(struct ctdb_tunable, script_timeout_count) },
+       { "EventScriptUnhealthyOnTimeout", 0, offsetof(struct ctdb_tunable, script_unhealthy_on_timeout) },/* OBSOLETE */
+       { "RecoveryGracePeriod", 120,  offsetof(struct ctdb_tunable, recovery_grace_period) },
        { "RecoveryBanPeriod",  300,  offsetof(struct ctdb_tunable, recovery_ban_period) },
        { "DatabaseHashSize", 10000,  offsetof(struct ctdb_tunable, database_hash_size) },
+       { "DatabaseMaxDead",      5,  offsetof(struct ctdb_tunable, database_max_dead) },
        { "RerecoveryTimeout",   10,  offsetof(struct ctdb_tunable, rerecovery_timeout) },
+       { "EnableBans",           1,  offsetof(struct ctdb_tunable, enable_bans) },
+       { "DeterministicIPs",     1,  offsetof(struct ctdb_tunable, deterministic_public_ips) },
+       { "ReclockPingPeriod",   60,  offsetof(struct ctdb_tunable,  reclock_ping_period) },
+       { "NoIPFailback",         0,  offsetof(struct ctdb_tunable, no_ip_failback) },
+       { "VerboseMemoryNames",   0,  offsetof(struct ctdb_tunable, verbose_memory_names) },
+       { "RecdPingTimeout",     60,  offsetof(struct ctdb_tunable, recd_ping_timeout) },
+       { "RecdFailCount",       10,  offsetof(struct ctdb_tunable, recd_ping_failcount) },
+       { "LogLatencyMs",         0,  offsetof(struct ctdb_tunable, log_latency_ms) },
+       { "RecLockLatencyMs",  1000,  offsetof(struct ctdb_tunable, reclock_latency_ms) },
+       { "RecoveryDropAllIPs",  60,  offsetof(struct ctdb_tunable, recovery_drop_all_ips) },
+       { "VerifyRecoveryLock",   1,  offsetof(struct ctdb_tunable, verify_recovery_lock) },
+       { "VacuumDefaultInterval", 300,  offsetof(struct ctdb_tunable, vacuum_default_interval) },
+       { "VacuumMaxRunTime",     30,  offsetof(struct ctdb_tunable, vacuum_max_run_time) },
+       { "RepackLimit",      10000,  offsetof(struct ctdb_tunable, repack_limit) },
+       { "VacuumLimit",       5000,  offsetof(struct ctdb_tunable, vacuum_limit) },
+       { "VacuumMinInterval",   60,  offsetof(struct ctdb_tunable, vacuum_min_interval) },
+       { "VacuumMaxInterval",  600,  offsetof(struct ctdb_tunable, vacuum_max_interval) },
+       { "MaxQueueDropMsg",  1000000, offsetof(struct ctdb_tunable, max_queue_depth_drop_msg) },
+       { "UseStatusEvents",     0,  offsetof(struct ctdb_tunable, use_status_events_for_monitoring) },
+       { "AllowUnhealthyDBRead", 0,  offsetof(struct ctdb_tunable, allow_unhealthy_db_read) },
+       { "StatHistoryInterval",  1,  offsetof(struct ctdb_tunable, stat_history_interval) }
 };
 
 /*
@@ -69,7 +94,7 @@ int32_t ctdb_control_get_tunable(struct ctdb_context *ctdb, TDB_DATA indata,
 
        if (indata.dsize < sizeof(*t) ||
            t->length > indata.dsize - offsetof(struct ctdb_control_get_tunable, name)) {
-               DEBUG(0,("Bad indata in ctdb_control_get_tunable\n"));
+               DEBUG(DEBUG_ERR,("Bad indata in ctdb_control_get_tunable\n"));
                return -1;
        }
 
@@ -109,7 +134,7 @@ int32_t ctdb_control_set_tunable(struct ctdb_context *ctdb, TDB_DATA indata)
 
        if (indata.dsize < sizeof(*t) ||
            t->length > indata.dsize - offsetof(struct ctdb_control_set_tunable, name)) {
-               DEBUG(0,("Bad indata in ctdb_control_set_tunable\n"));
+               DEBUG(DEBUG_ERR,("Bad indata in ctdb_control_set_tunable\n"));
                return -1;
        }
 
@@ -120,12 +145,19 @@ int32_t ctdb_control_set_tunable(struct ctdb_context *ctdb, TDB_DATA indata)
                if (strcasecmp(name, tunable_map[i].name) == 0) break;
        }
 
+       if (!strcmp(name, "VerifyRecoveryLock") && t->value != 0
+       && ctdb->recovery_lock_file == NULL) {
+               DEBUG(DEBUG_ERR,("Can not activate tunable \"VerifyRecoveryLock\" since there is no recovery lock file set.\n"));
+               talloc_free(name);
+               return -1;
+       }
+
        talloc_free(name);
        
        if (i == ARRAY_SIZE(tunable_map)) {
                return -1;
        }
-       
+
        *(uint32_t *)(tunable_map[i].offset + (uint8_t*)&ctdb->tunable) = t->value;
 
        return 0;