check / check (push) Successful in 2m42s
entrypoint.sh now switches to the routewatch user (UID 1000) with setpriv instead of runuser. setpriv replaces itself with the daemon, so the daemon is the container's main process and receives docker stop's signal itself. runuser stayed in between, passed the signal on and killed the daemon 2 seconds later, so every stop ended with exit 143. The daemon now gets the whole wait the caller allows, up to its own 60-second limit, and a clean stop exits 0. Taking ownership of the state directory and the MALLOC_ARENA_MAX check still run as root first. Not fixed here: a stop while the feed is flowing can still panic (#34). Model: opus-5-5
62 lines
2.6 KiB
Markdown
62 lines
2.6 KiB
Markdown
# Workflow
|
|
|
|
* branch (from `main`)
|
|
* do the work in Next Step
|
|
* move Next Step to the top of Completed Steps
|
|
* move the top item of Future Steps into Next Step
|
|
* commit (`TODO.md` changes in the same commit as the work)
|
|
* merge to `main` if the branch is not protected, otherwise open a PR
|
|
* push
|
|
|
|
# Status
|
|
|
|
pre-1.0. No git tags. Runs in production-style Docker deployment, but
|
|
the policy compliance branch (repo-policies-compliance, make check
|
|
passing, clean tree) is unmerged to main and the CI workflow is missing.
|
|
|
|
# Next Step
|
|
|
|
Merge repo-policies-compliance into main (3 commits: policy files and
|
|
.gitignore, Makefile targets fmt-check/check/docker/hooks, gofmt pass),
|
|
then add .gitea/workflows/check.yml as a small follow-up commit so CI
|
|
runs make check on main.
|
|
|
|
# Completed Steps
|
|
|
|
- 2026-09-28: `docker stop` no longer kills the daemon 2 seconds after the
|
|
stop signal: the entrypoint switches to the `routewatch` user with
|
|
`setpriv` instead of `runuser`, so the daemon receives the signal itself
|
|
and gets the whole wait `docker stop` allows, up to its own 60-second
|
|
limit (closes #33)
|
|
- 2026-09-28: ready to run under upaas: a set but invalid `PORT`,
|
|
`XDG_DATA_HOME` or `MALLOC_ARENA_MAX` stops the start, the health
|
|
check follows `PORT`, README "Running under upaas" section (closes
|
|
#31)
|
|
- 2026-09-22: realtime in-memory database statistics: counts seeded at
|
|
startup and adjusted on every write, oldest/newest route timestamps via
|
|
index-end lookups; `/api/v1/stats` no longer scans the tables (closes
|
|
#27)
|
|
- 2026-07-07 Adopted scripts-to-rule-them-all: `script/` entrypoints,
|
|
Makefile shims, README Entrypoints section
|
|
- 2026-02-22: repo policy compliance: required policy files, .gitignore
|
|
update, Makefile fmt-check/check/docker/hooks targets, gofmt pass
|
|
(repo-policies-compliance, unmerged)
|
|
- 2026-01-01: WAL checkpointing: periodic (5s), on startup with logging,
|
|
TRUNCATE mode; fixed slow queries
|
|
- 2025-12-31: status page: navbar, home page with search, oldest/newest
|
|
route timestamps, NULL handling in WHOIS stats; container runs as
|
|
routewatch user with proper state dir
|
|
- 2025-12-30: structured HTTP request logging, increased timeouts,
|
|
CIDR prefix URL routing fixes, status page metrics and footer
|
|
- 2025-12-29: Dockerfile multi-stage build with source archive; SQLite
|
|
incremental vacuum for non-blocking space reclamation
|
|
- 2025-07-27: initial RouteWatch BGP stream monitor
|
|
|
|
# Future Steps
|
|
|
|
- Verify main is green after the merge: make check locally and the new
|
|
CI workflow passing
|
|
- Review stale remote branches fix-min-time-calculation and
|
|
optimize-sqlite-settings: land or delete
|
|
- Clean up the tmp/ directory at the repo root: gitignore or remove
|