Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:42.3:Update
pacemaker.8750
pacemaker-pengine-permanent-master-scores-at-st...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pacemaker-pengine-permanent-master-scores-at-startup.patch of Package pacemaker.8750
commit 905ddd6fcd29d06edd07012ba97b5470f07927f6 Author: Ken Gaillot <kgaillot@redhat.com> Date: Tue Aug 29 17:25:43 2017 -0500 Low: pengine: don't ignore permanent master scores at startup diff --git a/pengine/master.c b/pengine/master.c index 538f798a0..d1263fdf0 100644 --- a/pengine/master.c +++ b/pengine/master.c @@ -455,7 +455,7 @@ master_score(resource_t * rsc, node_t * node, int not_set_value) char *attr_name; char *name = rsc->id; const char *attr_value = NULL; - int score = not_set_value, len = 0; + int score = not_set_value; if (rsc->children) { GListPtr gIter = rsc->children; @@ -480,16 +480,26 @@ master_score(resource_t * rsc, node_t * node, int not_set_value) } } else { - node_t *match = pe_find_node_id(rsc->running_on, node->details->id); - node_t *known = pe_hash_table_lookup(rsc->known_on, node->details->id); + node_t *match = NULL; if (is_not_set(rsc->flags, pe_rsc_unique) && filter_anonymous_instance(rsc, node)) { pe_rsc_trace(rsc, "Anonymous clone %s is allowed on %s", rsc->id, node->details->uname); - } else if (match == NULL && known == NULL) { - pe_rsc_trace(rsc, "%s (aka. %s) has been filtered on %s - ignoring", rsc->id, - rsc->clone_name, node->details->uname); - return score; + } else if (rsc->running_on || g_hash_table_size(rsc->known_on)) { + /* If we've probed and/or started the resource anywhere, consider + * master scores only from nodes where we know the status. However, + * if the status of all nodes is unknown (e.g. cluster startup), + * skip this code, to make sure we take into account any permanent + * master scores set previously. + */ + node_t *known = pe_hash_table_lookup(rsc->known_on, node->details->id); + + match = pe_find_node_id(rsc->running_on, node->details->id); + if ((match == NULL) && (known == NULL)) { + pe_rsc_trace(rsc, "skipping %s (aka. %s) master score on %s because inactive", + rsc->id, rsc->clone_name, node->details->uname); + return score; + } } match = pe_hash_table_lookup(rsc->allowed_nodes, node->details->id); @@ -510,9 +520,7 @@ master_score(resource_t * rsc, node_t * node, int not_set_value) name = rsc->clone_name; } - len = 8 + strlen(name); - attr_name = calloc(1, len); - sprintf(attr_name, "master-%s", name); + attr_name = crm_strdup_printf("master-%s", name); if (node) { attr_value = g_hash_table_lookup(node->details->attrs, attr_name);
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