diff --git a/agent/consul/leader_connect.go b/agent/consul/leader_connect.go index c2209b5da..2f796c691 100644 --- a/agent/consul/leader_connect.go +++ b/agent/consul/leader_connect.go @@ -125,10 +125,14 @@ func (s *Server) pruneCARoots() error { func (s *Server) runVirtualIPVersionCheck(ctx context.Context) error { // Return early if the flag is already set. - _, err := s.setVirtualIPVersionFlag() + done, err := s.setVirtualIPVersionFlag() if err != nil { s.loggers.Named(logging.Connect).Warn("error enabling virtual IPs", "error", err) } + if done { + s.leaderRoutineManager.Stop(virtualIPCheckRoutineName) + return nil + } ticker := time.NewTicker(virtualIPVersionCheckInterval) defer ticker.Stop() @@ -138,12 +142,12 @@ func (s *Server) runVirtualIPVersionCheck(ctx context.Context) error { case <-ctx.Done(): return nil case <-ticker.C: - ok, err := s.setVirtualIPVersionFlag() + done, err := s.setVirtualIPVersionFlag() if err != nil { s.loggers.Named(logging.Connect).Warn("error enabling virtual IPs", "error", err) continue } - if ok { + if done { return nil } } diff --git a/agent/consul/leader_test.go b/agent/consul/leader_test.go index af008358f..63b99b3a9 100644 --- a/agent/consul/leader_test.go +++ b/agent/consul/leader_test.go @@ -2126,7 +2126,9 @@ func TestLeader_EnableVirtualIPs(t *testing.T) { t.Skip("too slow for testing.Short") } + orig := virtualIPVersionCheckInterval virtualIPVersionCheckInterval = 50 * time.Millisecond + t.Cleanup(func() { virtualIPVersionCheckInterval = orig }) conf := func(c *Config) { c.Bootstrap = false