commit 6f2e3fc12f64f317280f9cb3d65cc08489516e39
Author: Andrew Beekhof <andrew@beekhof.net>
Date: Thu Apr 10 14:25:32 2014 +1000
Fix: PE: Ensure unfencing only happens once, even if the transition is interrupted
(cherry picked from commit 76a3fe06ae8fdfa579b2ae6ba730945ef79b0ebc)
diff --git a/pengine/native.c b/pengine/native.c
index 5c723c2..6294092 100644
--- a/pengine/native.c
+++ b/pengine/native.c
@@ -2498,6 +2498,7 @@ native_create_probe(resource_t * rsc, node_t * node, action_t * complete,
*/
if(is_set(rsc->flags, pe_rsc_fence_device) && is_set(data_set->flags, pe_flag_enable_unfencing)) {
trigger_unfencing(NULL, node, "node discovery", probe, data_set);
+ probe->priority = INFINITY; /* Ensure this runs if unfencing succeeds */
} else if(is_set(rsc->flags, pe_rsc_needs_unfencing)) {
action_t *unfence = pe_fence_op(node, "on", TRUE, data_set);
diff --git a/pengine/test10/unfence-definition.exp b/pengine/test10/unfence-definition.exp
index 0f779da..f023a0b 100644
--- a/pengine/test10/unfence-definition.exp
+++ b/pengine/test10/unfence-definition.exp
@@ -24,7 +24,7 @@
</trigger>
</inputs>
</synapse>
- <synapse id="1">
+ <synapse id="1" priority="1000000">
<action_set>
<rsc_op id="13" operation="monitor" operation_key="fencing_monitor_0" on_node="virt-3" on_node_uuid="3">
<primitive id="fencing" class="stonith" type="fence_scsi"/>
diff --git a/pengine/test10/unfence-parameters.exp b/pengine/test10/unfence-parameters.exp
index d3480f3..8ff3016 100644
--- a/pengine/test10/unfence-parameters.exp
+++ b/pengine/test10/unfence-parameters.exp
@@ -12,7 +12,7 @@
</trigger>
</inputs>
</synapse>
- <synapse id="1">
+ <synapse id="1" priority="1000000">
<action_set>
<rsc_op id="12" operation="monitor" operation_key="fencing_monitor_0" on_node="virt-3" on_node_uuid="3">
<primitive id="fencing" class="stonith" type="fence_scsi"/>
diff --git a/pengine/test10/unfence-startup.exp b/pengine/test10/unfence-startup.exp
index 7c55d2c..a0661e7 100644
--- a/pengine/test10/unfence-startup.exp
+++ b/pengine/test10/unfence-startup.exp
@@ -1,5 +1,5 @@
<transition_graph cluster-delay="60s" stonith-timeout="60s" failed-stop-offset="INFINITY" failed-start-offset="INFINITY" transition_id="0">
- <synapse id="0">
+ <synapse id="0" priority="1000000">
<action_set>
<rsc_op id="11" operation="monitor" operation_key="fencing_monitor_0" on_node="virt-3" on_node_uuid="3">
<primitive id="fencing" class="stonith" type="fence_scsi"/>