The branch, master has been updated via 00ec3c4 ctdb-daemon: Correctly process the exit code from failed eventscripts via 71b89b2 ctdb-tool: Correctly print timed out event scripts output from 45e3b05 vfs: Fix CID 1312072 Failure to restore non-local value
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 00ec3c477eba50206801b451ae4eb64c12aba5db Author: Amitay Isaacs <ami...@gmail.com> Date: Tue Jul 21 16:37:04 2015 +1000 ctdb-daemon: Correctly process the exit code from failed eventscripts Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> Autobuild-User(master): Martin Schwenke <mart...@samba.org> Autobuild-Date(master): Wed Jul 22 15:03:53 CEST 2015 on sn-devel-104 commit 71b89b2b7a9768de437347e6678370b2682da892 Author: Amitay Isaacs <ami...@gmail.com> Date: Mon Jul 20 16:37:58 2015 +1000 ctdb-tool: Correctly print timed out event scripts output The timed out error is ignored for certain events (start_recovery, recoverd, takeip, releaseip). If these events time out, then the debug hung script outputs the following: 3 scripts were executed last releaseip cycle 00.ctdb Status:OK Duration:4.381 Thu Jul 16 23:45:24 2015 01.reclock Status:OK Duration:13.422 Thu Jul 16 23:45:28 2015 10.external Status:DISABLED 10.interface Status:OK Duration:-1437083142.208 Thu Jul 16 23:45:42 2015 The endtime for timed out scripts is not set. Since the status is not returned as -ETIME for some events, ctdb scriptstatus prints -ve duration. Signed-off-by: Amitay Isaacs <ami...@gmail.com> Reviewed-by: Martin Schwenke <mar...@meltin.net> ----------------------------------------------------------------------- Summary of changes: ctdb/server/ctdb_event_helper.c | 6 +++++- ctdb/tools/ctdb.c | 8 ++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) Changeset truncated at 500 lines: diff --git a/ctdb/server/ctdb_event_helper.c b/ctdb/server/ctdb_event_helper.c index f14e336..a1b5318 100644 --- a/ctdb/server/ctdb_event_helper.c +++ b/ctdb/server/ctdb_event_helper.c @@ -128,7 +128,11 @@ int main(int argc, char *argv[]) exit(1); } if (WIFEXITED(status)) { - output = -WEXITSTATUS(status); + output = WEXITSTATUS(status); + /* Only errors should be returned as -ve values */ + if (output == ENOENT || output == ENOEXEC) { + output = -output; + } sys_write(write_fd, &output, sizeof(output)); exit(0); } diff --git a/ctdb/tools/ctdb.c b/ctdb/tools/ctdb.c index 4734b26..c6da621 100644 --- a/ctdb/tools/ctdb.c +++ b/ctdb/tools/ctdb.c @@ -1424,6 +1424,14 @@ static int control_one_scriptstatus(struct ctdb_context *ctdb, for (i=0; i<script_status->num_scripts; i++) { const char *status = NULL; + /* The ETIME status is ignored for certain events. + * In that case the status is 0, but endtime is not set. + */ + if (script_status->scripts[i].status == 0 && + timeval_is_zero(&script_status->scripts[i].finished)) { + script_status->scripts[i].status = -ETIME; + } + switch (script_status->scripts[i].status) { case -ETIME: status = "TIMEDOUT"; -- Samba Shared Repository