[SCM] CTDB repository - branch master updated - ctdb-1.13-301-g5ee242c

Amitay Isaacs amitay at samba.org
Fri Oct 19 09:45:49 MDT 2012


The branch, master has been updated
       via  5ee242c949a98bb7397e0f7368b20d44c06fe772 (commit)
       via  2d75a04ba9a2e87a0dcb9bf778c58e335af1871c (commit)
       via  59a47c0674bacfebc17a1b44f0244727bf2fa7a4 (commit)
       via  440892d75ef73c0aca22f47c0c01712be00cf5b7 (commit)
       via  14589bf7c16ba017fe00d4e8bea8cc501546c60f (commit)
       via  59520c9785d113ad5063eb5fbe42a9efc7e30076 (commit)
       via  3cc878bc97fdac764a60ed805f64d649eaab06e8 (commit)
       via  16aba4eb620844626a1c71c58b51658caf44dea6 (commit)
       via  eaa7c165f58abd7e259c37d76b7dd37c91e13d9f (commit)
       via  0e56e2dad1861892aa8ba59494ad244f2498314e (commit)
       via  7895bc003f087ab2f3181df3c464386f59bfcc39 (commit)
      from  af540ef728303b4a0a188b17c695e9aefab34489 (commit)

http://gitweb.samba.org/?p=ctdb.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 5ee242c949a98bb7397e0f7368b20d44c06fe772
Author: Martin Schwenke <martin at meltin.net>
Date:   Tue Oct 16 17:04:48 2012 +1100

    scripts: Refactor logging code in initscript and functions file
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>

commit 2d75a04ba9a2e87a0dcb9bf778c58e335af1871c
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Oct 11 16:21:02 2012 +1100

    tools/ctdb_diagnostics: Add "ctdb listvars" output
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>

commit 59a47c0674bacfebc17a1b44f0244727bf2fa7a4
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Oct 11 16:18:26 2012 +1100

    initscript: Check that rc.ctdb is executable before running it
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>

commit 440892d75ef73c0aca22f47c0c01712be00cf5b7
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Oct 11 16:10:19 2012 +1100

    ctdbd: Remove references to forcing running of eventscripts from log messages
    
    Running of eventscripts can be initiated from many places, including
    the recovery daemon.
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>

commit 14589bf7c16ba017fe00d4e8bea8cc501546c60f
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Oct 11 15:59:00 2012 +1100

    recoverd: Clarify some misleading log messages
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>

commit 59520c9785d113ad5063eb5fbe42a9efc7e30076
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Oct 11 15:49:13 2012 +1100

    tools/ctdb: Remove extra header from natgwlist -Y output
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>

commit 3cc878bc97fdac764a60ed805f64d649eaab06e8
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Oct 11 15:17:54 2012 +1100

    recoverd: Verifying local IPs should only check for unhosted available IPs
    
    Currently it checks for unhosted IPs among the known IPs rather than
    available IPs.  This means that a takeover run can be flagged even
    when that takeover run will be unable to assign a known, unhosted IP.
    
    Pair-programmed-with: Amitay Isaacs <amitay at gmail.com>
    Signed-off-by: Martin Schwenke <martin at meltin.net>

commit 16aba4eb620844626a1c71c58b51658caf44dea6
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Oct 11 14:34:37 2012 +1100

    Revert "Eventscripts - add facility to 10.interface to delete unmanaged IPs"
    
    This reverts commit 88f88d86b0d08240f749fb721b8c401c2eeb1099.
    
    This is dangerous and, on reflection, I can't see it being useful.
    There are often permanent IPs on interfaces that CTDB shares with its
    public IPs.

commit eaa7c165f58abd7e259c37d76b7dd37c91e13d9f
Author: Martin Schwenke <martin at meltin.net>
Date:   Wed Sep 26 14:37:49 2012 +1000

    Eventscripts: "recovered" event should not fail on NATGW failure
    
    The recovery process has no protection against the "recovered" event
    failing, so this can cause a recovery loop.
    
    Instead of failing the "recovered" event, add a "monitor" event and
    fail that instead.  In this case the failure semantics are well
    defined.
    
    A separate patch should ban nodes if the "recovered" event fails for
    an unknown reason.
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>

