# HG changeset patch # User Frank DiMeo # Date 1260212813 18000 # Branch stable-1.0 # Node ID d12ffe2a6a28ff58a420b3d78b56cb555caedd01 # Parent 9f61f272598a81db1d3d467d33ffd94d956d7c94 fix resource dependency stop loop created when using rsc_ordering syntax diff -r 9f61f272598a -r d12ffe2a6a28 pengine/constraints.c --- a/pengine/constraints.c Mon Dec 07 13:08:24 2009 +0100 +++ b/pengine/constraints.c Mon Dec 07 14:06:53 2009 -0500 @@ -678,7 +678,8 @@ action_t **begin, action_t **end, action_t **inv_begin, action_t **inv_end, const char *symmetrical, pe_working_set_t *data_set) { - resource_t *last = NULL; + resource_t *last_start = NULL; + resource_t *last_stop = NULL; resource_t *resource = NULL; int local_score = score; @@ -716,21 +717,26 @@ xml_child_iter_filter( set, xml_rsc, XML_TAG_RESOURCE_REF, + resource = pe_find_resource(data_set->resources, ID(xml_rsc)); key = generate_op_key(resource->id, action, 0); custom_action_order(NULL, NULL, *begin, resource, key, NULL, flags|pe_order_implies_left_printed, data_set); + key = generate_op_key(resource->id, action, 0); custom_action_order(resource, key, NULL, NULL, NULL, *end, flags|pe_order_implies_right_printed, data_set); + if(sequential) { - if(last != NULL) { - new_rsc_order(last, action, resource, action, flags, data_set); + if(last_start != NULL) { + + + new_rsc_order(last_start, action, resource, action, flags, data_set); } - last = resource; + last_start = resource; } ); @@ -756,19 +762,23 @@ resource = pe_find_resource(data_set->resources, ID(xml_rsc)); + key = generate_op_key(resource->id, action, 0); custom_action_order(NULL, NULL, *inv_begin, resource, key, NULL, flags|pe_order_implies_left_printed, data_set); - key = generate_op_key(resource->id, action, 0); + + key = generate_op_key(resource->id, action, 0); custom_action_order(resource, key, NULL, NULL, NULL, *inv_end, flags|pe_order_implies_right_printed, data_set); + if(sequential) { - if(last != NULL) { - new_rsc_order(resource, action, last, action, flags, data_set); + if(last_stop != NULL) { + + new_rsc_order(resource, action, last_stop, action, flags, data_set); } - last = resource; + last_stop = resource; } ); @@ -865,6 +875,7 @@ const char *score = crm_element_value(xml_obj, XML_RULE_ATTR_SCORE); const char *invert = crm_element_value(xml_obj, XML_CONS_ATTR_SYMMETRICAL); + if(invert == NULL) { invert = "true"; }