Skip to content

Tags: cloudflare/tableflip

Tags

v1.2.3

Toggle v1.2.3's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Update notes about the journald bug (#70)

The bug has been fixed for about 2 years, let's be clear about it's state.

v1.2.2

Toggle v1.2.2's commit message
fix incorrect arguments when starting a child

The previous commit introduced a bug in how arguments are passed to
children. We need to make argv[0] the name of the binary, otherwise
the first argument we pass becomes argv[0].

v1.2.1

Toggle v1.2.1's commit message
ensure that inherited files are nonblocking

The Go runtime has annoying behaviour around setting and clearing
O_NONBLOCK: exec.Cmd.Start() ends up calling os.File.Fd() for any
file in exec.Cmd.ExtraFiles. os.File.Fd() disables both the use
of the runtime poller for the file and clears O_NONBLOCK from
the underlying open file descriptor.

Disabling the runtime poller is bad because it makes operating on
those files less efficient. We can work around this by always
working on duplicate os.File. Since the library itself never
reads or writes from the files it doesn't matter whether the
runtime poller is enabled or not.

Clearing O_NONBLOCK is much more annoying, since it's shared by
all fds pointing to the same open file descriptor. This can lead
to hard to diagnose hangs in code invoking syscalls on the file
descriptors, like read or accept. Even more troubling, File.Close
doesn't interrupt these syscalls anymore. Depending on how the
application is structured this can lead to indefinite hangs.

Fix this by writing a simplified wrapper around syscall.StartProcess.
It turns out that we don't need most features of exec.Cmd anyways.

A full restart is needed to make files non-blocking again in
deployed processes.

v1.2.0

Toggle v1.2.0's commit message
Fix spurious Upgrader test failures

TestUpgraderOnOS is susceptible to a race: if the child process exits
too quickly after calling Ready(), the parent may see the exit before
the readiness notification. Wait for the parent to exit before exiting
the test.

v1.1.0

Toggle v1.1.0's commit message
Enable Windows on CI

This ensures that the package compiles on Windows, and that ErrNotSupported is returned.
We need to remove testing on Go master, since this is currently broken on Travis. Testing
master doesn't make much sense in the first place.

v1.0.0

Toggle v1.0.0's commit message
chore(mod): add go.mod