ctdb-daemon: Change default for tunable NoIPHostOnAllDisabled to 1
authorMartin Schwenke <martin@meltin.net>
Mon, 18 Jun 2018 05:01:01 +0000 (15:01 +1000)
committerAmitay Isaacs <amitay@samba.org>
Wed, 11 Jul 2018 09:48:37 +0000 (11:48 +0200)
Defaulting to host public IP addresses when all nodes are unhealthy
does not obey the principle of least surprise.  It has caused much
confusion over the years.  It often leads to problems when all nodes
are unhealthy due to something like a cluster filesystem being
unmounted.

Change the default value for this tunable as the first step of
completely removing this behaviour.

Remove tests that set NoIPHostOnAllDisabled=1 and update the expected
result for other tests where no nodes are healthy.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
15 files changed:
ctdb/common/tunable.c
ctdb/tests/src/ctdb_takeover_tests.c
ctdb/tests/takeover/lcp2.014.sh
ctdb/tests/takeover/lcp2.015.sh
ctdb/tests/takeover/lcp2.016.sh
ctdb/tests/takeover/lcp2.017.sh [deleted file]
ctdb/tests/takeover/lcp2.018.sh [deleted file]
ctdb/tests/takeover/lcp2.019.sh [deleted file]
ctdb/tests/takeover/lcp2.022.sh [deleted file]
ctdb/tests/takeover/lcp2.023.sh [deleted file]
ctdb/tests/takeover/lcp2.026.sh [deleted file]
ctdb/tests/takeover_helper/014.sh
ctdb/tests/takeover_helper/015.sh [deleted file]
ctdb/tests/takeover_helper/020.sh [deleted file]
ctdb/tests/tool/ctdb.listvars.001.sh

index 14f6828bd15995014b0d9382e1c6bf002f67b8d6..0b6f0266c72edffd831d9bdad0939f021a4a631b 100644 (file)
@@ -141,7 +141,7 @@ static struct {
                offsetof(struct ctdb_tunable_list, db_size_warn) },
        { "PullDBPreallocation", 10*1024*1024, false,
                offsetof(struct ctdb_tunable_list, pulldb_preallocation_size) },
