cloudflare/tableflip

Graceful process restarts in Go

View on GitHub ↗Jump to charts ↓

Data as of . Signed-in members get hourly updates — create a free account.

Summary Information

Updated 1 hour ago
Type:Library / SDKCategory(s):Core & Utility LibrariesLanguages & Runtimes
Added to GitGenius on September 21st, 2026
Created on September 14th, 2018
Open Issues & Pull Requests: 18 (+0)
GitHub issues: Enabled
Number of forks: 158
Total Stargazers: 3,214 (+0)
Total Subscribers: 38 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 1174.4 days
Mean response time: 1174.4 days
90th percentile: 1174.4 days
Tracked items: 1

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 3
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 476 days
Stale 30+ days: 3
Stale 90+ days: 2

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

Sign in to see which issues are moving.
Sign in

Detailed Description

Tableflip is a Go library that enables graceful process restarts for network services. It solves the problem of updating running code and configuration without disrupting existing client connections by implementing a process restart mechanism that transfers clients to a new process before the old one exits. The library coordinates this handoff by starting a new process, giving it a grace period for initialization, and ensuring the old process only exits after a successful upgrade. It enforces that no old code continues running after an upgrade completes, that only a single upgrade runs in parallel, and that crashes during initialization do not leave the service in an inconsistent state.

The tool suits Go-based network services that need zero-downtime deployments and can run on Linux or macOS. It provides more control over the upgrade process than simpler approaches, though developers should be aware that integration with systemd journaling may lose logs on older systemd versions due to a known bug, with workarounds available through direct journald logging.

The project maintains a focused scope on the core graceful restart mechanism. Development activity shows consistent attention to the library's reliability and compatibility with system-level process management, particularly around edge cases in systemd integration. The maintainers have documented known limitations and provided concrete workarounds rather than attempting to hide or work around platform-specific issues.