Skip to content

v2.32.3: Fix intermittent EADDRINUSE when daemons start together on macOS

Latest

Choose a tag to compare

@jdx jdx released this 26 Oct 10:42
· 10 commits to main since this release
Immutable release. Only release title and notes can be modified.
c29e93d

Processes the supervisor starts now get only their stdin, stdout and stderr and no other open file descriptors. On macOS, this fixes daemons that sometimes failed to bind their port when several started at once.

Fixed

  • Spawned processes no longer inherit the supervisor's open descriptors (#1068) by @irad-gradient. On macOS, a daemon with port = N could intermittently fail with EADDRINUSE because a log sink or another daemon held port N open. This happened when it was started while the supervisor was checking that port. A ready_port check could also pass incorrectly because it connected to that leaked socket. It was most likely when daemons with and without ports started together, for example several daemons that share the same depends. This change covers daemons, log sinks, ready_cmd probes, lifecycle hooks and log archive hooks. Processes started while a pty = true daemon is running also no longer inherit that daemon's PTY. Windows behavior is unchanged. Fixes #1067.

Full Changelog: v2.32.2...v2.32.3

💚 Sponsor pitchfork

pitchfork is built and maintained by @jdx, an open source developer at entire.io, the title sponsor of his open source work.

If pitchfork has a place in your development workflow, please consider becoming an individual or company sponsor. Your support funds ongoing development and helps keep pitchfork fast, free, and independent.