go-systemd
go-systemd copied to clipboard
activation: allow more control over socket-activated file descriptors
The XY of the problem is the fds indices used by systemd socket activation are left empty once activation.Listener is called. Any new fds typically take the lowest available fds, which means the expected socket-activated indices may be populated by other fds at any other point in the executing of the program.
I'm creating a library that enables zero-downtime restarts by execve'ing the same program which requires that the fds be populated in the expected indices. This is not possible if another part of the program is using those fds.
- This gives 3 methods of control, leaving currently logic intac:
-
ConsumeFilesthe default and matches the previous logic - closes the systemd fds passed in. -
ReserveFiles"reserves" the systemd fds by atomically replacing them with fds pointing at/dev/null -
ConserveFilesdoes nothing and keeps the systemd fds open
-
- Also exposes the
unsetEnvof the system