From: Ronnie Sahlberg Date: Tue, 8 May 2007 23:59:23 +0000 (+1000) Subject: add a command line flag to ctdbd to start a recovery daemon. X-Git-Tag: tevent-0.9.20~348^2~2766^2 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=6929739b7f90ea278e4b065f8b41c998b5c0c6f5;p=thirdparty%2Fsamba.git add a command line flag to ctdbd to start a recovery daemon. update the recovery test script to start all ctdb daemons with a recovery daemon (This used to be ctdb commit 47794e16df285cacefc30208d892d931a6e46b96) --- diff --git a/ctdb/common/cmdline.c b/ctdb/common/cmdline.c index 6a8cdb51f31..3b95f7cc60a 100644 --- a/ctdb/common/cmdline.c +++ b/ctdb/common/cmdline.c @@ -38,6 +38,7 @@ static struct { int torture; const char *logfile; const char *events; + int recovery_daemon; } ctdb_cmdline = { .nlist = NULL, .transport = "tcp", @@ -47,6 +48,7 @@ static struct { .db_dir = NULL, .torture = 0, .logfile = NULL, + .recovery_daemon = 0, }; enum {OPT_EVENTSYSTEM=1}; @@ -71,6 +73,7 @@ struct poptOption popt_ctdb_cmdline[] = { { "socket", 0, POPT_ARG_STRING, &ctdb_cmdline.socketname, 0, "local socket name", "filename" }, { "transport", 0, POPT_ARG_STRING, &ctdb_cmdline.transport, 0, "protocol transport", NULL }, { "self-connect", 0, POPT_ARG_NONE, &ctdb_cmdline.self_connect, 0, "enable self connect", "boolean" }, + { "recovery-daemon", 0, POPT_ARG_NONE, &ctdb_cmdline.recovery_daemon, 0, "enable recovery daemon", "boolean" }, { "debug", 'd', POPT_ARG_INT, &LogLevel, 0, "debug level"}, { "dbdir", 0, POPT_ARG_STRING, &ctdb_cmdline.db_dir, 0, "directory for the tdb files", NULL }, { "torture", 0, POPT_ARG_NONE, &ctdb_cmdline.torture, 0, "enable nastiness in library", NULL }, @@ -112,6 +115,9 @@ struct ctdb_context *ctdb_cmdline_init(struct event_context *ev) if (ctdb_cmdline.torture) { ctdb_set_flags(ctdb, CTDB_FLAG_TORTURE); } + if (ctdb_cmdline.recovery_daemon) { + ctdb_set_flags(ctdb, CTDB_FLAG_RECOVERY); + } ret = ctdb_set_transport(ctdb, ctdb_cmdline.transport); if (ret == -1) { diff --git a/ctdb/common/ctdb_daemon.c b/ctdb/common/ctdb_daemon.c index 476f34d0a7d..ce5cc73eaa6 100644 --- a/ctdb/common/ctdb_daemon.c +++ b/ctdb/common/ctdb_daemon.c @@ -720,6 +720,15 @@ int ctdb_start_daemon(struct ctdb_context *ctdb) ctdb->ev = event_context_init(NULL); fde = event_add_fd(ctdb->ev, ctdb, ctdb->daemon.sd, EVENT_FD_READ|EVENT_FD_AUTOCLOSE, ctdb_accept_client, ctdb); + + /* start the recovery daemon */ + if (ctdb->flags & CTDB_FLAG_RECOVERY) { + char cmdstr[256]; + + sprintf(cmdstr, "ctdb_recoverd --socket=%s &",domain_socket_name); + system(cmdstr); + } + ctdb_main_loop(ctdb); return 0; diff --git a/ctdb/include/ctdb.h b/ctdb/include/ctdb.h index ad3c8d2ab18..f5e02ebdee1 100644 --- a/ctdb/include/ctdb.h +++ b/ctdb/include/ctdb.h @@ -51,6 +51,7 @@ struct ctdb_call_info { */ #define CTDB_FLAG_SELF_CONNECT (1<<0) #define CTDB_FLAG_TORTURE (1<<1) +#define CTDB_FLAG_RECOVERY (1<<2) /* diff --git a/ctdb/tests/recover.sh b/ctdb/tests/recover.sh index 57e2f422fe2..23603cc3967 100755 --- a/ctdb/tests/recover.sh +++ b/ctdb/tests/recover.sh @@ -1,15 +1,13 @@ #!/bin/sh killall -q ctdbd -killall -q recoverd +killall -q ctdb_recoverd echo "Starting 4 ctdb daemons" -bin/ctdbd --nlist direct/4nodes.txt -bin/ctdbd --nlist direct/4nodes.txt --listen=127.0.0.2:9001 --socket=/tmp/ctdb.socket.127.0.0.2 -bin/ctdbd --nlist direct/4nodes.txt --listen=127.0.0.3:9001 --socket=/tmp/ctdb.socket.127.0.0.3 -bin/ctdbd --nlist direct/4nodes.txt --listen=127.0.0.4:9001 --socket=/tmp/ctdb.socket.127.0.0.4 -echo "Starting one recovery daemon on node 0" -bin/recoverd --socket=/tmp/ctdb.socket >/dev/null 2>/dev/null & +bin/ctdbd --recovery-daemon --nlist direct/4nodes.txt +bin/ctdbd --recovery-daemon --nlist direct/4nodes.txt --listen=127.0.0.2:9001 --socket=/tmp/ctdb.socket.127.0.0.2 +bin/ctdbd --recovery-daemon --nlist direct/4nodes.txt --listen=127.0.0.3:9001 --socket=/tmp/ctdb.socket.127.0.0.3 +bin/ctdbd --recovery-daemon --nlist direct/4nodes.txt --listen=127.0.0.4:9001 --socket=/tmp/ctdb.socket.127.0.0.4 echo echo "Attaching to some databases"