Reference
View as MarkdownAdvanced settings
The everyday control-plane settings (database URL, secret key, public URL, MCP, log level) are in the control plane. This page lists the advanced timers: product timeouts that exist for safety and that you almost never need to change. They exist so the integration suite does not have to wait ten real minutes for a grace period to expire. Leave them unset in production: the defaults are the tested, documented behavior.
Advanced timers#
Every timer is read by the control plane at start (a restart applies a change) from an environment variable holding a Go duration such as 30s, 90s, 10m or 1h30m. An unset or empty variable keeps the default. A value that is not a duration, or is shorter than 1s, stops the start with a message that names the variable.
| Variable | Default | What it controls |
|---|---|---|
NEBULACTRL_MESH_LINK_GRACE |
10m |
How long a cross-server link grant whose variable reference is gone stays before the repair removes it. A reference that is removed and added back, or a redeploy in between, keeps its link within this window. A canvas edge's grant is removed at once, whatever this says. The grace is remembered in memory only, so a control-plane restart starts the window again. See Mesh |
NEBULACTRL_REPLICA_BROKEN_AFTER |
2m |
How long a database replica may be out of streaming before it is marked broken. The agent polls a replica every 30 seconds, so keep this above 30s, or a single missed poll marks a healthy replica broken. See Database replicas |
Rules of thumb when you do change one:
- Shorten with care. A grace that is shorter than the interval at which its condition is re-checked removes things that would have recovered by themselves.
NEBULACTRL_MESH_LINK_GRACEis re-checked by the repair job every 5 minutes, so on a real install a value below5monly makes the removal happen at the next repair run, not sooner. - Do not lengthen to hide a problem. A replica that is
brokenfor two minutes is not streaming; waiting longer does not fix the cause. - The values are not stored in the database and do not appear in the settings screens.
What the test suite sets#
tests/integration starts every control plane with short values (tests/integration/harness_timers_test.go): NEBULACTRL_MESH_LINK_GRACE=30s and NEBULACTRL_REPLICA_BROKEN_AFTER=60s. The same variable in the environment of tests/run.sh overrides the short value, for example NEBULACTRL_MESH_LINK_GRACE=10m ./tests/run.sh full -run '^TestMeshCrossServer$' runs the mesh test with the production timing.