commit 0e56e2dad1861892aa8ba59494ad244f2498314e
Author: Martin Schwenke <martin at meltin.net>
Date:   Fri Sep 28 09:39:12 2012 +1000

    Logging: Map TEVENT_DEBUG_FATAL to DEBUG_CRIT
    
    This is currently mapped to DEBUG_EMERG.  CTDB really has no business
    logging anything at EMERG level since the whole system is not about to
    abort or catch fire.  EMERG causes the message to appear on the
    console and on every terminal.  That's a bit overzealous!
    
    There would be very few situations where logs are being filtered at
    level below ERROR, so CRIT should certainly suffice.
    
    The trigger for this was curious messages saying "No event for <n>
    seconds!" logged in a user's terminal.
    
    Pair-programmed-with: Amitay Isaacs <amitay at gmail.com>
    Signed-off-by: Martin Schwenke <martin at meltin.net>

commit 7895bc003f087ab2f3181df3c464386f59bfcc39
Author: Martin Schwenke <martin at meltin.net>
Date:   Thu Sep 6 20:22:38 2012 +1000

    common: Debug ctdb_addr_to_str() using new function ctdb_external_trace()
    
    We've seen this function report "Unknown family, 0" and then CTDB
    disappeared without a trace.  If we can reproduce it then this might
    help us to debug it.
    
    The idea is that you do something like the following in /etc/sysconfig/ctdb:
    
      export CTDB_EXTERNAL_TRACE="/etc/ctdb/config/gcore_trace.sh"
    
    When we hit this error than we call out to gcore to get a core file so
    we can do forensics.  This might block CTDB for a few seconds.
    
    Signed-off-by: Martin Schwenke <martin at meltin.net>

-----------------------------------------------------------------------

Summary of changes:
 Makefile.in                                    |    1 +
 common/ctdb_util.c                             |   25 +++++++++++
 config/ctdb.init                               |   18 +-------
 config/events.d/10.interface                   |   29 ------------
 config/events.d/11.natgw                       |   30 +++++++++++--
 config/functions                               |   31 ++++++++++---
 config/gcore_trace.sh                          |    3 +
 include/ctdb_private.h                         |    1 +
 packaging/RPM/ctdb.spec.in                     |    1 +
 server/ctdb_logging.c                          |    4 +-
 server/ctdb_recoverd.c                         |   55 +++++++++++++++--------
 server/eventscript.c                           |    4 +-
 tests/eventscripts/10.interface.monitor.015.sh |   22 ---------
 tools/ctdb.c                                   |    4 --
 tools/ctdb_diagnostics                         |    1 +
 15 files changed, 122 insertions(+), 107 deletions(-)
 create mode 100755 config/gcore_trace.sh
 delete mode 100755 tests/eventscripts/10.interface.monitor.015.sh


Changeset truncated at 500 lines:

diff --git a/Makefile.in b/Makefile.in
index 48cb57c..6c82260 100755
--- a/Makefile.in
+++ b/Makefile.in
@@ -359,6 +359,7 @@ install: all $(PMDA_INSTALL)
 	if [ ! -f $(DESTDIR)$(etcdir)/ctdb/notify.sh ];then ${INSTALLCMD} -m 755 config/notify.sh $(DESTDIR)$(etcdir)/ctdb; fi
 	${INSTALLCMD} -m 755 config/debug-hung-script.sh $(DESTDIR)$(etcdir)/ctdb
 	if [ ! -f $(DESTDIR)$(etcdir)/ctdb/ctdb-crash-cleanup.sh ];then ${INSTALLCMD} -m 755 config/ctdb-crash-cleanup.sh $(DESTDIR)$(etcdir)/ctdb; fi
