feature/portlist: address case where poller misses CollectServices updates
This is a minimal hacky fix for a case where the portlist poller extension could miss updates to NetMap's CollectServices bool. Updates tailscale/corp#36813 Change-Id: I9b50de8ba8b09e4a44f9fbfe90c9df4d8ab4d586 Signed-off-by: Brad Fitzpatrick <bradfitz@tailscale.com>
This commit is contained in:
committed by
Brad Fitzpatrick
parent
2c9ffdd188
commit
30adf4527b
@@ -122,6 +122,19 @@ func (e *Extension) runPollLoop() {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Before we do potentially expensive work below (polling what might be
|
||||||
|
// a ton of ports), double check that we actually need to do it.
|
||||||
|
// TODO(bradfitz): the onSelfChange, and onChangeProfile hooks above are
|
||||||
|
// not enough, because CollectServices is a NetMap-level thing and not a
|
||||||
|
// change to the local self node. We should add an eventbus topic for
|
||||||
|
// when CollectServices changes probably, or move the CollectServices
|
||||||
|
// thing into a local node self cap (at least logically, if not on the
|
||||||
|
// wire) so then the onSelfChange hook would cover it. In the meantime,
|
||||||
|
// we'll just end up doing some extra checks every PollInterval, which
|
||||||
|
// is not the end of the world, and fixes the problem of picking up
|
||||||
|
// changes to CollectServices that come down in the netmap.
|
||||||
|
e.updateShouldUploadServices()
|
||||||
|
|
||||||
if !e.shouldUploadServicesAtomic.Load() {
|
if !e.shouldUploadServicesAtomic.Load() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user