Blame SOURCES/bz1078078-pcmk-crmd_do_not_overwrite_existing_node_state_when_fencing_completes.patch

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
-}