diff --git a/cmd/hivemind-lite/main.go b/cmd/hivemind-lite/main.go deleted file mode 100644 index e41a223..0000000 --- a/cmd/hivemind-lite/main.go +++ /dev/null @@ -1,7 +0,0 @@ -package main - -import "fmt" - -func main() { - fmt.Println("hivemind lite") -} diff --git a/internal/config/config.go b/internal/config/config.go index 3795d3b..033a094 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -9,6 +9,9 @@ import ( "github.com/BurntSushi/toml" ) +// TODO: make all configs have a codegen verification and merging +// assume that 0 and "" are invalid values, i.e. use -1 for unset + type Configs struct { Master MasterConfig Dns DnsConfig diff --git a/internal/registry/registry.go b/internal/registry/registry.go index 610e153..9e425d2 100644 --- a/internal/registry/registry.go +++ b/internal/registry/registry.go @@ -123,6 +123,15 @@ func (r *Registry) RemoveNode(node types.Node) error { func (r *Registry) Set(nodes map[string]types.Node) error { r.lock.Lock() + equalFunc := func(a, b types.Node) bool { + return a.Hostname == b.Hostname + } + + if maps.EqualFunc(r.nodes, nodes, equalFunc) { + r.lock.Unlock() + return nil + } + r.nodes = maps.Clone(nodes) snapshot := r.snapshot() r.lock.Unlock()