|
|
7ebc05 |
commit e0bcac68df1f684c1879ddb76387c47b177ece6f
|
|
|
7ebc05 |
Author: Andrew Beekhof <andrew@beekhof.net>
|
|
|
7ebc05 |
Date: Tue Feb 18 10:37:07 2014 +1100
|
|
|
7ebc05 |
|
|
|
7ebc05 |
Fix: crmd: Do not overwrite existing node state when fencing completes
|
|
|
7ebc05 |
|
|
|
7ebc05 |
Let the normal membership callbacks do that. This allows us to function
|
|
|
7ebc05 |
correctly when a node returns before we get the fencing notification.
|
|
|
7ebc05 |
|
|
|
7ebc05 |
(cherry picked from commit e777b1759786d0a917299399e8a1fee1242a1eef)
|
|
|
7ebc05 |
|
|
|
7ebc05 |
Conflicts:
|
|
|
7ebc05 |
crmd/callbacks.c
|
|
|
7ebc05 |
crmd/te_utils.c
|
|
|
7ebc05 |
crmd/utils.c
|
|
|
7ebc05 |
|
|
|
7ebc05 |
diff --git a/crmd/crmd_utils.h b/crmd/crmd_utils.h
|
|
|
7ebc05 |
index 92d14b1..ca1e177 100644
|
|
|
7ebc05 |
--- a/crmd/crmd_utils.h
|
|
|
7ebc05 |
+++ b/crmd/crmd_utils.h
|
|
|
7ebc05 |
@@ -99,6 +99,7 @@ void crmd_join_phase_log(int level);
|
|
|
7ebc05 |
const char *get_timer_desc(fsa_timer_t * timer);
|
|
|
7ebc05 |
gboolean too_many_st_failures(void);
|
|
|
7ebc05 |
void st_fail_count_reset(const char * target);
|
|
|
7ebc05 |
+void crmd_peer_down(crm_node_t *peer, bool full);
|
|
|
7ebc05 |
|
|
|
7ebc05 |
# define fsa_register_cib_callback(id, flag, data, fn) do { \
|
|
|
7ebc05 |
fsa_cib_conn->cmds->register_callback( \
|
|
|
7ebc05 |
diff --git a/crmd/te_actions.c b/crmd/te_actions.c
|
|
|
7ebc05 |
index 4e3bc22..ee66af6 100644
|
|
|
7ebc05 |
--- a/crmd/te_actions.c
|
|
|
7ebc05 |
+++ b/crmd/te_actions.c
|
|
|
7ebc05 |
@@ -75,11 +75,8 @@ send_stonith_update(crm_action_t * action, const char *target, const char *uuid)
|
|
|
7ebc05 |
crm_info("Recording uuid '%s' for node '%s'", uuid, target);
|
|
|
7ebc05 |
peer->uuid = strdup(uuid);
|
|
|
7ebc05 |
}
|
|
|
7ebc05 |
- crm_update_peer_proc(__FUNCTION__, peer, crm_proc_none, NULL);
|
|
|
7ebc05 |
- crm_update_peer_state(__FUNCTION__, peer, CRM_NODE_LOST, 0);
|
|
|
7ebc05 |
- crm_update_peer_expected(__FUNCTION__, peer, CRMD_JOINSTATE_DOWN);
|
|
|
7ebc05 |
- crm_update_peer_join(__FUNCTION__, peer, crm_join_none);
|
|
|
7ebc05 |
|
|
|
7ebc05 |
+ crmd_peer_down(peer, TRUE);
|
|
|
7ebc05 |
node_state =
|
|
|
7ebc05 |
do_update_node_cib(peer,
|
|
|
7ebc05 |
node_update_cluster | node_update_peer | node_update_join |
|
|
|
7ebc05 |
diff --git a/crmd/te_utils.c b/crmd/te_utils.c
|
|
|
7ebc05 |
index c7260fd..9edb128 100644
|
|
|
7ebc05 |
--- a/crmd/te_utils.c
|
|
|
7ebc05 |
+++ b/crmd/te_utils.c
|
|
|
7ebc05 |
@@ -234,11 +234,7 @@ tengine_stonith_notify(stonith_t * st, stonith_event_t * st_event)
|
|
|
7ebc05 |
|
|
|
7ebc05 |
}
|
|
|
7ebc05 |
|
|
|
7ebc05 |
- /* Everyone records them as safely down */
|
|
|
7ebc05 |
- crm_update_peer_proc(__FUNCTION__, peer, crm_proc_none, NULL);
|
|
|
7ebc05 |
- crm_update_peer_state(__FUNCTION__, peer, CRM_NODE_LOST, 0);
|
|
|
7ebc05 |
- crm_update_peer_expected(__FUNCTION__, peer, CRMD_JOINSTATE_DOWN);
|
|
|
7ebc05 |
- crm_update_peer_join(__FUNCTION__, peer, crm_join_none);
|
|
|
7ebc05 |
+ crmd_peer_down(peer, TRUE);
|
|
|
7ebc05 |
}
|
|
|
7ebc05 |
}
|
|
|
7ebc05 |
|
|
|
7ebc05 |
diff --git a/crmd/utils.c b/crmd/utils.c
|
|
|
7ebc05 |
index 07c71b2..a8516c4 100644
|
|
|
7ebc05 |
--- a/crmd/utils.c
|
|
|
7ebc05 |
+++ b/crmd/utils.c
|
|
|
7ebc05 |
@@ -1091,3 +1091,13 @@ update_attrd(const char *host, const char *name, const char *value, const char *
|
|
|
7ebc05 |
}
|
|
|
7ebc05 |
}
|
|
|
7ebc05 |
}
|
|
|
7ebc05 |
+
|
|
|
7ebc05 |
+void crmd_peer_down(crm_node_t *peer, bool full)
|
|
|
7ebc05 |
+{
|
|
|
7ebc05 |
+ if(full && peer->state == NULL) {
|
|
|
7ebc05 |
+ crm_update_peer_state(__FUNCTION__, peer, CRM_NODE_LOST, 0);
|
|
|
7ebc05 |
+ crm_update_peer_proc(__FUNCTION__, peer, crm_proc_none, NULL);
|
|
|
7ebc05 |
+ }
|
|
|
7ebc05 |
+ crm_update_peer_join(__FUNCTION__, peer, crm_join_none);
|
|
|
7ebc05 |
+ crm_update_peer_expected(__FUNCTION__, peer, CRMD_JOINSTATE_DOWN);
|
|
|
7ebc05 |
+}
|
|
|
7ebc05 |
diff --git a/pengine/test10/whitebox-orphan-ms.pe.dot b/pengine/test10/whitebox-orphan-ms.pe.dot
|
|
|
7ebc05 |
deleted file mode 100644
|
|
|
7ebc05 |
index 81c37eb..0000000
|
|
|
7ebc05 |
--- a/pengine/test10/whitebox-orphan-ms.pe.dot
|
|
|
7ebc05 |
+++ /dev/null
|
|
|
7ebc05 |
@@ -1,69 +0,0 @@
|
|
|
7ebc05 |
-digraph "g" {
|
|
|
7ebc05 |
-"FencingFail_start_0 18node1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"FencingFail_stop_0 18node3" -> "FencingFail_start_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"FencingFail_stop_0 18node3" -> "all_stopped" [ style = bold]
|
|
|
7ebc05 |
-"FencingFail_stop_0 18node3" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"all_stopped" [ style=bold color="green" fontcolor="orange"]
|
|
|
7ebc05 |
-"container1_delete_0 18node1" -> "container1_start_0 <none>" [ style = dashed]
|
|
|
7ebc05 |
-"container1_delete_0 18node1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"container1_delete_0 18node2" -> "container1_start_0 <none>" [ style = dashed]
|
|
|
7ebc05 |
-"container1_delete_0 18node2" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"container1_delete_0 18node3" -> "container1_start_0 <none>" [ style = dashed]
|
|
|
7ebc05 |
-"container1_delete_0 18node3" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"container1_start_0 <none>" [ style=dashed color="red" fontcolor="black"]
|
|
|
7ebc05 |
-"container1_stop_0 18node1" -> "all_stopped" [ style = bold]
|
|
|
7ebc05 |
-"container1_stop_0 18node1" -> "container1_delete_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"container1_stop_0 18node1" -> "container1_delete_0 18node2" [ style = bold]
|
|
|
7ebc05 |
-"container1_stop_0 18node1" -> "container1_delete_0 18node3" [ style = bold]
|
|
|
7ebc05 |
-"container1_stop_0 18node1" -> "container1_start_0 <none>" [ style = dashed]
|
|
|
7ebc05 |
-"container1_stop_0 18node1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"container2_delete_0 18node1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"container2_delete_0 18node2" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"container2_delete_0 18node3" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"container2_stop_0 18node1" -> "all_stopped" [ style = bold]
|
|
|
7ebc05 |
-"container2_stop_0 18node1" -> "container2_delete_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"container2_stop_0 18node1" -> "container2_delete_0 18node2" [ style = bold]
|
|
|
7ebc05 |
-"container2_stop_0 18node1" -> "container2_delete_0 18node3" [ style = bold]
|
|
|
7ebc05 |
-"container2_stop_0 18node1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc-ms_delete_0 18node1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc-ms_delete_0 18node2" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc-ms_delete_0 18node3" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc-ms_demote_0 lxc1" -> "lxc-ms_stop_0 lxc1" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_demote_0 lxc1" -> "lxc-ms_stop_0 lxc2" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_demote_0 lxc1" -> "lxc1_stop_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_demote_0 lxc1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc-ms_demote_0 lxc2" -> "lxc-ms_stop_0 lxc1" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_demote_0 lxc2" -> "lxc-ms_stop_0 lxc2" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_demote_0 lxc2" -> "lxc2_stop_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_demote_0 lxc2" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc1" -> "all_stopped" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc1" -> "lxc-ms_delete_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc1" -> "lxc-ms_delete_0 18node2" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc1" -> "lxc-ms_delete_0 18node3" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc1" -> "lxc1_stop_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc2" -> "all_stopped" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc2" -> "lxc-ms_delete_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc2" -> "lxc-ms_delete_0 18node2" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc2" -> "lxc-ms_delete_0 18node3" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc2" -> "lxc2_stop_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"lxc-ms_stop_0 lxc2" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc1_delete_0 18node1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc1_delete_0 18node2" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc1_delete_0 18node3" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc1_stop_0 18node1" -> "all_stopped" [ style = bold]
|
|
|
7ebc05 |
-"lxc1_stop_0 18node1" -> "container1_stop_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"lxc1_stop_0 18node1" -> "lxc1_delete_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"lxc1_stop_0 18node1" -> "lxc1_delete_0 18node2" [ style = bold]
|
|
|
7ebc05 |
-"lxc1_stop_0 18node1" -> "lxc1_delete_0 18node3" [ style = bold]
|
|
|
7ebc05 |
-"lxc1_stop_0 18node1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc2_delete_0 18node1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc2_delete_0 18node2" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc2_delete_0 18node3" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-"lxc2_stop_0 18node1" -> "all_stopped" [ style = bold]
|
|
|
7ebc05 |
-"lxc2_stop_0 18node1" -> "container2_stop_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"lxc2_stop_0 18node1" -> "lxc2_delete_0 18node1" [ style = bold]
|
|
|
7ebc05 |
-"lxc2_stop_0 18node1" -> "lxc2_delete_0 18node2" [ style = bold]
|
|
|
7ebc05 |
-"lxc2_stop_0 18node1" -> "lxc2_delete_0 18node3" [ style = bold]
|
|
|
7ebc05 |
-"lxc2_stop_0 18node1" [ style=bold color="green" fontcolor="black"]
|
|
|
7ebc05 |
-}
|