milestone 13 discrepancies: redact credentials from urls in logs, metrics and cli output
This commit is contained in:
+44
-22
@@ -108,43 +108,63 @@ configuration.
|
||||
|
||||
```sh
|
||||
nxdns version
|
||||
nxdns check
|
||||
nxdns export --out /tmp/after-upgrade.zon
|
||||
nxdns check --config /tmp/after-upgrade.zon
|
||||
dig @127.0.0.1 example.com A +short
|
||||
```
|
||||
|
||||
`nxdns check` with no `--config` checks the database, which is what you want
|
||||
after an upgrade — it names its source on the first line and migrates a
|
||||
database that is one schema version behind before checking it:
|
||||
The restart in step 3 is what migrated the database, so by now the schema is
|
||||
current and the service is answering. Confirming with `nxdns check` alone would
|
||||
not work here, and the reason is worth knowing: `check` opens `config.db`
|
||||
immutable so it can never write to it, and the migration you just performed is
|
||||
sitting in `config.db-wal` waiting to be checkpointed. Rather than read around
|
||||
the log and grade older settings, `check` reports it:
|
||||
|
||||
```
|
||||
checking database /var/lib/nxdns/config.db
|
||||
OK https://cloudflare-dns.com/dns-query
|
||||
FAIL /var/lib/nxdns/config.db: uncheckpointed changes are waiting in /var/lib/nxdns/config.db-wal, and reading without writing would answer from the older settings in the main file; `nxdns run` applies them. A running nxdns normally holds this log, which is the usual reason to see this line.
|
||||
```
|
||||
|
||||
`export` opens the database read/write and does see the log, so exporting and
|
||||
then checking the export validates what is actually in force:
|
||||
|
||||
```
|
||||
checking configuration file /tmp/after-upgrade.zon
|
||||
OK upstreams[0] https://cloudflare-dns.com
|
||||
OK: no problems found
|
||||
```
|
||||
|
||||
> Verified on this host for the first two commands, with `--data-dir` pointing
|
||||
> at the scratch data directory instead of `/var/lib/nxdns`:
|
||||
> Verified on this host for the first three commands, with `--data-dir`
|
||||
> pointing at a scratch data directory instead of `/var/lib/nxdns` — that path
|
||||
> is the only difference from the blocks above:
|
||||
>
|
||||
> ```
|
||||
> $ nxdns version
|
||||
> nxdns 0.1.0-dev (unknown)
|
||||
> zig 0.16.0
|
||||
> $ nxdns check --data-dir $SCRATCH/data
|
||||
> checking database /…/scratchpad/data/config.db
|
||||
> OK https://cloudflare-dns.com/dns-query
|
||||
> OK: no problems found
|
||||
> ```
|
||||
>
|
||||
> The database path on the first line is the only difference from the block
|
||||
> above. The `dig` line was not run in this round: nothing is listening on
|
||||
> 127.0.0.1:53 here, and port 53 needs root.
|
||||
> Against a running server whose database had just been migrated and seeded,
|
||||
> `nxdns check --data-dir` printed the uncheckpointed-log line above and exited
|
||||
> 2, while `nxdns export --out` followed by `nxdns check --config` on the result
|
||||
> exited 0 with `OK: no problems found`. The `dig` line was not run in this
|
||||
> round: nothing is listening on 127.0.0.1:53 here, and port 53 needs root.
|
||||
|
||||
## What happens to the database
|
||||
|
||||
Migrations run at startup, and also before `check`, `export` and `import`, so
|
||||
whichever of those you run first performs the upgrade. A fresh database is
|
||||
created at the current schema version; an older one is stepped up to it. The
|
||||
log line names both versions:
|
||||
Migrations run at startup, and also before `export` and `import`, so whichever
|
||||
of those you run first performs the upgrade. `nxdns check` is the exception: it
|
||||
opens the database immutable and never migrates, so on a database still one
|
||||
version behind it reports the mismatch and exits 2 rather than fixing it:
|
||||
|
||||
```
|
||||
FAIL /var/lib/nxdns/config.db: schema version 0, this nxdns expects 2; `nxdns run` migrates it, `check` will not
|
||||
```
|
||||
|
||||
That line was reproduced here against a database stamped at version 0; the path
|
||||
and the version numbers are what vary.
|
||||
|
||||
A fresh database is created at the current schema version; an older one is
|
||||
stepped up to it. The log line names both versions:
|
||||
|
||||
```
|
||||
info(migrations): config.db migrated from schema version 0 to 2
|
||||
@@ -194,9 +214,11 @@ nxdns import config-backup.zon --force
|
||||
systemctl start nxdns
|
||||
```
|
||||
|
||||
`--force` is required here. A plain `import` into a database that already has
|
||||
content fails with `import failed: DatabaseNotEmpty` and exits 2, so it cannot
|
||||
clobber a configured server by accident.
|
||||
`--force` is required here. A plain `import` into a database that already holds
|
||||
configuration fails with `import failed: DatabaseNotEmpty` and exits 2, so it
|
||||
cannot clobber a configured server by accident. What counts is what an operator
|
||||
set: client rows the DNS path materialised from traffic never trigger the
|
||||
refusal on their own.
|
||||
|
||||
> Verified on this host for the two `nxdns` lines, against a populated scratch
|
||||
> data directory:
|
||||
|
||||
Reference in New Issue
Block a user