node: Skip unreadable address rows in entries()

- Decode each row independently so one corrupt entry no longer aborts
  the whole address-book iterator
- Log a warn with the raw `value` and continue past parse failures
- Add a regression test that mimics the post-migration-8 state where a
  legacy `[]:8776` row lands as `type='ipv6'`

A pre-`df8e4e6c` parser admitted `[]:8776` as `HostName::Dns("[]")`.
Migration 8 retyped any `[..]:N` dns row to `ipv6` without validating
the inner part, so on read `Address::from_str` rejects the row with
"invalid IPv6 address syntax", which bubbled up and caused
`available_peers()` to silently return empty, breaking peer discovery
for the affected node.
This commit is contained in:
Daniel Norman
2026-05-01 17:42:44 +02:00
committed by Lorenz Leutgeb
parent 5dae2a8b58
commit a45a1078ab
2 changed files with 99 additions and 25 deletions
+8
View File
@@ -50,6 +50,14 @@ COB type names and payload IDs remain unchanged for backwards compatibility.
with your favorite text editor (e.g. via `rad config edit`), or specialized
tools like `jq`.
## Fixed Bugs
- Skip node address entries that cannot be parsed from an SQLite row into a
valid address entry. This improves the node service, when it checks available
peers. Previously, if it found a row it could not parse, then it would fail
the whole process. Now, it will continue, providing valid entries to connect
to.
## 1.8.0
## New Features