Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP1:Update
pacemaker
pacemaker-crm_resource-restart-resources-node.p...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File pacemaker-crm_resource-restart-resources-node.patch of Package pacemaker
commit 847723f7175a0f008eeebe2d3b333fea4570a228 Author: Ken Gaillot <kgaillot@redhat.com> Date: Sun Jun 12 16:10:00 2016 -0500 Fix: tools: don't assume all resources restart on same node with crm_resource --restart diff --git a/tools/crm_resource_runtime.c b/tools/crm_resource_runtime.c index 6126e3c..753ba2d 100644 --- a/tools/crm_resource_runtime.c +++ b/tools/crm_resource_runtime.c @@ -1044,6 +1044,9 @@ max_delay_in(pe_working_set_t * data_set, GList *resources) return 5 + (max_delay / 1000); } +#define waiting_for_starts(d, r, h) ((g_list_length(d) > 0) || \ + (resource_is_running_on((r), (h)) == FALSE)) + /*! * \internal * \brief Restart a resource (on a particular host if requested). @@ -1244,14 +1247,15 @@ cli_resource_restart(resource_t * rsc, const char *host, int timeout_ms, cib_t * display_list(list_delta, " * "); step_timeout_s = timeout / sleep_interval; - while(g_list_length(list_delta) > 0) { + while (waiting_for_starts(list_delta, rsc, host)) { before = g_list_length(list_delta); if(timeout_ms == 0) { step_timeout_s = max_delay_in(&data_set, list_delta) / sleep_interval; } /* We probably don't need the entire step timeout */ - for(lpc = 0; lpc < step_timeout_s && g_list_length(list_delta) > 0; lpc++) { + for (lpc = 0; (lpc < step_timeout_s) && waiting_for_starts(list_delta, rsc, host); lpc++) { + sleep(sleep_interval); if(timeout) { timeout -= sleep_interval; @@ -1267,7 +1271,11 @@ cli_resource_restart(resource_t * rsc, const char *host, int timeout_ms, cib_t * if (current_active) { g_list_free_full(current_active, free); } - current_active = get_active_resources(host, &data_set); + + /* It's OK if dependent resources moved to a different node, + * so we check active resources on all nodes. + */ + current_active = get_active_resources(NULL, &data_set); g_list_free(list_delta); list_delta = subtract_lists(target_active, current_active); dump_list(current_active, "Current");
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