diff options
author | Ronnie Sahlberg <ronniesahlberg@gmail.com> | 2009-10-20 12:59:48 +1100 |
---|---|---|
committer | Ronnie Sahlberg <ronniesahlberg@gmail.com> | 2009-10-20 12:59:48 +1100 |
commit | d788dd36279d4ccff456beffdf0611c0e326c55b (patch) | |
tree | 4142083bdfd26b2f13ea541e2c0be511f4889b6e /ctdb/server/eventscript.c | |
parent | 58780f4137c271cdaf96d59654d98d79596fa662 (diff) | |
download | samba-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.c | 13 |
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); } |