Skip to content

fix(reload): ensure daemon starts, even if reload not required#29

Merged
bugfest merged 1 commit intobugfest:masterfrom
conneryn:fix/onion-balance-service-restart-fails
Jan 9, 2023
Merged

fix(reload): ensure daemon starts, even if reload not required#29
bugfest merged 1 commit intobugfest:masterfrom
conneryn:fix/onion-balance-service-restart-fails

Conversation

@conneryn
Copy link
Copy Markdown
Contributor

@conneryn conneryn commented Jan 7, 2023

I think I found the cause of #28

Problem:
Calling daemon.Reload() within the sync handler is the only place that the onionbalance service gets launched. The handler only calls "daemon.Reload()" when the configuration file (/run/onionbalance/config.yaml) doesn't exist yet or has changed.

On a fully clean start, this file doesn't exist yet, so the daemon does get started correctly. However, if the container restarts within the pod (but the pod itself isn't re-created), the config.yaml already exists, and so the daemon does not get started.

Solution:
This PR fixes this by adding an additional method "EnsureRunning()" which will start the daemon if it's not already running.

I also added small changes for:

  1. the "Reload" method wasn't implemented quite right, if the service was already running, it just called SIGHUP, but never called start again.
  2. minor refactor to remove the need for the "reload" variable, as it didn't seem necessary

Other considerations:
I noticed that the standard tor service (/agents/tor/local) also has similar logic around reload/start, so there may be a similar issue there that would be worth investigating.

Let me know if there are any changes/improvements I can add to his PR.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants