Skip to content

reseed never retries after total failure, node stuck with 0 routers permanently #2373

@vrdDev1

Description

@vrdDev1

if all 10 reseed URLs fail during NetDb::Start (DNS timeout, TLS error, server down, whatever), ReseedFromServers returns 0 and the node sits with 0 routers forever. no timer, no periodic re-check, no backoff retry.

same outcome as #2372 but different cause — #2372 was one bad server poisoning the count. this is all servers genuinely failing.

Reseed: 15 certificates loaded
Reseed: Downloading SU3 from https://...
Reseed: failed to download from ...
[... 9 more failures]
NetDb: 0 routers loaded (0 floodfils)
Transports: Can't find routers for peer test IPv4
Tunnels: Can't create outbound tunnel, no peers available
[repeats forever, never reseeds again]

hit this on cold-start nodes when DNS was slow to come up. i2pd starts before the system resolver is fully ready, all 10 picks fail in the first few seconds, and that's it.

NetDb::Run has no "if router count is still 0, try reseeding again" path. Reseed() is only called from Start().

proposal: if netDb router count is 0 after the initial reseed, retry with backoff (say 30s, 60s, 120s, ..., capped at ~30min). once any retry succeeds, stop. if the user restarts i2pd, that's also fine, but an embedded/daemon deployment shouldn't need manual intervention for a transient bootstrap failure.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions