Skip to content
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

Fix memory issues with pcmk__schedule_actions() #3810

Merged
merged 19 commits into from
Feb 7, 2025
Merged
Changes from 1 commit
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
a90267c
Refactor: various: Use uint32_t for group of pcmk_sim_flags internally
nrwahl2 Jan 24, 2025
ff6e7a9
Refactor: fencer: Set scheduler input, flags, and status explicitly
nrwahl2 Jan 24, 2025
37f7210
Refactor: scheduler: Set scheduler input, flags, and status explicitly
nrwahl2 Jan 24, 2025
625672d
Fix: tools: Avoid crash in crm_simulate --profile
nrwahl2 Jan 24, 2025
8b9caad
Low: libpacemaker: Fix mem leak in pcmk__profile_dir()
nrwahl2 Jan 24, 2025
a1d8655
Refactor: libpacemaker: Create scheduler object in pcmk__profile_dir()
nrwahl2 Jan 24, 2025
481b0dd
Low: libpacemaker: Handle scandir() error in pcmk__profile_dir()
nrwahl2 Jan 24, 2025
64281ae
Refactor: libpacemaker: Best practices for pcmk__profile_dir()
nrwahl2 Jan 24, 2025
9f1edd8
Refactor: libpacemaker: Use scandir() filter in pcmk__profile_dir()
nrwahl2 Jan 24, 2025
3fca1ba
Low: tools: Fix overflow in crm_simulate --repeat
nrwahl2 Jan 25, 2025
767c55f
Refactor: libpacemaker: Pass NULL input in pcmk__simulate()
nrwahl2 Jan 25, 2025
27d519f
Refactor: libpacemaker: Set input and flags explicitly in pcmk__verify()
nrwahl2 Jan 25, 2025
eae8f5b
Refactor: libpacemaker: Don't make unnecessary copy for scheduler input
nrwahl2 Jan 26, 2025
00b82bd
Refactor: tools: update_dataset() passes nulls to pcmk__schedule_actions
nrwahl2 Jan 25, 2025
ae63ed5
Refactor: tools: Set scheduler flags explicitly in wait_till_stable()
nrwahl2 Jan 25, 2025
4a3f90b
Refactor: libpacemaker: Drop unused args from pcmk__schedule_actions()
nrwahl2 Jan 25, 2025
5dbc819
Fix: libpe_status: Make cluster_status() idempotent
nrwahl2 Jan 25, 2025
f280506
Refactor: libpacemaker: Unpack status in pcmk__schedule_actions()
nrwahl2 Jan 25, 2025
b1ac2a5
Feature: libpacemaker: Reset scheduler object in pcmk_simulate()
nrwahl2 Jan 25, 2025
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
Prev Previous commit
Feature: libpacemaker: Reset scheduler object in pcmk_simulate()
pcmk_simulate() resets or overwrites most of the passed-in scheduler
object already. It resets everything if there are any injections. It
doesn't make any sense to pass in an already-initialized scheduler
object and rely on any particular behavior.

With that said, behavior may change in certain corner cases if the
scheduler argument already has some values (such as flags) set.

Signed-off-by: Reid Wahl <nrwahl@protonmail.com>
nrwahl2 committed Jan 31, 2025
commit b1ac2a57639a974ec8889f75761c9b828263d5f8
5 changes: 3 additions & 2 deletions lib/pacemaker/pcmk_simulate.c
Original file line number Diff line number Diff line change
@@ -179,7 +179,7 @@ print_transition_summary(pcmk_scheduler_t *scheduler, bool print_spacer)

/*!
* \internal
* \brief Reset scheduler input, output, date, and flags, and unpack status
* \brief Reset scheduler, set some members, and unpack status
*
* \param[in,out] scheduler Scheduler data
* \param[in] input What to set as cluster input
@@ -191,6 +191,8 @@ static void
reset(pcmk_scheduler_t *scheduler, xmlNodePtr input, pcmk__output_t *out,
const char *use_date, unsigned int flags)
{
pcmk_reset_scheduler(scheduler);

scheduler->input = input;
scheduler->priv->out = out;
set_effective_date(scheduler, true, use_date);
@@ -916,7 +918,6 @@ pcmk__simulate(pcmk_scheduler_t *scheduler, pcmk__output_t *out,
goto simulate_done;
}

pcmk_reset_scheduler(scheduler);
reset(scheduler, input, out, use_date, flags);
}