fix(gateway): force launchd plist re-read after refresh#6812
Closed
JonT6 wants to merge 1 commit into
Closed
Conversation
When hermes gateway start detects a stale launchd plist, it updates the file on disk but kickstart does NOT re-read it — launchd uses its cached service definition indefinitely. Fix: when plist was refreshed, do bootout + bootstrap + kickstart instead of just kickstart, forcing launchd to drop its cache and pick up the new service definition. This prevents stale plist restart loops where launchd keeps restarting the gateway with the old binary path/args.
Contributor
|
Closing — the bug described isn't present on current main. |
Author
|
Thanks for the feedback! |
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.
When
hermes gateway startdetects a stale launchd plist, it updates the file on disk butlaunchctl kickstartdoes NOT re-read it — launchd uses its cached service definition indefinitely, causing restart loops.Fix: when the plist was refreshed, do
bootout + bootstrap + kickstartinstead of justkickstart, forcing launchd to drop its cache and pick up the new service definition.Root cause:
refresh_launchd_plist_if_needed()was called but its return value was discarded. Even when the plist file changed, the subsequentkickstartcall would restart the gateway with launchd's stale cached definition.Test: Simulated a Hermes upgrade that changes the binary path, then ran
hermes gateway start— gateway now correctly picks up the new path without a restart loop.