summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ctdb/server/ctdb_takeover.c5
-rwxr-xr-xctdb/tests/takeover/lcp2.005.sh63
-rwxr-xr-xctdb/tests/takeover/lcp2.023.sh34
-rwxr-xr-xctdb/tests/takeover/lcp2.031.sh143
-rwxr-xr-xctdb/tests/takeover/lcp2.032.sh450
5 files changed, 673 insertions, 22 deletions
diff --git a/ctdb/server/ctdb_takeover.c b/ctdb/server/ctdb_takeover.c
index c21736ed085..d3a6e25aa3a 100644
--- a/ctdb/server/ctdb_takeover.c
+++ b/ctdb/server/ctdb_takeover.c
@@ -1958,7 +1958,7 @@ static bool lcp2_failback_candidate(struct ctdb_context *ctdb,
mindstnode, mindstimbl - lcp2_imbalances[mindstnode]));
- lcp2_imbalances[srcnode] = srcimbl;
+ lcp2_imbalances[srcnode] = minsrcimbl;
lcp2_imbalances[mindstnode] = mindstimbl;
minip->pnn = mindstnode;
@@ -2024,10 +2024,13 @@ try_again:
* iterate through candidates. Usually the 1st one will be
* used, so this doesn't cost much...
*/
+ DEBUG(DEBUG_DEBUG,("+++++++++++++++++++++++++++++++++++++++++\n"));
+ DEBUG(DEBUG_DEBUG,("Selecting most imbalanced node from:\n"));
lips = talloc_array(ctdb, struct lcp2_imbalance_pnn, numnodes);
for (i=0; i<numnodes; i++) {
lips[i].imbalance = lcp2_imbalances[i];
lips[i].pnn = i;
+ DEBUG(DEBUG_DEBUG,(" %d [%d]\n", i, lcp2_imbalances[i]));
}
qsort(lips, numnodes, sizeof(struct lcp2_imbalance_pnn),
lcp2_cmp_imbalance_pnn);
diff --git a/ctdb/tests/takeover/lcp2.005.sh b/ctdb/tests/takeover/lcp2.005.sh
index 113e52f4acc..4e0bed850a0 100755
--- a/ctdb/tests/takeover/lcp2.005.sh
+++ b/ctdb/tests/takeover/lcp2.005.sh
@@ -10,6 +10,11 @@ required_result <<EOF
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: CONSIDERING MOVES (UNASSIGNED)
DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [0]
+DATE TIME [PID]: 1 [539166]
+DATE TIME [PID]: 2 [0]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: CONSIDERING MOVES FROM 1 [539166]
DATE TIME [PID]: 1 [-116718] -> 192.168.21.254 -> 0 [+0]
@@ -32,8 +37,13 @@ DATE TIME [PID]: 1 [-121110] -> 192.168.20.249 -> 0 [+0]
DATE TIME [PID]: 1 [-121110] -> 192.168.20.249 -> 2 [+0]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: 1 [-121363] -> 192.168.20.253 -> 0 [+0]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [0]
+DATE TIME [PID]: 1 [417803]
+DATE TIME [PID]: 2 [0]
DATE TIME [PID]: ----------------------------------------
-DATE TIME [PID]: CONSIDERING MOVES FROM 1 [418056]
+DATE TIME [PID]: CONSIDERING MOVES FROM 1 [417803]
DATE TIME [PID]: 1 [-102557] -> 192.168.21.254 -> 0 [+14161]
DATE TIME [PID]: 1 [-102557] -> 192.168.21.254 -> 2 [+0]
DATE TIME [PID]: 1 [-102810] -> 192.168.21.253 -> 0 [+14161]
@@ -52,8 +62,13 @@ DATE TIME [PID]: 1 [-105485] -> 192.168.20.249 -> 0 [+15625]
DATE TIME [PID]: 1 [-105485] -> 192.168.20.249 -> 2 [+0]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: 1 [-105738] -> 192.168.20.251 -> 2 [+0]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [0]
+DATE TIME [PID]: 1 [312065]
+DATE TIME [PID]: 2 [0]
DATE TIME [PID]: ----------------------------------------
-DATE TIME [PID]: CONSIDERING MOVES FROM 1 [312571]
+DATE TIME [PID]: CONSIDERING MOVES FROM 1 [312065]
DATE TIME [PID]: 1 [-88396] -> 192.168.21.254 -> 0 [+14161]
DATE TIME [PID]: 1 [-88396] -> 192.168.21.254 -> 2 [+14161]
DATE TIME [PID]: 1 [-88649] -> 192.168.21.253 -> 0 [+14161]
@@ -70,8 +85,13 @@ DATE TIME [PID]: 1 [-89609] -> 192.168.20.249 -> 0 [+15625]
DATE TIME [PID]: 1 [-89609] -> 192.168.20.249 -> 2 [+15876]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: 1 [-88649] -> 192.168.21.253 -> 0 [+14161]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [14161]
+DATE TIME [PID]: 1 [223416]
+DATE TIME [PID]: 2 [0]
DATE TIME [PID]: ----------------------------------------
-DATE TIME [PID]: CONSIDERING MOVES FROM 1 [222962]
+DATE TIME [PID]: CONSIDERING MOVES FROM 1 [223416]
DATE TIME [PID]: 1 [-72520] -> 192.168.21.254 -> 0 [+30037]
DATE TIME [PID]: 1 [-72520] -> 192.168.21.254 -> 2 [+14161]
DATE TIME [PID]: 1 [-72520] -> 192.168.21.252 -> 0 [+30290]
@@ -86,8 +106,13 @@ DATE TIME [PID]: 1 [-75448] -> 192.168.20.249 -> 0 [+29786]
DATE TIME [PID]: 1 [-75448] -> 192.168.20.249 -> 2 [+15876]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: 1 [-75448] -> 192.168.20.254 -> 2 [+15625]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [14161]
+DATE TIME [PID]: 1 [147968]
+DATE TIME [PID]: 2 [15625]
DATE TIME [PID]: ----------------------------------------
-DATE TIME [PID]: CONSIDERING MOVES FROM 1 [147514]
+DATE TIME [PID]: CONSIDERING MOVES FROM 1 [147968]
DATE TIME [PID]: 1 [-58359] -> 192.168.21.254 -> 0 [+30037]
DATE TIME [PID]: 1 [-58359] -> 192.168.21.254 -> 2 [+28322]
DATE TIME [PID]: 1 [-58359] -> 192.168.21.252 -> 0 [+30290]
@@ -100,8 +125,13 @@ DATE TIME [PID]: 1 [-59823] -> 192.168.20.249 -> 0 [+29786]
DATE TIME [PID]: 1 [-59823] -> 192.168.20.249 -> 2 [+31501]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: 1 [-59823] -> 192.168.20.250 -> 0 [+29786]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [43947]
+DATE TIME [PID]: 1 [88145]
+DATE TIME [PID]: 2 [15625]
DATE TIME [PID]: ----------------------------------------
-DATE TIME [PID]: CONSIDERING MOVES FROM 1 [87691]
+DATE TIME [PID]: CONSIDERING MOVES FROM 1 [88145]
DATE TIME [PID]: 1 [-44198] -> 192.168.21.254 -> 0 [+44198]
DATE TIME [PID]: 1 [-44198] -> 192.168.21.254 -> 2 [+28322]
DATE TIME [PID]: 1 [-44198] -> 192.168.21.252 -> 0 [+44451]
@@ -112,6 +142,11 @@ DATE TIME [PID]: 1 [-43947] -> 192.168.20.249 -> 0 [+45662]
DATE TIME [PID]: 1 [-43947] -> 192.168.20.249 -> 2 [+31501]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: 1 [-44198] -> 192.168.21.254 -> 2 [+28322]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [43947]
+DATE TIME [PID]: 1 [43947]
+DATE TIME [PID]: 2 [43947]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: CONSIDERING MOVES FROM 0 [43947]
DATE TIME [PID]: 0 [-28322] -> 192.168.21.253 -> 0 [+28322]
@@ -122,6 +157,15 @@ DATE TIME [PID]: 0 [-29786] -> 192.168.20.250 -> 0 [+29786]
DATE TIME [PID]: 0 [-29786] -> 192.168.20.250 -> 2 [+45915]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: CONSIDERING MOVES FROM 1 [43947]
+DATE TIME [PID]: 1 [-28322] -> 192.168.21.252 -> 0 [+44451]
+DATE TIME [PID]: 1 [-28322] -> 192.168.21.252 -> 2 [+44198]
+DATE TIME [PID]: 1 [-29786] -> 192.168.20.252 -> 0 [+45915]
+DATE TIME [PID]: 1 [-29786] -> 192.168.20.252 -> 2 [+45662]
+DATE TIME [PID]: 1 [-29786] -> 192.168.20.249 -> 0 [+45662]
+DATE TIME [PID]: 1 [-29786] -> 192.168.20.249 -> 2 [+45662]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: CONSIDERING MOVES FROM 2 [43947]
DATE TIME [PID]: 2 [-28322] -> 192.168.21.254 -> 0 [+44198]
DATE TIME [PID]: 2 [-28322] -> 192.168.21.254 -> 2 [+28322]
@@ -130,15 +174,6 @@ DATE TIME [PID]: 2 [-29786] -> 192.168.20.254 -> 2 [+29786]
DATE TIME [PID]: 2 [-29786] -> 192.168.20.251 -> 0 [+45915]
DATE TIME [PID]: 2 [-29786] -> 192.168.20.251 -> 2 [+29786]
DATE TIME [PID]: ----------------------------------------
-DATE TIME [PID]: ----------------------------------------
-DATE TIME [PID]: CONSIDERING MOVES FROM 1 [43744]
-DATE TIME [PID]: 1 [-28322] -> 192.168.21.252 -> 0 [+44451]
-DATE TIME [PID]: 1 [-28322] -> 192.168.21.252 -> 2 [+44198]
-DATE TIME [PID]: 1 [-29786] -> 192.168.20.252 -> 0 [+45915]
-DATE TIME [PID]: 1 [-29786] -> 192.168.20.252 -> 2 [+45662]
-DATE TIME [PID]: 1 [-29786] -> 192.168.20.249 -> 0 [+45662]
-DATE TIME [PID]: 1 [-29786] -> 192.168.20.249 -> 2 [+45662]
-DATE TIME [PID]: ----------------------------------------
192.168.21.254 2
192.168.21.253 0
192.168.21.252 1
diff --git a/ctdb/tests/takeover/lcp2.023.sh b/ctdb/tests/takeover/lcp2.023.sh
index 9bffc58c6ba..0f35b3ea88d 100755
--- a/ctdb/tests/takeover/lcp2.023.sh
+++ b/ctdb/tests/takeover/lcp2.023.sh
@@ -10,6 +10,11 @@ required_result <<EOF
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: CONSIDERING MOVES (UNASSIGNED)
DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [89609]
+DATE TIME [PID]: 1 [0]
+DATE TIME [PID]: 2 [147968]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: CONSIDERING MOVES FROM 2 [147968]
DATE TIME [PID]: 2 [-58359] -> 192.168.21.254 -> 1 [+0]
@@ -19,6 +24,11 @@ DATE TIME [PID]: 2 [-59823] -> 192.168.20.251 -> 1 [+0]
DATE TIME [PID]: 2 [-59823] -> 192.168.20.249 -> 1 [+0]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: 2 [-59823] -> 192.168.20.251 -> 1 [+0]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [89609]
+DATE TIME [PID]: 1 [0]
+DATE TIME [PID]: 2 [88145]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: CONSIDERING MOVES FROM 0 [89609]
DATE TIME [PID]: 0 [-42483] -> 192.168.21.253 -> 1 [+14161]
@@ -27,6 +37,11 @@ DATE TIME [PID]: 0 [-45662] -> 192.168.20.252 -> 1 [+15625]
DATE TIME [PID]: 0 [-45411] -> 192.168.20.250 -> 1 [+16129]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: 0 [-45662] -> 192.168.20.254 -> 1 [+15625]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [43947]
+DATE TIME [PID]: 1 [15625]
+DATE TIME [PID]: 2 [88145]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: CONSIDERING MOVES FROM 2 [88145]
DATE TIME [PID]: 2 [-44198] -> 192.168.21.254 -> 1 [+28322]
@@ -35,24 +50,29 @@ DATE TIME [PID]: 2 [-43947] -> 192.168.20.253 -> 1 [+31501]
DATE TIME [PID]: 2 [-43947] -> 192.168.20.249 -> 1 [+31501]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: 2 [-44198] -> 192.168.21.254 -> 1 [+28322]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [43947]
+DATE TIME [PID]: 1 [43947]
+DATE TIME [PID]: 2 [43947]
DATE TIME [PID]: ----------------------------------------
-DATE TIME [PID]: CONSIDERING MOVES FROM 0 [44198]
+DATE TIME [PID]: CONSIDERING MOVES FROM 0 [43947]
DATE TIME [PID]: 0 [-28322] -> 192.168.21.253 -> 1 [+44198]
DATE TIME [PID]: 0 [-29786] -> 192.168.20.252 -> 1 [+45662]
DATE TIME [PID]: 0 [-29786] -> 192.168.20.250 -> 1 [+45915]
DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: ----------------------------------------
-DATE TIME [PID]: CONSIDERING MOVES FROM 2 [44198]
-DATE TIME [PID]: 2 [-28322] -> 192.168.21.252 -> 1 [+44198]
-DATE TIME [PID]: 2 [-29786] -> 192.168.20.253 -> 1 [+45662]
-DATE TIME [PID]: 2 [-29786] -> 192.168.20.249 -> 1 [+45662]
-DATE TIME [PID]: ----------------------------------------
-DATE TIME [PID]: ----------------------------------------
DATE TIME [PID]: CONSIDERING MOVES FROM 1 [43947]
DATE TIME [PID]: 1 [-28322] -> 192.168.21.254 -> 1 [+28322]
DATE TIME [PID]: 1 [-29786] -> 192.168.20.254 -> 1 [+29786]
DATE TIME [PID]: 1 [-29786] -> 192.168.20.251 -> 1 [+29786]
DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: CONSIDERING MOVES FROM 2 [43947]
+DATE TIME [PID]: 2 [-28322] -> 192.168.21.252 -> 1 [+44198]
+DATE TIME [PID]: 2 [-29786] -> 192.168.20.253 -> 1 [+45662]
+DATE TIME [PID]: 2 [-29786] -> 192.168.20.249 -> 1 [+45662]
+DATE TIME [PID]: ----------------------------------------
192.168.21.254 1
192.168.21.253 0
192.168.21.252 2
diff --git a/ctdb/tests/takeover/lcp2.031.sh b/ctdb/tests/takeover/lcp2.031.sh
new file mode 100755
index 00000000000..6c5acf91ffa
--- /dev/null
+++ b/ctdb/tests/takeover/lcp2.031.sh
@@ -0,0 +1,143 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "12+4 IPs, 4 nodes, 3 -> 4 healthy"
+
+export CTDB_TEST_LOGLEVEL=4
+
+required_result <<EOF
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: CONSIDERING MOVES (UNASSIGNED)
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [0]
+DATE TIME [PID]: 1 [181370]
+DATE TIME [PID]: 2 [128630]
+DATE TIME [PID]: 3 [128881]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: CONSIDERING MOVES FROM 1 [181370]
+DATE TIME [PID]: 1 [-64566] -> 130.216.30.178 -> 0 [+0]
+DATE TIME [PID]: 1 [-64566] -> 130.216.30.176 -> 0 [+0]
+DATE TIME [PID]: 1 [-64315] -> 130.216.30.175 -> 0 [+0]
+DATE TIME [PID]: 1 [-64315] -> 130.216.30.171 -> 0 [+0]
+DATE TIME [PID]: 1 [-52489] -> 10.19.99.253 -> 0 [+0]
+DATE TIME [PID]: 1 [-52489] -> 10.19.99.250 -> 0 [+0]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: 1 [-64566] -> 130.216.30.178 -> 0 [+0]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [0]
+DATE TIME [PID]: 1 [116804]
+DATE TIME [PID]: 2 [128630]
+DATE TIME [PID]: 3 [128881]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: CONSIDERING MOVES FROM 3 [128881]
+DATE TIME [PID]: 3 [-55099] -> 130.216.30.180 -> 0 [+15625]
+DATE TIME [PID]: 3 [-55099] -> 130.216.30.177 -> 0 [+15876]
+DATE TIME [PID]: 3 [-55350] -> 130.216.30.174 -> 0 [+15129]
+DATE TIME [PID]: 3 [-55350] -> 130.216.30.173 -> 0 [+15129]
+DATE TIME [PID]: 3 [-36864] -> 10.19.99.252 -> 0 [+9216]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: 3 [-55350] -> 130.216.30.174 -> 0 [+15129]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [15129]
+DATE TIME [PID]: 1 [116804]
+DATE TIME [PID]: 2 [128630]
+DATE TIME [PID]: 3 [73531]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: CONSIDERING MOVES FROM 2 [128630]
+DATE TIME [PID]: 2 [-55099] -> 130.216.30.181 -> 0 [+30754]
+DATE TIME [PID]: 2 [-55099] -> 130.216.30.179 -> 0 [+31258]
+DATE TIME [PID]: 2 [-55099] -> 130.216.30.172 -> 0 [+31005]
+DATE TIME [PID]: 2 [-55099] -> 130.216.30.170 -> 0 [+30754]
+DATE TIME [PID]: 2 [-36864] -> 10.19.99.251 -> 0 [+18432]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: 2 [-55099] -> 130.216.30.181 -> 0 [+30754]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [45883]
+DATE TIME [PID]: 1 [116804]
+DATE TIME [PID]: 2 [73531]
+DATE TIME [PID]: 3 [73531]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: CONSIDERING MOVES FROM 1 [116804]
+DATE TIME [PID]: 1 [-48690] -> 130.216.30.176 -> 0 [+46630]
+DATE TIME [PID]: 1 [-49186] -> 130.216.30.175 -> 0 [+46387]
+DATE TIME [PID]: 1 [-49186] -> 130.216.30.171 -> 0 [+45883]
+DATE TIME [PID]: 1 [-43273] -> 10.19.99.253 -> 0 [+27648]
+DATE TIME [PID]: 1 [-43273] -> 10.19.99.250 -> 0 [+27648]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: 1 [-43273] -> 10.19.99.253 -> 0 [+27648]
+DATE TIME [PID]: +++++++++++++++++++++++++++++++++++++++++
+DATE TIME [PID]: Selecting most imbalanced node from:
+DATE TIME [PID]: 0 [73531]
+DATE TIME [PID]: 1 [73531]
+DATE TIME [PID]: 2 [73531]
+DATE TIME [PID]: 3 [73531]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: CONSIDERING MOVES FROM 0 [73531]
+DATE TIME [PID]: 0 [-39970] -> 130.216.30.181 -> 0 [+39970]
+DATE TIME [PID]: 0 [-39970] -> 130.216.30.178 -> 0 [+39970]
+DATE TIME [PID]: 0 [-39474] -> 130.216.30.174 -> 0 [+39474]
+DATE TIME [PID]: 0 [-27648] -> 10.19.99.253 -> 0 [+27648]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: CONSIDERING MOVES FROM 1 [73531]
+DATE TIME [PID]: 1 [-39474] -> 130.216.30.176 -> 0 [+55846]
+DATE TIME [PID]: 1 [-39970] -> 130.216.30.175 -> 0 [+55603]
+DATE TIME [PID]: 1 [-39970] -> 130.216.30.171 -> 0 [+55099]
+DATE TIME [PID]: 1 [-27648] -> 10.19.99.250 -> 0 [+43273]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: CONSIDERING MOVES FROM 2 [73531]
+DATE TIME [PID]: 2 [-39474] -> 130.216.30.179 -> 0 [+56099]
+DATE TIME [PID]: 2 [-39970] -> 130.216.30.172 -> 0 [+55350]
+DATE TIME [PID]: 2 [-39970] -> 130.216.30.170 -> 0 [+55099]
+DATE TIME [PID]: 2 [-27648] -> 10.19.99.251 -> 0 [+43273]
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: ----------------------------------------
+DATE TIME [PID]: CONSIDERING MOVES FROM 3 [73531]
+DATE TIME [PID]: 3 [-39970] -> 130.216.30.180 -> 0 [+56099]
+DATE TIME [PID]: 3 [-39970] -> 130.216.30.177 -> 0 [+55846]
+DATE TIME [PID]: 3 [-39474] -> 130.216.30.173 -> 0 [+55350]
+DATE TIME [PID]: 3 [-27648] -> 10.19.99.252 -> 0 [+43777]
+DATE TIME [PID]: ----------------------------------------
+130.216.30.181 0
+130.216.30.180 3
+130.216.30.179 2
+130.216.30.178 0
+130.216.30.177 3
+130.216.30.176 1
+130.216.30.175 1
+130.216.30.174 0
+130.216.30.173 3
+130.216.30.172 2
+130.216.30.171 1
+130.216.30.170 2
+10.19.99.253 0
+10.19.99.252 3
+10.19.99.251 2
+10.19.99.250 1
+EOF
+
+simple_test 0,0,0,0 <<EOF
+10.19.99.250 1
+10.19.99.251 2
+10.19.99.252 3
+10.19.99.253 1
+130.216.30.170 2
+130.216.30.171 1
+130.216.30.172 2
+130.216.30.173 3
+130.216.30.174 3
+130.216.30.175 1
+130.216.30.176 1
+130.216.30.177 3
+130.216.30.178 1
+130.216.30.179 2
+130.216.30.180 3
+130.216.30.181 2
+EOF
diff --git a/ctdb/tests/takeover/lcp2.032.sh b/ctdb/tests/takeover/lcp2.032.sh
new file mode 100755
index 00000000000..e9df6eb95e6
--- /dev/null
+++ b/ctdb/tests/takeover/lcp2.032.sh
@@ -0,0 +1,450 @@
+#!/bin/sh
+
+. "${TEST_SCRIPTS_DIR}/unit.sh"
+
+define_test "12+4 IPs, 4 nodes, multiple transitions"
+
+export CTDB_TEST_LOGLEVEL=0
+
+set -e
+
+echo "Node 3 stopped -> continue node 3, all healthy"
+
+required_result <<EOF
+130.216.30.181 2
+130.216.30.180 3
+130.216.30.179 2
+130.216.30.178 1
+130.216.30.177 3
+130.216.30.176 0
+130.216.30.175 1
+130.216.30.174 0
+130.216.30.173 3
+130.216.30.172 2
+130.216.30.171 1
+130.216.30.170 0
+10.19.99.253 1
+10.19.99.252 3
+10.19.99.251 2
+10.19.99.250 0
+EOF
+
+simple_test 0,0,0,0 <<EOF
+10.19.99.250 0
+10.19.99.251 2
+10.19.99.252 0
+10.19.99.253 1
+130.216.30.170 0
+130.216.30.171 1
+130.216.30.172 2
+130.216.30.173 2
+130.216.30.174 0
+130.216.30.175 1
+130.216.30.176 0
+130.216.30.177 0
+130.216.30.178 1
+130.216.30.179 2
+130.216.30.180 1
+130.216.30.181 2
+EOF
+
+echo "All healthy -> stop node 0"
+
+required_result <<EOF
+130.216.30.181 2
+130.216.30.180 3
+130.216.30.179 2
+130.216.30.178 1
+130.216.30.177 3
+130.216.30.176 1
+130.216.30.175 1
+130.216.30.174 3
+130.216.30.173 3
+130.216.30.172 2
+130.216.30.171 1
+130.216.30.170 2
+10.19.99.253 1
+10.19.99.252 3
+10.19.99.251 2
+10.19.99.250 1
+EOF
+
+simple_test 0x20,0,0,0 <<EOF
+$_out
+EOF
+
+echo "Continue node 0, all healthy"
+
+required_result <<EOF
+130.216.30.181 0
+130.216.30.180 3
+130.216.30.179 2
+130.216.30.178 0
+130.216.30.177 3
+130.216.30.176 1
+130.216.30.175 1
+130.216.30.174 0
+130.216.30.173 3
+130.216.30.172 2
+130.216.30.171 1
+130.216.30.170 2
+10.19.99.253 0
+10.19.99.252 3
+10.19.99.251 2
+10.19.99.250 1
+EOF
+
+simple_test 0,0,0,0 <<EOF
+$_out
+EOF
+
+echo "All healthy -> stop node 1"
+
+required_result <<EOF
+130.216.30.181 0
+130.216.30.180 3
+130.216.30.179 2
+130.216.30.178 0
+130.216.30.177 3
+130.216.30.176 2
+130.216.30.175 0
+130.216.30.174 0
+130.216.30.173 3
+130.216.30.172 2
+130.216.30.171 3
+130.216.30.170 2
+10.19.99.253 0
+10.19.99.252 3
+10.19.99.251 2
+10.19.99.250 0
+EOF
+
+simple_test 0,0x20,0,0 <<EOF
+$_out
+EOF
+
+echo "Continue node 1, all healthy"
+
+required_result <<EOF
+130.216.30.181 0
+130.216.30.180 1
+130.216.30.179 1
+130.216.30.178 0
+130.216.30.177 3
+130.216.30.176 2
+130.216.30.175 1
+130.216.30.174 0
+130.216.30.173 3
+130.216.30.172 2
+130.216.30.171 3
+130.216.30.170 2
+10.19.99.253 1
+10.19.99.252 3
+10.19.99.251 2
+10.19.99.250 0
+EOF
+
+simple_test 0,0,0,0 <<EOF
+$_out
+EOF
+
+echo "All healthy -> Stop node 2"
+
+required_result <<EOF
+130.216.30.181 0
+130.216.30.180 1
+130.216.30.179 1
+130.216.30.178 0
+130.216.30.177 3
+130.216.30.176 3
+130.216.30.175 1
+130.216.30.174 0
+130.216.30.173 3
+130.216.30.172 1
+130.216.30.171 3
+130.216.30.170 0
+10.19.99.253 1
+10.19.99.252 3
+10.19.99.251 1
+10.19.99.250 0
+EOF
+
+simple_test 0,0,0x20,0 <<EOF
+$_out
+EOF
+
+echo "Continue node 2, all healthy"
+
+required_result <<EOF
+130.216.30.181 2
+130.216.30.180 1
+130.216.30.179 1
+130.216.30.178 0
+130.216.30.177 2
+130.216.30.176 3
+130.216.30.175 2
+130.216.30.174 0
+130.216.30.173 3
+130.216.30.172 1
+130.216.30.171 3
+130.216.30.170 0
+10.19.99.253 2
+10.19.99.252 3
+10.19.99.251 1
+10.19.99.250 0
+EOF
+
+simple_test 0,0,0,0 <<EOF
+$_out
+EOF
+
+echo "All healthy -> stop node 3"
+
+required_result <<EOF
+130.216.30.181 2
+130.216.30.180 1
+130.216.30.179 1
+130.216.30.178 0
+130.216.30.177 2
+130.216.30.176 0
+130.216.30.175 2
+130.216.30.174 0
+130.216.30.173 2
+130.216.30.172 1
+130.216.30.171 1
+130.216.30.170 0
+10.19.99.253 2
+10.19.99.252 0
+10.19.99.251 1
+10.19.99.250 0
+EOF
+
+simple_test 0,0,0,0x20 <<EOF
+$_out
+EOF
+
+echo "Continue node 3, all healthy"
+
+required_result <<EOF
+130.216.30.181 2
+130.216.30.180 3
+130.216.30.179 1
+130.216.30.178 3
+130.216.30.177 2
+130.216.30.176 0
+130.216.30.175 3
+130.216.30.174 0
+130.216.30.173 2
+130.216.30.172 1
+130.216.30.171 1
+130.216.30.170 0
+10.19.99.253 2
+10.19.99.252 3
+10.19.99.251 1
+10.19.99.250 0
+EOF
+
+simple_test 0,0,0,0 <<EOF
+$_out
+EOF
+
+echo "All healthy -> node 0 stopped"
+
+required_result <<EOF
+130.216.30.181 2
+130.216.30.180 3
+130.216.30.179 1
+130.216.30.178 3
+130.216.30.177 2
+130.216.30.176 1
+130.216.30.175 3
+130.216.30.174 2
+130.216.30.173 2
+130.216.30.172 1
+130.216.30.171 1
+130.216.30.170 3
+10.19.99.253 2
+10.19.99.252 3
+10.19.99.251 1
+10.19.99.250 2
+EOF
+
+simple_test 0x20,0,0,0 <<EOF
+$_out
+EOF
+
+echo "Continue node 0, all healthy"
+
+required_result <<EOF
+130.216.30.181 2
+130.216.30.180 0
+130.216.30.179 0
+130.216.30.178 3
+130.216.30.177 2
+130.216.30.176 1
+130.216.30.175 3
+130.216.30.174 0
+130.216.30.173 2
+130.216.30.172 1
+130.216.30.171 1
+130.216.30.170 3
+10.19.99.253 0
+10.19.99.252 3
+10.19.99.251 1
+10.19.99.250 2
+EOF
+
+simple_test 0,0,0,0 <<EOF
+$_out
+EOF
+
+echo "All healthy -> node 1 stopped"
+
+required_result <<EOF
+130.216.30.181 2
+130.216.30.180 0
+130.216.30.179 0
+130.216.30.178 3
+130.216.30.177 2
+130.216.30.176 3
+130.216.30.175 3
+130.216.30.174 0
+130.216.30.173 2
+130.216.30.172 0
+130.216.30.171 2
+130.216.30.170 3
+10.19.99.253 0
+10.19.99.252 3
+10.19.99.251 0
+10.19.99.250 2
+EOF
+
+simple_test 0,0x20,0,0 <<EOF
+$_out
+EOF
+
+echo "Continue node 1, all healthy"
+
+required_result <<EOF
+130.216.30.181 1
+130.216.30.180 0
+130.216.30.179 0
+130.216.30.178 1
+130.216.30.177 2
+130.216.30.176 3
+130.216.30.175 3
+130.216.30.174 1
+130.216.30.173 2
+130.216.30.172 0
+130.216.30.171 2
+130.216.30.170 3
+10.19.99.253 1
+10.19.99.252 3
+10.19.99.251 0
+10.19.99.250 2
+EOF
+
+simple_test 0,0,0,0 <<EOF
+$_out
+EOF
+
+echo "All healthy -> node 2 stopped"
+
+required_result <<EOF
+130.216.30.181 1
+130.216.30.180 0
+130.216.30.179 0
+130.216.30.178 1
+130.216.30.177 3
+130.216.30.176 3
+130.216.30.175 3
+130.216.30.174 1
+130.216.30.173 1
+130.216.30.172 0
+130.216.30.171 0
+130.216.30.170 3
+10.19.99.253 1
+10.19.99.252 3
+10.19.99.251 0
+10.19.99.250 1
+EOF
+
+simple_test 0,0,0x20,0 <<EOF
+$_out
+EOF
+
+echo "Continue node 2, all healthy"
+
+required_result <<EOF
+130.216.30.181 1
+130.216.30.180 2
+130.216.30.179 0
+130.216.30.178 1
+130.216.30.177 2
+130.216.30.176 3
+130.216.30.175 3
+130.216.30.174 2
+130.216.30.173 1
+130.216.30.172 0
+130.216.30.171 0
+130.216.30.170 3
+10.19.99.253 2
+10.19.99.252 3
+10.19.99.251 0
+10.19.99.250 1
+EOF
+
+simple_test 0,0,0,0 <<EOF
+$_out
+EOF
+
+echo "All healthy -> node 3 stopped"
+
+required_result <<EOF
+130.216.30.181 1
+130.216.30.180 2
+130.216.30.179 0
+130.216.30.178 1
+130.216.30.177 2
+130.216.30.176 0
+130.216.30.175 2
+130.216.30.174 2
+130.216.30.173 1
+130.216.30.172 0
+130.216.30.171 0
+130.216.30.170 1
+10.19.99.253 2
+10.19.99.252 0
+10.19.99.251 0
+10.19.99.250 1
+EOF
+
+simple_test 0,0,0,0x20 <<EOF
+$_out
+EOF
+
+echo "Continue node 3, all healthy"
+
+required_result <<EOF
+130.216.30.181 3
+130.216.30.180 2
+130.216.30.179 3
+130.216.30.178 1
+130.216.30.177 2
+130.216.30.176 0
+130.216.30.175 3
+130.216.30.174 2
+130.216.30.173 1
+130.216.30.172 0
+130.216.30.171 0
+130.216.30.170 1
+10.19.99.253 2
+10.19.99.252 3
+10.19.99.251 0
+10.19.99.250 1
+EOF
+
+simple_test 0,0,0,0 <<EOF
+$_out
+EOF
+