mirror of
https://github.com/openziti/ziti.git
synced 2026-10-26 05:30:03 +00:00
cc2f277c2e
Controllers compute peer state independently and nothing orders their messages against each other, so a router could be told a destination was removed and then told by another controller, from state computed before the removal, that it was healthy again. The destination came back and the router went on dialing a router that was gone. - carries the controller store index a peer state was computed against, and zero where the reporter has none to offer - remembers a removal against its index, so a report computed against an older one cannot recreate the destination - loses a tie: a router being deleted stays in a controller's connected map until its control channel teardown runs, so the same store state can still produce a healthy report - suppresses only existence, never health, since health is each controller's own view of what it is connected to and a controller lagging in replication reports a low index alongside a perfectly good health report - names the reporting controller on each update, so the registry can union health across controllers while ordering existence by index - forgets a removal after a few minutes, which outlives any report already in flight