Skip to content

sasl: suspend processes concurrently during release upgrades - #11009

Open
v0idpwn wants to merge 2 commits into
erlang:maintfrom
v0idpwn:perf/multi-suspend
Open

sasl: suspend processes concurrently during release upgrades#11009
v0idpwn wants to merge 2 commits into
erlang:maintfrom
v0idpwn:perf/multi-suspend

Conversation

@v0idpwn

@v0idpwn v0idpwn commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

Adds sys:multi_suspend/1,2 and use it in release_handler_1 to send suspend requests in parallel instead of one at a time.

I'm not sure about the new API in sys, but it felt like the cleanest way to do it. Appreciate any takes on it.

Closes #11001

Add sys:multi_suspend/1,2 and use it in release_handler_1 to
send suspend requests in parallel instead of one at a time.
@github-actions

github-actions Bot commented Apr 13, 2026

Copy link
Copy Markdown
Contributor

CT Test Results

    3 files    104 suites   1h 13m 12s ⏱️
2 327 tests 2 276 ✅ 51 💤 0 ❌
2 730 runs  2 673 ✅ 57 💤 0 ❌

Results for commit da4248c.

♻️ This comment has been updated with latest results.

To speed up review, make sure that you have read Contributing to Erlang/OTP and that all checks pass.

See the TESTING and DEVELOPMENT HowTo guides for details about how to run test locally.

Artifacts

// Erlang/OTP Github Action Bot

@jhogberg jhogberg added the team:VM Assigned to OTP team VM label Apr 20, 2026
@jhogberg jhogberg added this to the 30.0 milestone Apr 20, 2026
@jhogberg jhogberg added the stalled waiting for input by the Erlang/OTP team label Apr 20, 2026
@jhogberg jhogberg self-assigned this Apr 20, 2026
@RyanJamesStewart

RyanJamesStewart commented May 29, 2026

Copy link
Copy Markdown

Two test additions on top of this PR if useful. Branch: tests/11009-multi-suspend-timeout (or view as compare-against-master; rebased onto the PR head).

sys_SUITE:multi_suspend_timeout/1 covers the {error, timeout} clause of sys:multi_suspend/2; the existing multi_suspend test only exercises the ok and exit-during-suspend clauses.

release_handler_SUITE:release_handler_1_suspend_safety_net/1 drives release_handler_1:suspend/3 with one slow worker and one prompt worker, asserts the timed-out worker is left runnable by the safety-net catch sys:resume(Pid) on the timeout branch, and asserts the result list contains the prompt pid only. Mirrors supervisor_which_children_timeout/1 in the same suite (direct call + observable post-state, no tracing). The two-worker fixture discriminates both-branches-fail from both-branches-ok.

release_handler_1:suspend/3 is added to the export list with the same convention comment used for get_supervised_procs/0.

Happy to fold into this PR via cherry-pick or amend, open as a separate PR, or drop the suggestion entirely. Whatever fits.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

stalled waiting for input by the Erlang/OTP team team:VM Assigned to OTP team VM

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants