flag.
change calling of the recovered/takeip/releaseip event scripts to use
these enable/disable functions instead of stopping/starting monitoring.
when we disable monitoring we want all events to still be running
in particular the events to monitor for dead nodes and we only want to
supress running the monitor event scripts
uint32_t ctdb_get_num_active_nodes(struct ctdb_context *ctdb);
+void ctdb_disable_monitoring(struct ctdb_context *ctdb);
+void ctdb_enable_monitoring(struct ctdb_context *ctdb);
void ctdb_stop_monitoring(struct ctdb_context *ctdb);
void ctdb_start_monitoring(struct ctdb_context *ctdb);
void ctdb_start_tcp_tickle_update(struct ctdb_context *ctdb);
}
}
-/* stop any monitoring */
+/*
+ (Temporaily) Disabling monitoring will stop the monitor event scripts
+ from running but node health checks will still occur
+*/
+void ctdb_disable_monitoring(struct ctdb_context *ctdb)
+{
+ ctdb->monitoring_mode = CTDB_MONITORING_DISABLED;
+ DEBUG(0,("Monitoring has been stopped\n"));
+}
+
+/*
+ Re-enable running monitor events after they have been disabled
+ */
+void ctdb_enable_monitoring(struct ctdb_context *ctdb)
+{
+ ctdb->monitoring_mode = CTDB_MONITORING_ACTIVE;
+ DEBUG(0,("Monitoring has been enabled\n"));
+}
+
+/* stop any monitoring
+ this should only be done when shutting down the daemon
+*/
void ctdb_stop_monitoring(struct ctdb_context *ctdb)
{
talloc_free(ctdb->monitor_context);
}
- ctdb_stop_monitoring(state->ctdb);
+ ctdb_disable_monitoring(state->ctdb);
/* call the events script to tell all subsystems that we have recovered */
ret = ctdb_event_script_callback(state->ctdb,
ctdb_recovered_callback,
state, "recovered");
- ctdb_start_monitoring(state->ctdb);
+ ctdb_enable_monitoring(state->ctdb);
if (ret != 0) {
ctdb_request_control_reply(state->ctdb, state->c, NULL, -1, "failed to run eventscript from set_recmode");
inet_ntoa(pip->sin.sin_addr), vnn->public_netmask_bits,
vnn->iface));
- ctdb_stop_monitoring(ctdb);
+ ctdb_disable_monitoring(ctdb);
ret = ctdb_event_script_callback(ctdb,
timeval_current_ofs(ctdb->tunable.script_timeout, 0),
vnn->iface,
inet_ntoa(pip->sin.sin_addr),
vnn->public_netmask_bits);
- ctdb_start_monitoring(ctdb);
+ ctdb_enable_monitoring(ctdb);
if (ret != 0) {
DEBUG(0,(__location__ " Failed to takeover IP %s on interface %s\n",
state->vnn = vnn;
- ctdb_stop_monitoring(ctdb);
+ ctdb_disable_monitoring(ctdb);
ret = ctdb_event_script_callback(ctdb,
timeval_current_ofs(ctdb->tunable.script_timeout, 0),
vnn->iface,
inet_ntoa(pip->sin.sin_addr),
vnn->public_netmask_bits);
- ctdb_start_monitoring(ctdb);
+ ctdb_enable_monitoring(ctdb);
if (ret != 0) {
DEBUG(0,(__location__ " Failed to release IP %s on interface %s\n",