+	if [ ! -f $(DESTDIR)$(etcdir)/ctdb/gcore_trace.sh ];then ${INSTALLCMD} -m 755 config/gcore_trace.sh $(DESTDIR)$(etcdir)/ctdb; fi
 
 install_pmda:
 	$(INSTALLCMD) -m 755 -d $(PMDA_DEST_DIR)
diff --git a/common/ctdb_util.c b/common/ctdb_util.c
index ed322ac..71dee2b 100644
--- a/common/ctdb_util.c
+++ b/common/ctdb_util.c
@@ -59,6 +59,30 @@ void ctdb_fatal(struct ctdb_context *ctdb, const char *msg)
 	abort();
 }
 
+/* Invoke an external program to do some sort of tracing on the CTDB
+ * process.  This might block for a little while.  The external
+ * program is specified by the environment variable
+ * CTDB_EXTERNAL_TRACE.  This program should take one argument: the
+ * pid of the process to trace.  Commonly, the program would be a
+ * wrapper script around gcore.
+ */
+void ctdb_external_trace(void)
+{
+
+	const char * t = getenv("CTDB_EXTERNAL_TRACE");
+	char * cmd;
+
+	if (t == NULL) {
+		return;
+	}
+
+	cmd = talloc_asprintf(NULL, "%s %lu", t, (unsigned long) getpid());
+	DEBUG(DEBUG_WARNING,("begin external trace: %s\n", cmd));
+	system(cmd);
+	DEBUG(DEBUG_WARNING,("end external trace: %s\n", cmd));
+	talloc_free(cmd);
+}
+
 /*
   parse a IP:port pair
 */
@@ -555,6 +579,7 @@ char *ctdb_addr_to_str(ctdb_sock_addr *addr)
 		break;
 	default:
 		DEBUG(DEBUG_ERR, (__location__ " ERROR, unknown family %u\n", addr->sa.sa_family));
+		ctdb_external_trace();
 	}
 
 	return cip;
diff --git a/config/ctdb.init b/config/ctdb.init
index 372affb..b8ff733 100755
--- a/config/ctdb.init
+++ b/config/ctdb.init
@@ -111,21 +111,7 @@ build_ctdb_options () {
 # Log given message or stdin to either syslog or a CTDB log file
 do_log ()
 {
-    if [ "$CTDB_SYSLOG" = "yes" -o \
-	"${CTDB_OPTIONS#*--syslog}" != "$CTDB_OPTIONS" ] ; then
-
-	logger -t "ctdb.init" "$@"
-    else
-	_l="${CTDB_LOGFILE:-/var/log/log.ctdb}"
-	{
-	    date
-	    if [ -n "$*" ] ; then
-		echo "$*"
-	    else
-		cat
-	    fi
-	} >>"$_l"
-    fi
+    script_log "ctdb.init" "$@"
 }
 
 select_tdb_checker ()
@@ -392,7 +378,7 @@ status() {
 }
 
 
-[ -f "$CTDB_BASE/rc.ctdb" ] && "$CTDB_BASE/rc.ctdb" $1
+[ -x "$CTDB_BASE/rc.ctdb" ] && "$CTDB_BASE/rc.ctdb" $1
 
 case "$1" in
     start)
diff --git a/config/events.d/10.interface b/config/events.d/10.interface
index a425e27..dd54f1e 100755
--- a/config/events.d/10.interface
+++ b/config/events.d/10.interface
@@ -49,39 +49,10 @@ get_all_interfaces ()
     all_interfaces=$(echo $all_interfaces $ctdb_ifaces | tr ' ' '\n' | sort -u)
 }
 
