tableflip

Graceful process restarts in Go

BSD-3-CLAUSE License

Stars
2.9K
Committers
14

Bot releases are hidden (Show)

tableflip - Allow getting all inherited files Latest Release

Published by hunts over 2 years ago

What's Changed

Full Changelog: https://github.com/cloudflare/tableflip/compare/v1.2.2...v1.2.3

tableflip - Fix passing arguments to child processes

Published by lmb over 3 years ago

The previous release introduces a bug when starting a child process: the argument vector (aka argv) is populated incorrectly. The result is that processes that use argv will likely fail and processes that don't use argv will fail to upgrade.

tableflip - Fix clearing O_NONBLOCK on upgrade

Published by lmb over 3 years ago

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.

This can lead to goroutines hanging in a parent process, after at least
one failed upgrade. The bug manifests by goroutines which rely on
either a deadline or interruption via Close() to be unblocked being stuck
in read or accept like syscalls,. As far as I can tell we've not experienced
this problem in production, so it's most likely quite rare.

tableflip - Support net.PacketConn

Published by lmb over 4 years ago

Add built-in support for passing net.PacketConn around. This was possible using Fds.AddConn, but the new PacketConn support will also do correct unlinking of Unix domain sockets if necessary.

tableflip - Allow compiling programs using tableflip on Windows

Published by lmb over 4 years ago

So far, developers working on a code base that uses tableflip on a Windows machine had a poor experience. Editing and building the program didn't work. Thanks to @kohenkatz the library compiles on Windows without errors, and tableflip.New returns an error on Windows. Developers can use this to shim out the upgrader using the new testing subpackage.

tableflip -

Published by lmb over 5 years ago

Tag a v1. The API has been stable for a few months now, so I feel confident in locking it in.