Skip to content

wip #3865

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: main
Choose a base branch
from
Open

wip #3865

Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 11 additions & 2 deletions daemons/controld/controld_schedulerd.c
Original file line number Diff line number Diff line change
Expand Up @@ -438,11 +438,20 @@ force_local_option(xmlNode *xml, const char *attr_name, const char *attr_value)
freeXpathObject(xpathObj);
}

static gboolean
sleep_timer(gpointer data)
{
controld_set_fsa_action_flags(A_PE_INVOKE);
controld_trigger_fsa();
return G_SOURCE_CONTINUE;
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since this is just replacing the sleep and following code in do_pe_invoke_callback, I think this is supposed to be a one-off timer. That is, it should only execute one time and the way we do that is by returning G_SOURCE_REMOVE and passing FALSE to mainloop_timer_add.


static void
do_pe_invoke_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void *user_data)
{
char *ref = NULL;
pid_t watchdog = pcmk__locate_sbd();
static mainloop_timer_t *timer = NULL;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This variable shouldn't be static.


if (rc != pcmk_ok) {
crm_err("Could not retrieve the Cluster Information Base: %s "
Expand Down Expand Up @@ -470,8 +479,8 @@ do_pe_invoke_callback(xmlNode * msg, int call_id, int rc, xmlNode * output, void
crm_debug("Re-asking for the CIB: %d other peer updates still pending",
(num_cib_op_callbacks() - 1));
sleep(1);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remember to get rid of the sleep call - that's the whole point of moving the following code into a mainloop timer.

controld_set_fsa_action_flags(A_PE_INVOKE);
controld_trigger_fsa();
timer = mainloop_timer_add("timer", 1000, TRUE, sleep_timer, NULL);
mainloop_timer_start(sleep_timer);
return;
}

Expand Down