-delete_unexpected_ips ()
-{
-    [ "$CTDB_DELETE_UNEXPECTED_IPS" = "yes" ] || return
-
-    for _i in $all_interfaces ; do
-	# Get the IPs actually on this interface
-	_ips=$(ip addr show dev "$_i" | \
-	    sed -n -e 's at .*inet[[:space:]]*\([^[:space:]]*\).*scope global.*@\1 at p')
-	for _ip in $_ips ; do
-
-	    # The NATGW address is OK
-	    if [ "$CTDB_NATGW_PUBLIC_IP" = "$_ip" -a \
-		"$CTDB_NATGW_PUBLIC_IFACE" = "$_i" ] ; then
-		continue
-	    fi
-
-	    # If CTDB knows about the address then it is OK
-	    if ctdb ipinfo "${_ip%/*}" >/dev/null 2>&1 ; then
-		continue
-	    fi
-
-	    echo "WARNING: Removing unmanaged IP address $_ip from interface $_i"
-	    delete_ip_from_iface "$_i" "${_ip%/*}" "${_ip#*/}"
-	done
-    done
-}
-
 monitor_interfaces()
 {
 	get_all_interfaces
 
-	delete_unexpected_ips
-
 	fail=false
 	up_interfaces_found=false
 
diff --git a/config/events.d/11.natgw b/config/events.d/11.natgw
index 3eb3dad..30b8c70 100755
--- a/config/events.d/11.natgw
+++ b/config/events.d/11.natgw
@@ -34,6 +34,26 @@ delete_all() {
 	iptables -D INPUT -p tcp --syn -d $_ip/32 -j REJECT 2>/dev/null
 }
 
+ensure_natgwmaster ()
+{
+    _event="$1"
+
+    set -- $(ctdb natgwlist)
+    natgwmaster="${1:--1}" # Default is -1 if natgwlist fails
+    natgwip="$2"
+
+    if [ "$natgwmaster" = "-1" ]; then
+	echo "There is no NATGW master node"
+	# The recovered event should never fail - we'll catch this
+	# failure in the monitor event.
+	if [ "$_event" = "recovered" ] ; then
+	    exit 0
+	else
+	    exit 1
+	fi
+    fi
+}
+
 case "$1" in 
     startup)
 	# Error if CTDB_NATGW_PUBLIC_IP is listed in public addresses
@@ -47,11 +67,7 @@ case "$1" in
     recovered|updatenatgw|ipreallocated)
 	mypnn=$(ctdb pnn | cut -d: -f2)
 
-	set -- $(ctdb natgwlist)
-	natgwmaster="${1:--1}" # Default is -1 if natgwlist fails
-	natgwip="$2"
-
-	[ "$natgwmaster" = "-1" ] && die "There is no NATGW master node"
+	ensure_natgwmaster "$1"
 
 	delete_all
 
@@ -83,6 +99,10 @@ case "$1" in
 	delete_all
 	;;
 
+    monitor)
+	ensure_natgwmaster "$1"
+	;;
+
     *)
 	ctdb_standard_event_handler "@"
 	;;
diff --git a/config/functions b/config/functions
index 5a86882..078b50b 100755
--- a/config/functions
+++ b/config/functions
@@ -95,10 +95,12 @@ die ()
     exit $_rc
 }
 
-# When things are run in the background in an eventscript then logging
-# output might get lost.  This is the "solution".  :-)
-background_with_logging ()
+# Log given message or stdin to either syslog or a CTDB log file
+# $1 is the tag passed to logger if syslog is in use.
+script_log ()
 {
+    _tag="$1" ; shift
+
     _using_syslog=false
     if [ "$CTDB_SYSLOG" = "yes" -o -z "$CTDB_LOGFILE" ] ; then
 	_using_syslog=true
@@ -107,13 +109,26 @@ background_with_logging ()
 	*--syslog*) _using_syslog=true ;;
     esac
 
