Name
groundhog-operations: operate one durable event-log instance.
Instance boundary
One service instance owns one configured data directory. One process owns its log writer. Clients communicate over the configured Unix socket. An SDK, application, launchd, systemd, or another process manager can supervise the deployment. Each option uses the same binary, configuration, socket, writer lock, recovery path, and HTTP contract. Groundhog does not contact source systems. Connectors and schedulers run outside it and keep their own credentials and source cursors. Derived-view consumers also run outside Groundhog. They use replay or follow to update their own databases and analytical systems.First deployment
-
Initialize an empty directory.
-
Review
/srv/ground/acme/groundhog.toml, its optional token, and filesystem permissions. -
Start the service.
-
Wait for a successful routed request.
Omit the
Authorizationheader when the configuration contains an empty token. -
Configure connectors to submit stable idempotent batches to
POST /v1/events. - Configure consumers to replay or follow events and save durable cursors.
Supervision
Runserve as a foreground process.
Let the supervisor own restart policy and standard-error capture.
Send SIGTERM for planned shutdown.
Wait for exit before you start a command that needs the writer.
A socket path or serving ... message does not prove readiness.
Use a routed authenticated request.
GET /v1/streams?limit=1 checks routing and a coherent log read.
Use a narrow finite replay when a probe must check a known event.
Command concurrency
Do not delete
data/log/.lock to bypass a held writer.
Stop the owning process and wait for it to release the data directory.
Consumer policy
Groundhog stores and serves the durable event log. Applications build derived views from replay or follow. A consumer must save its last applied event ID. Use one transaction for the derived-view update and cursor update when the target system supports it. Reconnect follow with the exclusiveafter cursor after shutdown or transport failure.
Use finite replay to fill gaps before another follow session.
Consumers must define their own rebuild procedure.
That procedure starts from an empty derived view and replays the Groundhog log.
Sealing policy
Sealing is manual. Groundhog does not seal on configured age or size thresholds. Use this maintenance sequence:-
Stop
servewithSIGTERMand wait for exit. -
Run
groundhog seal --config /srv/ground/acme/groundhog.toml. -
Run the deep verification command when the policy requires it.
-
Restart
serve. - Probe a routed endpoint.
seal return exit code 1.
Treat this result as no work only when the operator expects no unsealed events.
Sealing creates immutable Parquet log segments.
It does not change the logical event history.
Verification cadence
Structural verification supports frequent checks:Monitoring
Monitor these signals:- process exits and restart loops
- routed API availability over the socket
- HTTP 429 responses and
Retry-Afterbehavior - HTTP 503 responses that require a new serving session
- ingest 409 conflicts caused by batch ID or stream frontier misuse
- follow terminal reasons and reconnect progress
- consumer cursor age and derived-view processing delay
- verification exit status and failure code
- filesystem capacity for
data/log/.
Backups
The durable log is the backup-critical artifact. Groundhog does not include a backup command or online-copy protocol. A conservative manual procedure is:- Stop the writer.
- Copy
groundhog.tomlanddata/log/. - Restart the service.
- Restore the copy to an isolated path.
- Run structural and chain verification.
- Serve the restore on an isolated socket.
- Compare known replay events, stream summaries, and receipts.
Upgrade from 0.1
Before you replace the binary:- Keep the previous pinned binary and a coherent backup.
- Read the 0.2 release notes.
- Run
verify --chainwith the 0.1 build. - Stop the writer cleanly.
- Remove the
[query]section fromgroundhog.toml. - Start Groundhog 0.2 against one deployment.
- Probe
GET /v1/streamsand a known replay request. - Run
verify --chainwith Groundhog 0.2. - Confirm that application consumers can rebuild or continue their derived views.