Ankusa.Routes.Store.ETS (ankusa v0.7.0)

Copy Markdown View Source

The default route store: definitions in this node's memory, with a hard cap and a config seed.

config.routes.seed loads at boot, which is what makes a standalone (no Redis) deployment survivable across restarts: a route an operator added through the API is gone on restart, but the seed is not. The process owns the instance's snapshot table (Ankusa.Routes.Snapshot), and every mutation writes the rows it changes there, so the guard sees the change on the very next request — no TTL wait, no polling.

Seeding happens only at boot, into an empty store — on every instance boot: a seed route deleted through the API returns at the next restart unless it is also removed from config.routes.seed. (Only the Redis store seeds once per namespace.) A store process that crashes and is restarted inside a running instance does not seed again: it resumes from the snapshot table it left, API-created routes included.

The process registers under Ankusa.via(instance, :routes_store); there is no global name, so two instances in one VM never collide.

Summary

Functions

Returns a specification to start this module under a supervisor.

Functions

child_spec(init_arg)

Returns a specification to start this module under a supervisor.

See Supervisor.