File pacemaker-pengine-detection-invalid-constraints.patch of Package pacemaker.14737
commit 2d6b90ff01f91ad284b2ea5988cd3ccdec21aac3
Author: Ken Gaillot <kgaillot@redhat.com>
Date: Fri May 19 10:17:37 2017 -0500
Low: pengine: improve detection of invalid constraints
The previous test was overbroad. The new test specifically checks
whether the constraint is between a resource running on a guest node
and the resource creating that guest node.
diff --git a/pengine/graph.c b/pengine/graph.c
index 4e8c6dc37..72df371aa 100644
--- a/pengine/graph.c
+++ b/pengine/graph.c
@@ -1311,20 +1311,13 @@ check_dump_input(int last_action, action_t * action, action_wrapper_t * wrapper)
type &= ~pe_order_implies_then_printed;
type &= ~pe_order_optional;
- if (wrapper->action->node
+ if (is_not_set(type, pe_order_preserve)
&& action->rsc && action->rsc->fillers
- && is_not_set(type, pe_order_preserve)
+ && wrapper->action->rsc && wrapper->action->node
&& wrapper->action->node->details->remote_rsc
- && uber_parent(action->rsc) != uber_parent(wrapper->action->rsc)
- ) {
- /* This prevents user-defined ordering constraints between
- * resources in remote nodes and the resources that
- * define/represent a remote node.
- *
- * There is no known valid reason to allow this sort of thing
- * but if one arises, we'd need to change the
- * action->rsc->fillers clause to be more specific, possibly
- * to check that it contained wrapper->action->rsc
+ && (wrapper->action->node->details->remote_rsc->container == action->rsc)) {
+ /* This prevents user-defined ordering constraints between resources
+ * running in a guest node and the resource that defines that node.
*/
crm_warn("Invalid ordering constraint between %s and %s",
wrapper->action->rsc->id, action->rsc->id);