mirror of https://github.com/zulip/zulip.git
befe204be4
In an initial install, the following is a potential rule ordering: ``` Notice: /Stage[main]/Zulip::Supervisor/File[/etc/supervisor/conf.d/zulip]/ensure: created Notice: /Stage[main]/Zulip::Supervisor/File[/etc/supervisor/supervisord.conf]/content: content changed '{md5}99dc7e8a1178ede9ae9794aaecbca436' to '{md5}7ef9771d2c476c246a3ebd95fab784cb' Notice: /Stage[main]/Zulip::Supervisor/Exec[supervisor-restart]: Triggered 'refresh' from 1 event [...] Notice: /Stage[main]/Zulip::App_frontend_base/File[/etc/supervisor/conf.d/zulip/zulip.conf]/ensure: defined content as '{md5}d98ac8a974d44efb1d1bb2ef8b9c3dee' [...] Notice: /Stage[main]/Zulip::App_frontend_once/File[/etc/supervisor/conf.d/zulip/zulip-once.conf]/ensure: defined content as '{md5}53f56ae4b95413bfd7a117e3113082dc' [...] Notice: /Stage[main]/Zulip::Process_fts_updates/File[/etc/supervisor/conf.d/zulip/zulip_db.conf]/ensure: defined content as '{md5}96092d7f27d76f48178a53b51f80b0f0' Notice: /Stage[main]/Zulip::Supervisor/Service[supervisor]/ensure: ensure changed 'stopped' to 'running' ``` The last line is misleading -- supervisor was already started by the `supervisor-restart` process on the third line. As can be shown with `zulip-puppet-apply --debug`, the last line just installs supervisor to run on startup, using `systemctl`: ``` Debug: Executing: 'supervisorctl status' Debug: Executing: '/usr/bin/systemctl unmask supervisor' Debug: Executing: '/usr/bin/systemctl start supervisor' ``` This means the list of processes started by supervisor depends entirely on which configuration files were successfully written out by puppet before the initial `supervisor-restart` ran. Since `zulip_db.conf` is written later than the rest, the initial install often fails to start the `process-fts-updates` process. In this state, an explicit `supervisorctl restart` or `supervisorctl reread && supervisorctl update` is required for the service to be found and started. Reorder the `supervisor-restart` exec to only run after the service is started. Because all supervisor configuration files have a `notify` of the service, this forces the ordering of: ``` (package) -> (config files) -> (service) -> (optional restart) ``` On first startup, this will start and them immediately restart supervisor, which is unfortunate but unavoidable -- and not terribly relevant, since the database will not have been created yet, and thus most processes will be in a restart loop for failing to connect to it. |
||
---|---|---|
.. | ||
zulip | ||
zulip_ops | ||
deps.yaml |