summaryrefslogtreecommitdiffstats
path: root/ctdb/server/eventscript.c
diff options
context:
space:
mode:
authorRonnie Sahlberg <ronniesahlberg@gmail.com>2009-10-20 12:59:48 +1100
committerRonnie Sahlberg <ronniesahlberg@gmail.com>2009-10-20 12:59:48 +1100
commitd788dd36279d4ccff456beffdf0611c0e326c55b (patch)
tree4142083bdfd26b2f13ea541e2c0be511f4889b6e /ctdb/server/eventscript.c
parent58780f4137c271cdaf96d59654d98d79596fa662 (diff)
downloadsamba-d788dd36279d4ccff456beffdf0611c0e326c55b.tar.gz
samba-d788dd36279d4ccff456beffdf0611c0e326c55b.tar.xz
samba-d788dd36279d4ccff456beffdf0611c0e326c55b.zip
From wolfgang Mueller
Add a tuneable so that when scripts starts to hang/timeout, we can make the node unhealthy instead of banned (This used to be ctdb commit 2e9fc6f0609833c6d8146196011ef780669d615d)
Diffstat (limited to 'ctdb/server/eventscript.c')
-rw-r--r--ctdb/server/eventscript.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/ctdb/server/eventscript.c b/ctdb/server/eventscript.c
index 3d139c0c0f..f4c362615c 100644
--- a/ctdb/server/eventscript.c
+++ b/ctdb/server/eventscript.c
@@ -705,10 +705,15 @@ static void ctdb_event_script_timeout(struct event_context *ev, struct timed_eve
ctdb->event_script_timeouts++;
if (ctdb->event_script_timeouts > ctdb->tunable.script_ban_count) {
- ctdb->event_script_timeouts = 0;
- DEBUG(DEBUG_ERR, ("Maximum timeout count %u reached for eventscript. Banning self for %d seconds\n", ctdb->tunable.script_ban_count, ctdb->tunable.recovery_ban_period));
- ctdb_ban_self(ctdb, ctdb->tunable.recovery_ban_period);
- callback(ctdb, -1, private_data);
+ if (ctdb->tunable.script_unhealthy_on_timeout != 0) {
+ DEBUG(DEBUG_ERR, ("Maximum timeout count %u reached for eventscript. Making node unhealthy\n", ctdb->tunable.script_ban_count));
+ callback(ctdb, -ETIME, private_data);
+ } else {
+ ctdb->event_script_timeouts = 0;
+ DEBUG(DEBUG_ERR, ("Maximum timeout count %u reached for eventscript. Banning self for %d seconds\n", ctdb->tunable.script_ban_count, ctdb->tunable.recovery_ban_period));
+ ctdb_ban_self(ctdb, ctdb->tunable.recovery_ban_period);
+ callback(ctdb, -1, private_data);
+ }
} else {
callback(ctdb, 0, private_data);
}