• v0.6.7 263bf61477

    fix(uplink): never pick our own URL; drop stale peer-advertise rows and measures
    Release / frontend (push) Canceled after 0s
    Release / linux (amd64) (push) Canceled after 0s
    Release / linux (arm64) (push) Canceled after 0s
    Release / windows (push) Canceled after 0s
    Release / macos (push) Canceled after 0s
    Release / release (push) Canceled after 0s
    Build and Push Docker Image / build-and-push (push) Canceled after 0s

    LastSkywalker released this 2026-06-11 23:44:10 +03:00 | 228 commits to main since this release

    After a cluster rename the catalog still held this node's URL under the
    old cluster id ('local'), the picker's own-cluster filter no longer
    matched it, and — being the lowest-RTT entry — it won Pick(): the spoke
    shipped batches to ITSELF and logged 'peer returned 404: bridge
    receiving is not enabled on this node' with no way to remove the entry.

    Three layers:

    • applyPeerNodeAdvertise deletes rows advertising the same URL under a
      different (cluster_id, node_id) — a URL is one node endpoint, the old
      identity is stale by definition;
    • the picker takes the node's own advertise URL and excludes it from
      seeds, catalog probes and Pick();
    • probeOnce prunes measurements whose URL fell out of the probe list,
      so catalog/config changes actually remove entries instead of leaving
      a frozen healthy sample that keeps winning forever.

    Covered by live picker tests (httptest ping servers + sqlite catalog).

    Downloads