ENT-14434: Made reactor-plugin into its own forked process - #6335
ENT-14434: Made reactor-plugin into its own forked process#6335victormlg wants to merge 1 commit into
Conversation
2e7ed0e to
dfd91c6
Compare
larsewi
left a comment
There was a problem hiding this comment.
Please add some more context. E.g., explain why chose to make cf-reactor plugin its own process. Also I expected cf-reactor in nova to already fork out and make it a daemon, but I have not seen this code removed.
larsewi
left a comment
There was a problem hiding this comment.
There one major issue here. If the nova fork dies, then core will continue running and no one will restart the nova reactor again. With this architecture, core must be responsible for restarting the nova fork if it dies.
553a07c to
aa6d538
Compare
aa6d538 to
7228cb8
Compare
Ticket: ENT-14434 Signed-off-by: Victor Moene <victor.moene@northern.tech>
7228cb8 to
be91f14
Compare
larsewi
left a comment
There was a problem hiding this comment.
Please write a test where you kill the nova cf-reactor and see that it comes back. Maybe also test reaching that limit that you set.
| break; | ||
| } | ||
|
|
||
| if (time(NULL) - child_started_at > REACTOR_MIN_UPTIME_SECS) |
There was a problem hiding this comment.
| if (time(NULL) - child_started_at > REACTOR_MIN_UPTIME_SECS) | |
| if ((time(NULL) - child_started_at) > REACTOR_MIN_UPTIME_SECS) |
| /* Here cf-reactor tries to restart the reactor plugin if it exited. It retries | ||
| * 10 times before giving up. The counter is set back to 0 after some time without failure */ |
There was a problem hiding this comment.
Maybe the core process should die itself. Otherwise, systemd will think everything is fine. Not sure. We are basically implementing systemd ourself by now. Could be worth discussing with PM if this is the correct way to go.
Context
So originally, we wanted to have two daemons: one for cf-reactor and one for the agent driven cfengine code. Then it has been decided to merge these two binaries into a single one. For this to work I had to make the nova code for cf-reactor into a dynamic library. When I did that, I didn't change much of the structure of the code: cf-reactor was a binary in core, that would call the function ReactorEnterpriseMain, which starts a daemon for the reactor-plugin.
So this PR aims to move the daemon code to core, as it was originally planned, by making core cf-reactor into a daemon, and the reactor-plugin to start as a subprocess of it
Merge together: https://github.com/cfengine/enterprise/pull/996 https://github.com/cfengine/nova/pull/2696 NorthernTechHQ/libntech#299