26: Say what boot() being idempotent costs - #40
Open
nikolaystrikhar wants to merge 1 commit into
Open
Conversation
The docblock claimed idempotence and stopped there. What it did not say is that the container is part of what the first call wins: a set_container() afterwards binds nothing, the scheduler keeps the container it closed over, and the accessors and notice trampolines resolve from whatever Config holds when they are called -- so the two halves answer to different containers and a queued notice can never render and never clear. Stated rather than fixed. Re-running the provider against a second container would make the boot sequence depend on how many containers a host went through, which is worse than the rule it would relax.
nikolaystrikhar
force-pushed
the
26-boot-idempotence
branch
from
August 13, 2026 13:32
eb778a8 to
11418a1
Compare
nikolaystrikhar
force-pushed
the
25-config-messages
branch
from
August 13, 2026 13:32
70d59ee to
96d2909
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What:
Absorber::boot()'s docblock anddocs/configuration.mdstate what idempotence costs — the first call's container is the one the library keeps.Usage:
Why this way:
Idempotent was true and insufficient.
boot()returns early on$booted, so aset_container()afterwards binds nothing.Boot\Schedulerkeeps the container it closed over, while the accessors and both notice trampolines resolve from whateverConfigholds when they fire — so the two halves answer to different containers, and a queued merge notice can never render and never clear.Stated rather than fixed. Re-running the provider against a second container would make the boot sequence depend on how many containers a host happened to go through, which is a worse rule than the one it relaxes. The recommended shape already prevents it: set the container at
plugins_loadedpriority 0, before booting.