Skip to content

Conversation

percivalalb
Copy link

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:
    • ConsumeFiles the 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
    • ConserveFiles does nothing and keeps the systemd fds open
  • Also exposes the unsetEnv of the system

@percivalalb percivalalb changed the title Draft: Allow more control over socket-activated file descriptors activation: allow more control over socket-activated file descriptors May 4, 2024
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.

1 participant