-       { "NoIPHostOnAllDisabled", 0, false,
+       { "NoIPHostOnAllDisabled", 1, false,
                offsetof(struct ctdb_tunable_list, no_ip_host_on_all_disabled) },
        { "Samba3AvoidDeadlocks", 0, true,
                offsetof(struct ctdb_tunable_list, samba3_hack) },
index aec23c0a5519b8c9abaa799c0085f25bea80c101..ead87c758de6cca83db89cfa4c6f81eee0f7643f 100644 (file)
@@ -206,7 +206,7 @@ static void ctdb_test_init(TALLOC_CTX *mem_ctx,
        if (t != NULL) {
                noiphostonalldisabled = (uint32_t) strtol(t, NULL, 0);
        } else {
-               noiphostonalldisabled = 0;
+               noiphostonalldisabled = 1;
        }
 
        *ipalloc_state = ipalloc_state_init(mem_ctx, nodemap->num,
index 0fc7c00fdb021b6d6f4c5d13367e970cedb1256b..25482c04607b797f3946f7864d0a252d94febc16 100755 (executable)
@@ -7,15 +7,15 @@ define_test "3 nodes, no IPs assigned, all unhealthy"
 export CTDB_TEST_LOGLEVEL=ERR
 
 required_result <<EOF
-192.168.21.254 0
-192.168.21.253 1
-192.168.21.252 2
-192.168.20.254 0
-192.168.20.253 1
-192.168.20.252 2
-192.168.20.251 0
-192.168.20.250 1
-192.168.20.249 2
+192.168.21.254 -1
+192.168.21.253 -1
+192.168.21.252 -1
+192.168.20.254 -1
+192.168.20.253 -1
+192.168.20.252 -1
+192.168.20.251 -1
+192.168.20.250 -1
+192.168.20.249 -1
 EOF
 
 simple_test 2,2,2 <<EOF
index b8f8172cf377b9ec8ca9f9e309e7acada3f48f5f..63c87c6a8dc58a27f28c9a81103fb9c0dc6abce0 100755 (executable)
@@ -7,15 +7,15 @@ define_test "3 nodes, all IPs assigned, all unhealthy"
 export CTDB_TEST_LOGLEVEL=ERR
 
 required_result <<EOF
-192.168.21.254 2
-192.168.21.253 2
-192.168.21.252 2
-192.168.20.254 1
-192.168.20.253 1
-192.168.20.252 1
-192.168.20.251 0
-192.168.20.250 0
-192.168.20.249 0
+192.168.21.254 -1
+192.168.21.253 -1
+192.168.21.252 -1
+192.168.20.254 -1
+192.168.20.253 -1
+192.168.20.252 -1
+192.168.20.251 -1
+192.168.20.250 -1
+192.168.20.249 -1
 EOF
 
 simple_test 2,2,2 <<EOF
index a4e369253fa7e64b3db7d918b94665f9d682731d..da2f4b080a0f285465db1e159098b985664a4c7b 100755 (executable)
@@ -7,15 +7,15 @@ define_test "3 nodes, all IPs assigned, 2->3 unhealthy"
 export CTDB_TEST_LOGLEVEL=ERR
 
 required_result <<EOF
-192.168.21.254 1
-192.168.21.253 0
-192.168.21.252 2
-192.168.20.254 1
-192.168.20.253 0
-192.168.20.252 2
-192.168.20.251 1
-192.168.20.250 0
-192.168.20.249 2
+192.168.21.254 -1
+192.168.21.253 -1
+192.168.21.252 -1
+192.168.20.254 -1
+192.168.20.253 -1
+192.168.20.252 -1
+192.168.20.251 -1
+192.168.20.250 -1
+192.168.20.249 -1
 EOF
 
 simple_test 2,2,2 <<EOF
diff --git a/ctdb/tests/takeover/lcp2.017.sh b/ctdb/tests/takeover/lcp2.017.sh
deleted file mode 100755 (executable)
index 2490d64..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "3 nodes, no IPs assigned, all unhealthy, NoIPHostOnAllDisabled"
-
-export CTDB_TEST_LOGLEVEL=ERR
-export CTDB_SET_NoIPHostOnAllDisabled=1
-
-required_result <<EOF
-192.168.21.254 -1
-192.168.21.253 -1
-192.168.21.252 -1
-192.168.20.254 -1
-192.168.20.253 -1
-192.168.20.252 -1
-192.168.20.251 -1
-192.168.20.250 -1
-192.168.20.249 -1
-EOF
-
-simple_test 2,2,2 <<EOF
-192.168.21.254 -1
-192.168.21.253 -1
-192.168.21.252 -1
-192.168.20.254 -1
-192.168.20.253 -1
-192.168.20.252 -1
-192.168.20.251 -1
-192.168.20.250 -1
-192.168.20.249 -1
-EOF
diff --git a/ctdb/tests/takeover/lcp2.018.sh b/ctdb/tests/takeover/lcp2.018.sh
deleted file mode 100755 (executable)
index f6fc4ce..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "3 nodes, all IPs assigned, all unhealthy, NoIPHostOnAllDisabled"
-
-export CTDB_TEST_LOGLEVEL=ERR
-export CTDB_SET_NoIPHostOnAllDisabled=1
-
-required_result <<EOF
-192.168.21.254 -1
-192.168.21.253 -1
-192.168.21.252 -1
-192.168.20.254 -1
-192.168.20.253 -1
-192.168.20.252 -1
-192.168.20.251 -1
-192.168.20.250 -1
-192.168.20.249 -1
-EOF
-
-simple_test 2,2,2 <<EOF
-192.168.21.254 2
-192.168.21.253 2
-192.168.21.252 2
-192.168.20.254 1
-192.168.20.253 1
-192.168.20.252 1
-192.168.20.251 0
-192.168.20.250 0
-192.168.20.249 0
-EOF
diff --git a/ctdb/tests/takeover/lcp2.019.sh b/ctdb/tests/takeover/lcp2.019.sh
deleted file mode 100755 (executable)
index 6309bd5..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "3 nodes, all IPs assigned, 2->3 unhealthy, NoIPHostOnAllDisabled"
-
-export CTDB_TEST_LOGLEVEL=ERR
-export CTDB_SET_NoIPHostOnAllDisabled=1
-
-required_result <<EOF
-192.168.21.254 -1
-192.168.21.253 -1
-192.168.21.252 -1
-192.168.20.254 -1
-192.168.20.253 -1
-192.168.20.252 -1
-192.168.20.251 -1
-192.168.20.250 -1
-192.168.20.249 -1
-EOF
-
-simple_test 2,2,2 <<EOF
-192.168.21.254 2
-192.168.21.253 2
-192.168.21.252 2
-192.168.20.254 2
-192.168.20.253 2
-192.168.20.252 2
-192.168.20.251 2
-192.168.20.250 2
-192.168.20.249 2
-EOF
diff --git a/ctdb/tests/takeover/lcp2.022.sh b/ctdb/tests/takeover/lcp2.022.sh
deleted file mode 100755 (executable)
index 52ac6ea..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "3 nodes, 2->3 unhealthy, all IPs assigned, NoIPTakeover"
-
-export CTDB_TEST_LOGLEVEL=ERR
-
-# We expect the IPs stay where they are (as opposed to
-# NoIPHostOnAllDisabled).  IPs are hosted when all nodes are disabled,
-# but they have nowhere else to go because of NoIPTakeover.
-required_result <<EOF
-192.168.21.254 2
-192.168.21.253 2
-192.168.21.252 2
-192.168.20.254 2
-192.168.20.253 2
-192.168.20.252 2
-192.168.20.251 2
-192.168.20.250 2
-192.168.20.249 2
-EOF
-
-export CTDB_SET_NoIPTakeover=1
-
-simple_test 2,2,2 <<EOF
-192.168.21.254 2
-192.168.21.253 2
-192.168.21.252 2
-192.168.20.254 2
-192.168.20.253 2
-192.168.20.252 2
-192.168.20.251 2
-192.168.20.250 2
-192.168.20.249 2
-EOF
diff --git a/ctdb/tests/takeover/lcp2.023.sh b/ctdb/tests/takeover/lcp2.023.sh
deleted file mode 100755 (executable)
index 0935083..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "3 nodes, all IPs assigned, 1->3 unhealthy"
-
-export CTDB_TEST_LOGLEVEL=DEBUG
-
-required_result <<EOF
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP} CONSIDERING MOVES (UNASSIGNED)
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP}+++++++++++++++++++++++++++++++++++++++++
-${TEST_DATE_STAMP}Selecting most imbalanced node from:
-${TEST_DATE_STAMP} 0 [89609]
-${TEST_DATE_STAMP} 1 [0]
-${TEST_DATE_STAMP} 2 [147968]
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP} CONSIDERING MOVES FROM 2 [147968]
-${TEST_DATE_STAMP} 2 [-58359] -> 192.168.21.254 -> 1 [+0]
-${TEST_DATE_STAMP} 2 [-58359] -> 192.168.21.252 -> 1 [+0]
-${TEST_DATE_STAMP} 2 [-59572] -> 192.168.20.253 -> 1 [+0]
-${TEST_DATE_STAMP} 2 [-59823] -> 192.168.20.251 -> 1 [+0]
-${TEST_DATE_STAMP} 2 [-59823] -> 192.168.20.249 -> 1 [+0]
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP}2 [-59823] -> 192.168.20.251 -> 1 [+0]
-${TEST_DATE_STAMP}+++++++++++++++++++++++++++++++++++++++++
-${TEST_DATE_STAMP}Selecting most imbalanced node from:
-${TEST_DATE_STAMP} 0 [89609]
-${TEST_DATE_STAMP} 1 [0]
-${TEST_DATE_STAMP} 2 [88145]
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP} CONSIDERING MOVES FROM 0 [89609]
-${TEST_DATE_STAMP} 0 [-42483] -> 192.168.21.253 -> 1 [+14161]
-${TEST_DATE_STAMP} 0 [-45662] -> 192.168.20.254 -> 1 [+15625]
-${TEST_DATE_STAMP} 0 [-45662] -> 192.168.20.252 -> 1 [+15625]
-${TEST_DATE_STAMP} 0 [-45411] -> 192.168.20.250 -> 1 [+16129]
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP}0 [-45662] -> 192.168.20.254 -> 1 [+15625]
-${TEST_DATE_STAMP}+++++++++++++++++++++++++++++++++++++++++
-${TEST_DATE_STAMP}Selecting most imbalanced node from:
-${TEST_DATE_STAMP} 0 [43947]
-${TEST_DATE_STAMP} 1 [15625]
-${TEST_DATE_STAMP} 2 [88145]
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP} CONSIDERING MOVES FROM 2 [88145]
-${TEST_DATE_STAMP} 2 [-44198] -> 192.168.21.254 -> 1 [+28322]
-${TEST_DATE_STAMP} 2 [-44198] -> 192.168.21.252 -> 1 [+28322]
-${TEST_DATE_STAMP} 2 [-43947] -> 192.168.20.253 -> 1 [+31501]
-${TEST_DATE_STAMP} 2 [-43947] -> 192.168.20.249 -> 1 [+31501]
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP}2 [-44198] -> 192.168.21.254 -> 1 [+28322]
-${TEST_DATE_STAMP}+++++++++++++++++++++++++++++++++++++++++
-${TEST_DATE_STAMP}Selecting most imbalanced node from:
-${TEST_DATE_STAMP} 0 [43947]
-${TEST_DATE_STAMP} 1 [43947]
-${TEST_DATE_STAMP} 2 [43947]
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP} CONSIDERING MOVES FROM 0 [43947]
-${TEST_DATE_STAMP} 0 [-28322] -> 192.168.21.253 -> 1 [+44198]
-${TEST_DATE_STAMP} 0 [-29786] -> 192.168.20.252 -> 1 [+45662]
-${TEST_DATE_STAMP} 0 [-29786] -> 192.168.20.250 -> 1 [+45915]
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP} CONSIDERING MOVES FROM 1 [43947]
-${TEST_DATE_STAMP} 1 [-28322] -> 192.168.21.254 -> 1 [+28322]
-${TEST_DATE_STAMP} 1 [-29786] -> 192.168.20.254 -> 1 [+29786]
-${TEST_DATE_STAMP} 1 [-29786] -> 192.168.20.251 -> 1 [+29786]
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP} ----------------------------------------
-${TEST_DATE_STAMP} CONSIDERING MOVES FROM 2 [43947]
-${TEST_DATE_STAMP} 2 [-28322] -> 192.168.21.252 -> 1 [+44198]
-${TEST_DATE_STAMP} 2 [-29786] -> 192.168.20.253 -> 1 [+45662]
-${TEST_DATE_STAMP} 2 [-29786] -> 192.168.20.249 -> 1 [+45662]
-${TEST_DATE_STAMP} ----------------------------------------
-192.168.21.254 1
-192.168.21.253 0
-192.168.21.252 2
-192.168.20.254 1
-192.168.20.253 2
-192.168.20.252 0
-192.168.20.251 1
-192.168.20.250 0
-192.168.20.249 2
-EOF
-
-simple_test 2,2,2 <<EOF
-192.168.21.254 2
-192.168.21.253 0
-192.168.21.252 2
-192.168.20.254 0
-192.168.20.253 2
-192.168.20.252 0
-192.168.20.251 2
-192.168.20.250 0
-192.168.20.249 2
-EOF
diff --git a/ctdb/tests/takeover/lcp2.026.sh b/ctdb/tests/takeover/lcp2.026.sh
deleted file mode 100755 (executable)
index a6e7a94..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "3 nodes, no IPs assigned, all unhealthy, 1 in STARTUP runstate"
-
-export CTDB_TEST_LOGLEVEL=NOTICE
-
-required_result <<EOF
-192.168.21.254 1
-192.168.21.253 2
-192.168.21.252 1
-192.168.20.254 1
-192.168.20.253 2
-192.168.20.252 1
-192.168.20.251 1
-192.168.20.250 2
-192.168.20.249 2
-EOF
-
-export CTDB_TEST_RUNSTATE=4,5,5
-
-simple_test 2,2,2 <<EOF
-192.168.21.254 -1
-192.168.21.253 -1
-192.168.21.252 -1
-192.168.20.254 -1
-192.168.20.253 -1
-192.168.20.252 -1
-192.168.20.251 -1
-192.168.20.250 -1
-192.168.20.249 -1
-EOF
index bb3689391426788735d4bf54acb7941f5af6322d..e3d8515fb648505f975747c7f81ca66972988a67 100755 (executable)
@@ -21,13 +21,17 @@ PUBLICIPS
 10.0.0.33  1
 EOF
 
