The branch, 1.2.40 has been updated via 39196986c69f3a7751f2b3a69f242263d6864514 (commit) via 4f8d22453c04217f75330a642671dbec625f4b13 (commit) via 7d69ce7506db2bb6f363f9dc689e154cae4de7da (commit) from 0b7027db12ad83232e969c80e4ffbdcdb4a1adcd (commit)
http://gitweb.samba.org/?p=ctdb.git;a=shortlog;h=1.2.40 - Log ----------------------------------------------------------------- commit 39196986c69f3a7751f2b3a69f242263d6864514 Author: Martin Schwenke <mar...@meltin.net> Date: Fri Oct 5 12:05:19 2012 +1000 New version 1.2.52 Signed-off-by: Martin Schwenke <mar...@meltin.net> commit 4f8d22453c04217f75330a642671dbec625f4b13 Author: Martin Schwenke <mar...@meltin.net> Date: Tue Oct 2 11:51:24 2012 +1000 util: ctdb_fork() closes all sockets opened by the main daemon Do some other housekeeping including stopping tevent. Pair-programmed-with: Amitay Isaacs <ami...@gmail.com> Signed-off-by: Martin Schwenke <mar...@meltin.net> commit 7d69ce7506db2bb6f363f9dc689e154cae4de7da Author: Martin Schwenke <mar...@meltin.net> Date: Tue Oct 2 11:54:00 2012 +1000 Revert "logging: Close unix socket /tmp/ctdb.socket in syslogd process" This reverts commit 450bedccbee3f89aba3b33777a4ae8841c456a65. This will be fixed in ctdb_fork() for all children. Won't somebody PLEASE think of the children?!? ----------------------------------------------------------------------- Summary of changes: client/ctdb_client.c | 24 ++++++------------------ common/ctdb_util.c | 17 +++++++++++++++++ packaging/RPM/ctdb.spec.in | 4 +++- server/ctdb_logging.c | 5 ----- 4 files changed, 26 insertions(+), 24 deletions(-) Changeset truncated at 500 lines: diff --git a/client/ctdb_client.c b/client/ctdb_client.c index 8b9df42..739c21b 100644 --- a/client/ctdb_client.c +++ b/client/ctdb_client.c @@ -4048,9 +4048,11 @@ int ctdb_ctrl_recd_ping(struct ctdb_context *ctdb) return 0; } -/* when forking the main daemon and the child process needs to connect back - * to the daemon as a client process, this function can be used to change - * the ctdb context from daemon into client mode +/* When forking the main daemon and the child process needs to connect + * back to the daemon as a client process, this function can be used + * to change the ctdb context from daemon into client mode. The child + * process must be created using ctdb_fork() and not fork() - + * ctdb_fork() does some necessary housekeeping. */ int switch_from_server_to_client(struct ctdb_context *ctdb, const char *fmt, ...) { @@ -4062,25 +4064,11 @@ int switch_from_server_to_client(struct ctdb_context *ctdb, const char *fmt, ... debug_extra = talloc_strdup_append(talloc_vasprintf(NULL, fmt, ap), ":"); va_end(ap); - /* shutdown the transport */ - if (ctdb->methods) { - ctdb->methods->shutdown(ctdb); - } - /* get a new event context */ - talloc_free(ctdb->ev); ctdb->ev = event_context_init(ctdb); tevent_loop_allow_nesting(ctdb->ev); - close(ctdb->daemon.sd); - ctdb->daemon.sd = -1; - - /* the client does not need to be realtime */ - if (ctdb->do_setsched) { - ctdb_restore_scheduler(ctdb); - } - - /* initialise ctdb */ + /* Connect to main CTDB daemon */ ret = ctdb_socket_connect(ctdb); if (ret != 0) { DEBUG(DEBUG_ALERT, (__location__ " Failed to init ctdb client\n")); diff --git a/common/ctdb_util.c b/common/ctdb_util.c index bb212f5..dfd0b9f 100644 --- a/common/ctdb_util.c +++ b/common/ctdb_util.c @@ -367,6 +367,23 @@ pid_t ctdb_fork(struct ctdb_context *ctdb) pid = fork(); if (pid == 0) { + /* Close the Unix Domain socket and the TCP socket. + * This ensures that none of the child processes will + * look like the main daemon when it is not running. + * tevent needs to be stopped before closing sockets. + */ + if (ctdb->ev != NULL) { + talloc_free(ctdb->ev); + ctdb->ev = NULL; + } + if (ctdb->daemon.sd != -1) { + close(ctdb->daemon.sd); + ctdb->daemon.sd = -1; + } + if (ctdb->methods != NULL) { + ctdb->methods->shutdown(ctdb); + } + if (ctdb->do_setsched) { ctdb_restore_scheduler(ctdb); } diff --git a/packaging/RPM/ctdb.spec.in b/packaging/RPM/ctdb.spec.in index d057b34..73a49b7 100644 --- a/packaging/RPM/ctdb.spec.in +++ b/packaging/RPM/ctdb.spec.in @@ -3,7 +3,7 @@ Name: ctdb Summary: Clustered TDB Vendor: Samba Team Packager: Samba Team <sa...@samba.org> -Version: 1.2.51 +Version: 1.2.52 Release: 1GITHASH Epoch: 0 License: GNU GPL version 3 @@ -146,6 +146,8 @@ development libraries for ctdb %changelog +* Fri Oct 05 2012 : Version 1.2.52 + - util: ctdb_fork() closes all sockets opened by the main daemon * Tue Oct 02 2012 : Version 1.2.51 - NATGW eventscript does not fail on recovered in case of misconfiguration - Map TEVENT_DEBUG_FATAL to DEBUG_CRIT diff --git a/server/ctdb_logging.c b/server/ctdb_logging.c index 0b32d85..19e8af7 100644 --- a/server/ctdb_logging.c +++ b/server/ctdb_logging.c @@ -117,11 +117,6 @@ int start_syslog_daemon(struct ctdb_context *ctdb) } debug_extra = talloc_asprintf(NULL, "syslogd:"); - - /* Close unix socket since syslogd does not need it */ - close(ctdb->daemon.sd); - ctdb->daemon.sd = -1; - talloc_free(ctdb->ev); ctdb->ev = event_context_init(NULL); tevent_loop_allow_nesting(ctdb->ev); -- CTDB repository