From 2bc8051ae52f7c48bfcf35d893a2b5563e7ffb2c Mon Sep 17 00:00:00 2001 From: Kristoffer Dalby Date: Sat, 12 Feb 2022 20:46:05 +0000 Subject: [PATCH] Remove kv-namespace-worker This commit removes the namespace kv worker and related code, now that we talk over gRPC to the server, and not directly to the DB, we should not need this anymore. --- app.go | 16 ---------------- machine_test.go | 13 ------------- namespaces.go | 38 -------------------------------------- 3 files changed, 67 deletions(-) diff --git a/app.go b/app.go index bc7491ce..22b4ceee 100644 --- a/app.go +++ b/app.go @@ -269,20 +269,6 @@ func (h *Headscale) expireEphemeralNodesWorker() { } } -// WatchForKVUpdates checks the KV DB table for requests to perform tailnet upgrades -// This is a way to communitate the CLI with the headscale server. -func (h *Headscale) watchForKVUpdates(milliSeconds int64) { - ticker := time.NewTicker(time.Duration(milliSeconds) * time.Millisecond) - for range ticker.C { - h.watchForKVUpdatesWorker() - } -} - -func (h *Headscale) watchForKVUpdatesWorker() { - h.checkForNamespacesPendingUpdates() - // more functions will come here in the future -} - func (h *Headscale) grpcAuthenticationInterceptor(ctx context.Context, req interface{}, info *grpc.UnaryServerInfo, @@ -521,8 +507,6 @@ func (h *Headscale) Serve() error { go h.scheduledDERPMapUpdateWorker(derpMapCancelChannel) } - // I HATE THIS - go h.watchForKVUpdates(updateInterval) go h.expireEphemeralNodes(updateInterval) httpServer := &http.Server{ diff --git a/machine_test.go b/machine_test.go index 1cc4d40c..ff1dc914 100644 --- a/machine_test.go +++ b/machine_test.go @@ -1,7 +1,6 @@ package headscale import ( - "encoding/json" "strconv" "time" @@ -88,18 +87,6 @@ func (s *Suite) TestDeleteMachine(c *check.C) { err = app.DeleteMachine(&machine) c.Assert(err, check.IsNil) - namespacesPendingUpdates, err := app.getValue("namespaces_pending_updates") - c.Assert(err, check.IsNil) - - names := []string{} - err = json.Unmarshal([]byte(namespacesPendingUpdates), &names) - c.Assert(err, check.IsNil) - c.Assert(names, check.DeepEquals, []string{namespace.Name}) - - app.checkForNamespacesPendingUpdates() - - namespacesPendingUpdates, _ = app.getValue("namespaces_pending_updates") - c.Assert(namespacesPendingUpdates, check.Equals, "") _, err = app.GetMachine(namespace.Name, "testmachine") c.Assert(err, check.NotNil) } diff --git a/namespaces.go b/namespaces.go index e512068d..223455af 100644 --- a/namespaces.go +++ b/namespaces.go @@ -235,44 +235,6 @@ func (h *Headscale) RequestMapUpdates(namespaceID uint) error { return h.setValue("namespaces_pending_updates", string(data)) } -func (h *Headscale) checkForNamespacesPendingUpdates() { - namespacesPendingUpdates, err := h.getValue("namespaces_pending_updates") - if err != nil { - return - } - if namespacesPendingUpdates == "" { - return - } - - namespaces := []string{} - err = json.Unmarshal([]byte(namespacesPendingUpdates), &namespaces) - if err != nil { - return - } - for _, namespace := range namespaces { - log.Trace(). - Str("func", "RequestMapUpdates"). - Str("machine", namespace). - Msg("Sending updates to nodes in namespacespace") - h.setLastStateChangeToNow(namespace) - } - newPendingUpdateValue, err := h.getValue("namespaces_pending_updates") - if err != nil { - return - } - if namespacesPendingUpdates == newPendingUpdateValue { // only clear when no changes, so we notified everybody - err = h.setValue("namespaces_pending_updates", "") - if err != nil { - log.Error(). - Str("func", "checkForNamespacesPendingUpdates"). - Err(err). - Msg("Could not save to KV") - - return - } - } -} - func (n *Namespace) toUser() *tailcfg.User { user := tailcfg.User{ ID: tailcfg.UserID(n.ID),