+    if $_using_syslog ; then
+	logger -t "$_tag"
+    else
+	{
+	    if [ -n "$*" ] ; then
+		echo "$*"
+	    else
+		cat
+	    fi
+	} >>"${CTDB_LOGFILE:-/var/log/log.ctdb}"
+    fi
+}
+
+# When things are run in the background in an eventscript then logging
+# output might get lost.  This is the "solution".  :-)
+background_with_logging ()
+{
     (
 	"$@" 2>&1 </dev/null |
-	if $_using_syslog ; then
-	    logger -t "ctdbd: ${script_name}&"
-	else
-	    cat >>"$CTDB_LOGFILE"
-	fi
+	script_log "ctdbd: ${script_name}&"
     )&
 
     return 0
diff --git a/config/gcore_trace.sh b/config/gcore_trace.sh
new file mode 100755
index 0000000..4d3e1d1
--- /dev/null
+++ b/config/gcore_trace.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+gcore -o "/var/log/core" "$1" 2>&1 | logger -t "ctdb:gcore_trace"
diff --git a/include/ctdb_private.h b/include/ctdb_private.h
index 94b45c0..6f6d898 100644
--- a/include/ctdb_private.h
+++ b/include/ctdb_private.h
@@ -666,6 +666,7 @@ struct ctdb_fetch_handle {
 /* internal prototypes */
 void ctdb_set_error(struct ctdb_context *ctdb, const char *fmt, ...) PRINTF_ATTRIBUTE(2,3);
 void ctdb_fatal(struct ctdb_context *ctdb, const char *msg);
+void ctdb_external_trace(void);
 bool ctdb_same_address(struct ctdb_address *a1, struct ctdb_address *a2);
 int ctdb_parse_address(struct ctdb_context *ctdb,
 		       TALLOC_CTX *mem_ctx, const char *str,
diff --git a/packaging/RPM/ctdb.spec.in b/packaging/RPM/ctdb.spec.in
index 6a6398b..48cd0ab 100644
--- a/packaging/RPM/ctdb.spec.in
+++ b/packaging/RPM/ctdb.spec.in
@@ -123,6 +123,7 @@ rm -rf $RPM_BUILD_ROOT
 %config(noreplace) %{_sysconfdir}/ctdb/notify.sh
 %config(noreplace) %{_sysconfdir}/ctdb/debug-hung-script.sh
 %config(noreplace) %{_sysconfdir}/ctdb/ctdb-crash-cleanup.sh
+%config(noreplace) %{_sysconfdir}/ctdb/gcore_trace.sh
 %config(noreplace) %{_sysconfdir}/ctdb/functions
 %attr(755,root,root) %{initdir}/ctdb
 
diff --git a/server/ctdb_logging.c b/server/ctdb_logging.c
index 9455ff1..7cf8b9f 100644
--- a/server/ctdb_logging.c
+++ b/server/ctdb_logging.c
@@ -563,11 +563,11 @@ static void ctdb_tevent_logging(void *private_data,
 				const char *fmt,
 				va_list ap)
 {
-	enum debug_level lvl = DEBUG_EMERG;
+	enum debug_level lvl = DEBUG_CRIT;
 
 	switch (level) {
 	case TEVENT_DEBUG_FATAL:
-		lvl = DEBUG_EMERG;
+		lvl = DEBUG_CRIT;
 		break;
 	case TEVENT_DEBUG_ERROR:
 		lvl = DEBUG_ERR;
diff --git a/server/ctdb_recoverd.c b/server/ctdb_recoverd.c
index 55d878b..82382d5 100644
--- a/server/ctdb_recoverd.c
+++ b/server/ctdb_recoverd.c
@@ -2778,7 +2778,6 @@ static int verify_local_ip_allocation(struct ctdb_context *ctdb, struct ctdb_rec
 {
 	TALLOC_CTX *mem_ctx = talloc_new(NULL);
 	struct ctdb_control_get_ifaces *ifaces = NULL;
-	struct ctdb_all_public_ips *ips = NULL;
 	struct ctdb_uptime *uptime1 = NULL;
 	struct ctdb_uptime *uptime2 = NULL;
 	int ret, j;
@@ -2820,14 +2819,6 @@ static int verify_local_ip_allocation(struct ctdb_context *ctdb, struct ctdb_rec
 		need_takeover_run = true;
 	}
 
-	/* read the ip allocation from the local node */
-	ret = ctdb_ctrl_get_public_ips(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE, mem_ctx, &ips);
-	if (ret != 0) {
-		DEBUG(DEBUG_ERR, ("Unable to get public ips from local node %u\n", pnn));
-		talloc_free(mem_ctx);
-		return -1;
-	}
-
 	ret = ctdb_ctrl_uptime(ctdb, mem_ctx, CONTROL_TIMEOUT(),
 				CTDB_CURRENT_NODE, &uptime2);
 	if (ret != 0) {
@@ -2870,25 +2861,51 @@ static int verify_local_ip_allocation(struct ctdb_context *ctdb, struct ctdb_rec
 	   we also request a ip reallocation.
 	*/
 	if (ctdb->tunable.disable_ip_failover == 0) {
+		struct ctdb_all_public_ips *ips = NULL;
+
+		/* read the *available* IPs from the local node */
+		ret = ctdb_ctrl_get_public_ips_flags(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE, mem_ctx, CTDB_PUBLIC_IP_FLAGS_ONLY_AVAILABLE, &ips);
+		if (ret != 0) {
+			DEBUG(DEBUG_ERR, ("Unable to get available public IPs from local node %u\n", pnn));
+			talloc_free(mem_ctx);
+			return -1;
+		}
+
 		for (j=0; j<ips->num; j++) {
-			if (ips->ips[j].pnn == -1 && nodemap->nodes[pnn].flags == 0) {
-				DEBUG(DEBUG_CRIT,("Public address '%s' is not assigned and we could serve this ip\n",
-						ctdb_addr_to_str(&ips->ips[j].addr)));
+			if (ips->ips[j].pnn == -1 &&
+			    nodemap->nodes[pnn].flags == 0) {
+				DEBUG(DEBUG_CRIT,("Public IP '%s' is not assigned and we could serve it\n",
+						  ctdb_addr_to_str(&ips->ips[j].addr)));
 				need_takeover_run = true;
-			} else if (ips->ips[j].pnn == pnn) {
+			}
+		}
+
+		talloc_free(ips);
+
+		/* read the *known* IPs from the local node */
+		ret = ctdb_ctrl_get_public_ips_flags(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE, mem_ctx, 0, &ips);
+		if (ret != 0) {
+			DEBUG(DEBUG_ERR, ("Unable to get known public IPs from local node %u\n", pnn));
+			talloc_free(mem_ctx);
+			return -1;
+		}
+
+		for (j=0; j<ips->num; j++) {
+			if (ips->ips[j].pnn == pnn) {
 				if (ctdb->do_checkpublicip && !ctdb_sys_have_ip(&ips->ips[j].addr)) {
-					DEBUG(DEBUG_CRIT,("Public address '%s' is missing and we should serve this ip\n",
+					DEBUG(DEBUG_CRIT,("Public IP '%s' is assigned to us but not on an interface\n",
 						ctdb_addr_to_str(&ips->ips[j].addr)));
 					need_takeover_run = true;
 				}
 			} else {
-				if (ctdb->do_checkpublicip && ctdb_sys_have_ip(&ips->ips[j].addr)) {
+				if (ctdb->do_checkpublicip &&
+				    ctdb_sys_have_ip(&ips->ips[j].addr)) {
 
-					DEBUG(DEBUG_CRIT,("We are still serving a public address '%s' that we should not be serving. Removing it.\n", 
+					DEBUG(DEBUG_CRIT,("We are still serving a public IP '%s' that we should not be serving. Removing it\n", 
 						ctdb_addr_to_str(&ips->ips[j].addr)));
 
 					if (ctdb_ctrl_release_ip(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE, &ips->ips[j]) != 0) {
-						DEBUG(DEBUG_ERR,("Failed to release local ip address\n"));
+						DEBUG(DEBUG_ERR,("Failed to release local IP address\n"));
 					}
 				}
 			}
@@ -3329,12 +3346,12 @@ static void main_loop(struct ctdb_context *ctdb, struct ctdb_recoverd *rec,
 
 			ret = ctdb_ctrl_freeze_priority(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE, 1);
 			if (ret != 0) {
-				DEBUG(DEBUG_ERR,(__location__ " Failed to freeze node due to node being STOPPED\n"));
+				DEBUG(DEBUG_ERR,(__location__ " Failed to freeze node in STOPPED state\n"));
 				return;
 			}
 			ret = ctdb_ctrl_setrecmode(ctdb, CONTROL_TIMEOUT(), CTDB_CURRENT_NODE, CTDB_RECOVERY_ACTIVE);
 			if (ret != 0) {
-				DEBUG(DEBUG_ERR,(__location__ " Failed to activate recovery mode due to node being stopped\n"));
+				DEBUG(DEBUG_ERR,(__location__ " Failed to activate recovery mode in STOPPED state\n"));
 
 				return;
 			}
diff --git a/server/eventscript.c b/server/eventscript.c
index 3b9ec93..6a75877 100644
--- a/server/eventscript.c
+++ b/server/eventscript.c
@@ -933,7 +933,7 @@ static void run_eventscripts_callback(struct ctdb_context *ctdb, int status,
 	ctdb_enable_monitoring(ctdb);
 
 	if (status != 0) {
-		DEBUG(DEBUG_ERR,(__location__ " Failed to forcibly run eventscripts\n"));
+		DEBUG(DEBUG_ERR,(__location__ " Failed to run eventscripts\n"));
 	}
 
 	ctdb_request_control_reply(ctdb, state->c, NULL, status, NULL);
@@ -979,7 +979,7 @@ int32_t ctdb_run_eventscripts(struct ctdb_context *ctdb,
 	/* Figure out what call they want. */
 	options = get_call((const char *)indata.dptr, &call);
 	if (!options) {
-		DEBUG(DEBUG_ERR, (__location__ " Invalid forced \"%s\"\n", (const char *)indata.dptr));
+		DEBUG(DEBUG_ERR, (__location__ " Invalid event name \"%s\"\n", (const char *)indata.dptr));
 		return -1;
 	}
 
diff --git a/tests/eventscripts/10.interface.monitor.015.sh b/tests/eventscripts/10.interface.monitor.015.sh
deleted file mode 100755
index ff54b69..0000000
--- a/tests/eventscripts/10.interface.monitor.015.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "spurious addresses on interface, delete them"
-
-setup_ctdb
-
-iface=$(ctdb_get_1_interface)
-
-ip addr add 192.168.253.253/24 dev $iface
-ip addr add 192.168.254.254/24 dev $iface
-
-export CTDB_DELETE_UNEXPECTED_IPS="yes"
-
-ok <<EOF
-WARNING: Removing unmanaged IP address 192.168.253.253/24 from interface dev123
-Re-adding secondary address 192.168.254.254/24 to dev dev123
-WARNING: Removing unmanaged IP address 192.168.254.254/24 from interface dev123
-EOF
-
-simple_test
diff --git a/tools/ctdb.c b/tools/ctdb.c
index e75a922..9a12d1b 100644
--- a/tools/ctdb.c
+++ b/tools/ctdb.c
@@ -1106,10 +1106,6 @@ static int control_natgwlist(struct ctdb_context *ctdb, int argc, const char **a
 		i++;
 	}
 
-	if (options.machinereadable) {
-		printf(":Node:IP:\n");
-	}
-
 	ret = 2; /* matches ENOENT */
 	pnn = -1;
 	ip = "0.0.0.0";
diff --git a/tools/ctdb_diagnostics b/tools/ctdb_diagnostics
index e2efb53..e37ed6b 100755
--- a/tools/ctdb_diagnostics
+++ b/tools/ctdb_diagnostics
@@ -227,6 +227,7 @@ EOF
 show_all "ctdb status; ctdb ip"
 show_all "ctdb statistics"
 show_all "ctdb uptime"
+show_all "ctdb listvars"
 
 echo "Showing log.ctdb"
 show_all "test -f /var/log/log.ctdb && tail -100 /var/log/log.ctdb"


-- 
CTDB repository


More information about the samba-cvs mailing list