feat(coordinator): worker registry, API contract, logging & DB retry
Align the coordinator with the master PLAN.md (CTX-00, CTX-04) and harden process startup. - CTX-00: freeze docs/api-contract.md as the v1 source of truth for the Go coordinator and Python worker. - CTX-04: worker registry — workers table (migration 0002), domain.Worker, RegisterWorker use case, WorkerRepository, and POST /workers/register. - Contract alignment: claim uses `capabilities` (was `workloads`), COORDINATOR_TOKEN env (WORKER_AUTH_TOKEN kept as fallback), and GET /health now reports database readiness (503 when the DB is down). - Logging: logs are teed to stdout and an optional rotated file (LOG_FILE) via lumberjack, so they survive a container rebuild. - Startup resilience: the initial DB connection is retried with backoff, so the coordinator waits for Postgres to boot instead of crash-looping.
This commit is contained in:
@@ -45,6 +45,13 @@ check "GET /health" 200 "${HOST}/health"
|
||||
check "claim without a token → 401" 401 -X POST "${HOST}/tasks/claim" \
|
||||
-H 'Content-Type: application/json' -d '{"worker_id":"w1"}'
|
||||
|
||||
echo
|
||||
echo "worker registry"
|
||||
check "register worker" 201 -X POST "${HOST}/workers/register" "${auth[@]}" \
|
||||
-d '{"name":"smoke-worker","capabilities":["similarity_search"],"cpu_count":4,"memory_mb":8192}'
|
||||
check "register without capabilities → 400" 400 -X POST "${HOST}/workers/register" "${auth[@]}" \
|
||||
-d '{"name":"bad"}'
|
||||
|
||||
echo
|
||||
echo "job lifecycle"
|
||||
job=$(curl -sS "${auth[@]}" -X POST "${HOST}/jobs" -d '{
|
||||
|
||||
Reference in New Issue
Block a user