mokhtar
91ed5ae774
server: a query that finds every permit taken waits for one instead of failing, the budget is 64, permit and upstream turns wait on a futex with one thread each, the thread pool has no task limit, and transparent huge pages are off for the process
2026-10-22 20:26:25 +02:00
mokhtar
63cc5f8dc3
server: every dns listener shares one budget of 32 queries, stream listeners take 16 connections, the task pool is capped from those bounds, and work it cannot start is counted by site
2026-10-22 15:24:10 +02:00
mokhtar
e4e405f8e9
cache: a byte budget of 256 bytes per entry bounds the cached answers, evicting by clock, and a full or failed copy is counted instead of swallowed
2026-10-22 08:54:59 +02:00
mokhtar
d951d03b7d
querylog: the writer queue defaults to 1024 entries, and a live stream allocates its ring on subscribe instead of at boot
2026-10-21 22:38:53 +02:00
mokhtar
5a51e2d6b9
tests: a failed server check fails the test instead of hanging it, and the tls idle tests leave the handshake room
2026-10-21 21:32:40 +02:00
mokhtar
36e11ca71d
metrics: peak gauges for in-flight queries, stream connections and the query log queue
2026-10-19 23:08:58 +02:00
mokhtar
08cdf86ecd
upstream: a diagnostics episode follows health, and a peer fault carries its cause
Gates / frontend (push) Successful in 2m5s
Gates / test (push) Successful in 2m43s
Gates / test-aarch64 (push) Successful in 8m19s
Gates / package (push) Successful in 4m21s
Gates / container (push) Successful in 13s
CI / gates (push) Successful in 30m43s
2026-09-12 20:24:49 +02:00
mokhtar
72cdbbd113
upstream: one absolute per-query budget across queueing and failover
...
waiting for a slot now spends the query budget; truncated attempts that
expire fault the budget, not the upstream, and are never attributed.
admission sweeps in priority order before blocking. forward zones spend
read_timeout_ms once across udp, truncation and tcp. adds
nxdns_upstream_budget_exhausted_total and a 64-upstream validation limit.
2026-08-27 21:10:43 +02:00
mokhtar
d961b152a3
db-mode config changes apply live in-process
...
settings and upstream writes now follow a prepare, commit, publish, retire
contract: candidates are built and validated before the database transaction,
published as infallible pointer swaps, and old generations retire after their
readers drain. per-query policy values snapshot once per query; upstream pool,
cache, rate limiter, sessions, api limiter, log sink, blocklist scheduler and
the query-log queue each gained one named live operation. restart_required
shrinks from every scalar key to the bind keys and web.enabled; the admin ui
drops its restart notices for everything else. file mode is unchanged.
2026-08-24 00:04:28 +02:00
mokhtar
c99a37d170
milestone 31: concurrent upstream exchanges, dot session reuse, queue metrics
2026-08-22 19:54:02 +02:00
mokhtar
0fd6bbd312
milestone 28: query provenance — every logged query is exactly explainable
...
Gates / frontend (push) Successful in 1m36s
Gates / test (push) Successful in 1m56s
Gates / test-aarch64 (push) Successful in 7m37s
Gates / package (push) Successful in 9m12s
Gates / container (push) Successful in 13s
CI / gates (push) Successful in 19m4s
query rows gain qclass, rcode, group, policy action and reason, the
matched rule or list entry with its source, cname and safe-search
targets, route kind, forward zone, and the resolver that actually
answered — the pool and local markers die. servfails are logged and
name the resolver that lost; post-parse protocol refusals become rows.
a detail page at /queries/:id renders the ordered explanation, and
coverage watermarks distinguish an empty history from a missing one.
the schema fingerprint changes: existing query history is recreated
with the old file kept aside and the reset filed as a resolved
diagnostic. fixes an oversized udp reply being rebuilt as noerror,
which handed clients a truncated nxdomain as success.
2026-08-22 09:16:40 +02:00
mokhtar
037f209179
milestone 27: diagnostics — operational failures land in one curated log, resolved history purgeable
Gates / frontend (push) Successful in 1m33s
Gates / test (push) Successful in 1m48s
Gates / test-aarch64 (push) Successful in 7m10s
Gates / package (push) Successful in 5m31s
Gates / container (push) Successful in 15s
CI / gates (push) Successful in 14m51s
2026-08-20 20:05:59 +02:00
mokhtar
3c794b645b
milestone 25: client names learned over reverse dns
Gates / test (push) Successful in 2m58s
Gates / frontend (push) Successful in 3m57s
Gates / test-aarch64 (push) Successful in 8m20s
Gates / package (push) Successful in 7m27s
Gates / container (push) Successful in 17s
CI / gates (push) Successful in 19m9s
2026-08-15 11:18:44 +02:00
mokhtar
d76afc147a
milestone 20: declarative configuration for iac
2026-08-11 23:31:40 +02:00
mokhtar
6c507992e4
milestone 19: hygiene sweep - dead ecs surface, single-source constants, tls classification, frontend state hazards, docker smoke network fix
CI / test (push) Successful in 1m46s
CI / test-aarch64 (push) Successful in 5m30s
CI / frontend (push) Successful in 46s
CI / cross (push) Successful in 8m12s
CI / docker (push) Successful in 3m46s
2026-08-07 20:39:27 +02:00
mokhtar
6f67940995
milestone 18: collapse duplicated infrastructure into shared listener core, crud list helper, resource shells, transport race, name and line helpers, ui modules
CI / test (push) Successful in 1m22s
CI / test-aarch64 (push) Successful in 5m6s
CI / frontend (push) Successful in 45s
CI / cross (push) Successful in 7m53s
CI / docker (push) Failing after 1h10m57s
2026-08-07 18:20:30 +02:00
mokhtar
c50c6d285a
milestone 17: real deadlines, validator holes, upstream editor, trusted proxies, contract samples, badvers
CI / test (push) Successful in 1m22s
CI / test-aarch64 (push) Successful in 4m55s
CI / frontend (push) Successful in 39s
CI / cross (push) Successful in 7m57s
CI / docker (push) Failing after 1h10m42s
2026-08-07 17:55:59 +02:00
mokhtar
25455e5ae2
milestone 16: behavioral fixes for silent failures, locks, counters and the query log
CI / test (push) Failing after 11s
CI / cross (push) Failing after 25s
CI / docker (push) Failing after 24s
CI / test-aarch64 (push) Failing after 2m22s
CI / frontend (push) Successful in 43s
2026-08-07 01:54:40 +02:00
mokhtar
8c3328562e
milestone 13 discrepancies: redact credentials from urls in logs, metrics and cli output
2026-08-07 00:45:17 +02:00
mokhtar
a589df7515
milestone 10: doh and dot listeners, cert store with hot reload and cert reload api
2026-08-02 14:39:18 +02:00
mokhtar
5253c47303
milestone 8: web server, rest api, sse, auth, metrics and static assets
2026-08-02 00:54:13 +02:00
mokhtar
a8092bb1b9
milestone 7: serving pipeline, client tracking, pause and lifecycle
2026-08-01 21:43:52 +02:00
mokhtar
8c50b6617f
milestone 6: dns cache, rate limiting, query logging, disk monitoring and retention
2026-08-01 17:48:12 +02:00
mokhtar
59d94df722
milestone 5: blocklist filtering, local records and conditional forwarding
2026-08-01 16:43:55 +02:00
mokhtar
17d0401f8a
resolver transport: udp/tcp servers, doh/dot clients, pool failover with health
2026-08-01 12:36:50 +02:00