From 463e2285d60a239201641dc3d8b1b5fdfd261389 Mon Sep 17 00:00:00 2001 From: Richard Kojedzinszky Date: Wed, 1 Jul 2020 11:36:03 +0200 Subject: [PATCH] Backport "Same Configuration Check" from master --- server/server_configuration.go | 12 ++++++------ server/server_configuration_test.go | 6 ++++-- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/server/server_configuration.go b/server/server_configuration.go index d5c96f4f7..c8fbeca51 100644 --- a/server/server_configuration.go +++ b/server/server_configuration.go @@ -309,7 +309,6 @@ func buildServerRoute(serverEntryPoint *serverEntryPoint, frontendName string, f func (s *Server) preLoadConfiguration(configMsg types.ConfigMessage) { providersThrottleDuration := time.Duration(s.globalConfiguration.ProvidersThrottleDuration) s.defaultConfigurationValues(configMsg.Configuration) - currentConfigurations := s.currentConfigurations.Get().(types.Configurations) if log.GetLevel() == logrus.DebugLevel { jsonConf, _ := json.Marshal(configMsg.Configuration) @@ -321,11 +320,6 @@ func (s *Server) preLoadConfiguration(configMsg types.ConfigMessage) { return } - if reflect.DeepEqual(currentConfigurations[configMsg.ProviderName], configMsg.Configuration) { - log.Infof("Skipping same configuration for provider %s", configMsg.ProviderName) - return - } - providerConfigUpdateCh, ok := s.providerConfigUpdateMap[configMsg.ProviderName] if !ok { providerConfigUpdateCh = make(chan types.ConfigMessage) @@ -461,11 +455,17 @@ func (s *Server) throttleProviderConfigReload(throttle time.Duration, publish ch } }) + var previousConfig types.ConfigMessage for { select { case <-stop: return case nextConfig := <-in: + if reflect.DeepEqual(previousConfig, nextConfig) { + log.Infof("Skipping same configuration for provider %s", nextConfig.ProviderName) + continue + } + previousConfig = nextConfig ring.In() <- nextConfig } } diff --git a/server/server_configuration_test.go b/server/server_configuration_test.go index 5fbad854e..0cec2a6e1 100644 --- a/server/server_configuration_test.go +++ b/server/server_configuration_test.go @@ -304,9 +304,11 @@ func TestThrottleProviderConfigReload(t *testing.T) { } }() - // publish 5 new configs, one new config each 10 milliseconds + // publish 5 new and different configs, one new config each 10 milliseconds for i := 0; i < 5; i++ { - providerConfig <- types.ConfigMessage{} + providerConfig <- types.ConfigMessage{ + ProviderName: fmt.Sprintf("test-%d", i), + } time.Sleep(10 * time.Millisecond) }