Repository navigation
Releases: hashjoin/hammerdown
Releases · hashjoin/hammerdown
Release list
v0.2.0
Re-read before you act; locks never ask you to judge their holder
Safety fixes for running more than one roll, or losing your session mid-roll.
- Stale plans are refused. Each shard is re-read under its shard lock, and again before every restart and failover. If a role, state or build changed since the plan (another roll, another operator, an automatic failover), the shard is skipped untouched (
ErrStale). Rerun to replan. hammerdown unlockshows who holds a lock and whether that process is running. It releases the lock only with--reason, and only if the holder is provably gone. It refuses while the holder runs, there's no--force, and every release is logged tounlock.log.- "lock is held" explains itself. The message says whether the holder is running and what to do. It no longer suggests deleting the lock.
- A dropped SSH session drains the roll (
SIGHUP) and releases its locks, instead of killing the process mid-roll.
For backend authors: implement fleet.ShardInventory (ShardNodes) for cheap per-shard re-reads, and see CLAUDE.md invariants 7 and 8.
No flag defaults changed.
Full changelog: v0.1.0...v0.2.0 · PR #6
v0.1.0
First public release. Put the hammer down. Keep the brakes.
hammerdown is a dependency-free Go CLI control plane for rolling restarts and upgrades across large sharded fleets. Fork it, teach it two verbs (restart a node, fail over a shard), and roll thousands of nodes shard by shard.
Highlights
- Explicit workers:
--workers Nfleet-wide,--keyspace-workers Nper keyspace - Leader-aware rolls: replicas first, planned failover to a replica already on the target build, then the old primary
- Exact fail-fast:
--max-primary-failures/--max-replica-failuresdrain before the next operation starts - Stop cleanly:
--stop-at,--blackout, Ctrl-C drains; re-run the same command to resume - Filters you can type at 3 a.m.:
--limit 'users/ALL|teams/-80,80-', globs,--skip, role, cell, host, target, canary--shards-per-keyspace 1 - Dry run by default, plus process and shard locks
- Backends:
sim(11,000-node simulated fleet) andshell(drive your existing scripts) - Claude-ready:
CLAUDE.mdand anadd-backendskill
Install
go install github.com/hashjoin/hammerdown/cmd/hammerdown@v0.1.0, or download a binary below and verify it against checksums.txt.
Try it
hammerdown sim init && hammerdown sim stage --to v20.0.1
hammerdown roll --workers 64 --sim-cursed 2 --dry-run=false --yes