Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
pacemaker.3577
pacemaker-pengine-order-stop-stonith.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pacemaker-pengine-order-stop-stonith.patch of Package pacemaker.3577
commit c3cd982b02c033ae9e9cc31ca51628264414296c Author: Ken Gaillot <kgaillot@redhat.com> Date: Thu Apr 7 17:31:26 2016 -0500 Fix: pengine: properly order stop actions relative to stonith This corrects a couple of issues with ordering stop actions relative to a fence event, related to the distinction between the stonith target and the action node. Before guest nodes, those were always the same; but now, a stop action on a guest node may be implied by a fencing of its host, so they may be different. 1. The log messages sometimes referred to the action node, when the stonith target was actually meant. 2. Some code intended to break certain loops had become dead code once the stonith_up event was no longer used and nodes to be fenced were always marked as unclean. But once guest nodes were possible, stop actions on a clean guest node could inadvertently (and mistakenly) trigger the not-so-dead code. This also improves comments and log messages a bit. diff --git a/pengine/native.c b/pengine/native.c index 98ecd64..3c805ef 100644 --- a/pengine/native.c +++ b/pengine/native.c @@ -2941,6 +2941,7 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ action_t *start = NULL; resource_t *top = uber_parent(rsc); + node_t *target = stonith_op->node; key = start_key(rsc); action_list = find_actions(rsc->actions, key, NULL); @@ -2952,7 +2953,8 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ free(key); key = stop_key(rsc); - action_list = find_fence_target_node_actions(rsc->actions, key, stonith_op->node, data_set); + action_list = find_fence_target_node_actions(rsc->actions, key, target, + data_set); free(key); /* add the stonith OP as a stop pre-req and the mark the stop @@ -2962,17 +2964,12 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ for (gIter = action_list; gIter != NULL; gIter = gIter->next) { action_t *action = (action_t *) gIter->data; - if (action->node->details->online - && action->node->details->unclean == FALSE && is_set(rsc->flags, pe_rsc_failed)) { - continue; - } - if (is_set(rsc->flags, pe_rsc_failed)) { - crm_notice("Stop of failed resource %s is" - " implicit after %s is fenced", rsc->id, action->node->details->uname); + crm_notice("Stop of failed resource %s is implicit after %s is fenced", + rsc->id, target->details->uname); } else { crm_info("%s is implicit after %s is fenced", - action->uuid, action->node->details->uname); + action->uuid, target->details->uname); } /* the stop would never complete and is @@ -2986,7 +2983,7 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ enum pe_ordering flags = pe_order_optional; action_t *parent_stop = find_first_action(top->actions, NULL, RSC_STOP, NULL); - if(stonith_op->node->details->remote_rsc) { + if (target->details->remote_rsc) { flags |= pe_order_preserve; } order_actions(stonith_op, action, flags); @@ -3061,7 +3058,8 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ g_list_free(action_list); key = demote_key(rsc); - action_list = find_fence_target_node_actions(rsc->actions, key, stonith_op->node, data_set); + action_list = find_fence_target_node_actions(rsc->actions, key, target, + data_set); free(key); for (gIter = action_list; gIter != NULL; gIter = gIter->next) { @@ -3069,17 +3067,19 @@ native_stop_constraints(resource_t * rsc, action_t * stonith_op, pe_working_set_ if (action->node->details->online == FALSE || action->node->details->unclean == TRUE || is_set(rsc->flags, pe_rsc_failed)) { + if (is_set(rsc->flags, pe_rsc_failed)) { - pe_rsc_info(rsc, "Demote of failed resource %s is" - " implict after %s is fenced", rsc->id, action->node->details->uname); + pe_rsc_info(rsc, + "Demote of failed resource %s is implicit after %s is fenced", + rsc->id, target->details->uname); } else { pe_rsc_info(rsc, "%s is implicit after %s is fenced", - action->uuid, action->node->details->uname); + action->uuid, target->details->uname); } - /* the stop would never complete and is - * now implied by the stonith operation + + /* The demote would never complete and is now implied by the + * fencing, so convert it into a pseudo-action. */ - crm_trace("here - 1"); update_action_flags(action, pe_action_pseudo); update_action_flags(action, pe_action_runnable);
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor