()
| 156 | } |
| 157 | |
| 158 | func (s *storageImpl) watchOverrides() { |
| 159 | t := time.NewTicker(30 * time.Second) |
| 160 | defer t.Stop() |
| 161 | |
| 162 | for { |
| 163 | select { |
| 164 | case <-t.C: |
| 165 | newHeaders := s.overrides.MetricsGeneratorRemoteWriteHeaders(s.tenantID) |
| 166 | newGenerateNativeHistograms := s.overrides.MetricsGeneratorGenerateNativeHistograms(s.tenantID) |
| 167 | newSendNativeHistograms := overrides.HasNativeHistograms(newGenerateNativeHistograms) |
| 168 | |
| 169 | if !headersEqual(s.currentHeaders, newHeaders) || s.sendNativeHistograms != newSendNativeHistograms { |
| 170 | s.logger.Info("updating remote write configuration") |
| 171 | err := s.remote.ApplyConfig(&prometheus_config.Config{ |
| 172 | RemoteWriteConfigs: generateTenantRemoteWriteConfigs(s.cfg.RemoteWrite, s.tenantID, newHeaders, s.cfg.RemoteWriteAddOrgIDHeader, s.logger, newSendNativeHistograms), |
| 173 | }) |
| 174 | if err != nil { |
| 175 | metricStorageRemoteWriteUpdateFailed.WithLabelValues(s.tenantID).Inc() |
| 176 | s.logger.Warn("Failed to update remote write configuration. Remote write will continue with previous configuration", "err", err.Error()) |
| 177 | continue |
| 178 | } |
| 179 | s.currentHeaders = newHeaders |
| 180 | s.sendNativeHistograms = newSendNativeHistograms |
| 181 | } |
| 182 | case <-s.closeCh: |
| 183 | return |
| 184 | } |
| 185 | } |
| 186 | } |
| 187 | |
| 188 | func headersEqual(a, b map[string]string) bool { |
| 189 | if len(a) != len(b) { |
no test coverage detected