Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
SUSE:SLE-12-SP5:GA
pacemaker.13252
bsc#1151007-0001-Fix-fencer-Don-t-let-a-fencing...
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File bsc#1151007-0001-Fix-fencer-Don-t-let-a-fencing-command-with-a-long-d-1.1.patch of Package pacemaker.13252
From 99b87bcf073812979d1c68dc80a04d6f19344838 Mon Sep 17 00:00:00 2001 From: "Gao,Yan" <ygao@suse.com> Date: Fri, 11 Oct 2019 12:52:08 +0200 Subject: [PATCH 1/3] Fix: fencer: Don't let a fencing command with a long delay block any other commands pending on the device --- fencing/commands.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/fencing/commands.c b/fencing/commands.c index 264697ed3..43f506042 100644 --- a/fencing/commands.c +++ b/fencing/commands.c @@ -329,6 +329,8 @@ stonith_device_execute(stonith_device_t * device) stonith_action_t *action = NULL; int active_cmds = 0; int action_limit = 0; + GListPtr gIter = NULL; + GListPtr gIterNext = NULL; CRM_CHECK(device != NULL, return FALSE); @@ -340,24 +342,29 @@ stonith_device_execute(stonith_device_t * device) return TRUE; } - if (device->pending_ops) { - GList *first = device->pending_ops; + for (gIter = device->pending_ops; gIter != NULL; gIter = gIterNext) { + async_command_t *pending_op = gIter->data; - cmd = first->data; - if (cmd && cmd->delay_id) { + gIterNext = gIter->next; + + if (pending_op && pending_op->delay_id) { crm_trace ("Operation %s%s%s on %s was asked to run too early, waiting for start_delay timeout of %dms", - cmd->action, cmd->victim ? " for node " : "", cmd->victim ? cmd->victim : "", - device->id, cmd->start_delay); - return TRUE; + pending_op->action, pending_op->victim ? " for node " : "", + pending_op->victim ? pending_op->victim : "", + device->id, pending_op->start_delay); + continue; } - device->pending_ops = g_list_remove_link(device->pending_ops, first); - g_list_free_1(first); + device->pending_ops = g_list_remove_link(device->pending_ops, gIter); + g_list_free_1(gIter); + + cmd = pending_op; + break; } if (cmd == NULL) { - crm_trace("Nothing further to do for %s", device->id); + crm_trace("Nothing further to do for %s for now", device->id); return TRUE; } -- 2.16.4
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