-ok_null
+ok <<EOF
+Failed to find node to cover ip 10.0.0.33
+Failed to find node to cover ip 10.0.0.32
+Failed to find node to cover ip 10.0.0.31
+EOF
 test_takeover_helper
 
 required_result 0 <<EOF
 Public IPs on ALL nodes
-10.0.0.31 0
-10.0.0.32 2
-10.0.0.33 1
+10.0.0.31 -1
+10.0.0.32 -1
+10.0.0.33 -1
 EOF
 test_ctdb_ip_all
diff --git a/ctdb/tests/takeover_helper/015.sh b/ctdb/tests/takeover_helper/015.sh
deleted file mode 100755 (executable)
index 2841412..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "3 nodes, all unhealthy, all IPs assigned, NoIPHostOnAllDisabled"
-
-setup_ctdbd <<EOF
-NODEMAP
-0       192.168.20.41   0x2     CURRENT RECMASTER
-1       192.168.20.42   0x2
-2       192.168.20.43   0x2
-
-IFACES
-:Name:LinkStatus:References:
-:eth2:1:2:
-:eth1:1:4:
-
-PUBLICIPS
-10.0.0.31  0
-10.0.0.32  2
-10.0.0.33  1
-EOF
-
-ctdb_cmd setvar NoIPHostOnAllDisabled 1
-
-ok <<EOF
-Failed to find node to cover ip 10.0.0.33
-Failed to find node to cover ip 10.0.0.32
-Failed to find node to cover ip 10.0.0.31
-EOF
-test_takeover_helper
-
-required_result 0 <<EOF
-Public IPs on ALL nodes
-10.0.0.31 -1
-10.0.0.32 -1
-10.0.0.33 -1
-EOF
-test_ctdb_ip_all
diff --git a/ctdb/tests/takeover_helper/020.sh b/ctdb/tests/takeover_helper/020.sh
deleted file mode 100755 (executable)
index 111b5a4..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/bin/sh
-
-. "${TEST_SCRIPTS_DIR}/unit.sh"
-
-define_test "3 nodes, all unhealthy, IPs all assigned, NoIPTakeover"
-
-setup_ctdbd <<EOF
-NODEMAP
-0       192.168.20.41   0x2     CURRENT RECMASTER
-1       192.168.20.42   0x2
-2       192.168.20.43   0x2
-
-IFACES
-:Name:LinkStatus:References:
-:eth2:1:2:
-:eth1:1:4:
-
-PUBLICIPS
-10.0.0.31  0
-10.0.0.32  1
-10.0.0.33  2
-EOF
-
-ctdb_cmd setvar NoIPTakeover 1
-
-ok <<EOF
-EOF
-test_takeover_helper
-
-required_result 0 <<EOF
-Public IPs on ALL nodes
-10.0.0.31 0
-10.0.0.32 1
-10.0.0.33 2
-EOF
-test_ctdb_ip_all
index fc8f42ce067f9a2ec5f410dfa71e1b0bfb310906..ca014dcf9c3b6a56878d25d32534c4eb4bed2494 100755 (executable)
@@ -58,7 +58,7 @@ DBRecordCountWarn          = 100000
 DBRecordSizeWarn           = 10000000
 DBSizeWarn                 = 100000000
 PullDBPreallocation        = 10485760
-NoIPHostOnAllDisabled      = 0
+NoIPHostOnAllDisabled      = 1
 TDBMutexEnabled            = 1
 LockProcessesPerDB         = 200
 RecBufferSizeLimit         = 1000000