From 8800b42fbf32cbe16b1ea44ef074ca62779ba3b1 Mon Sep 17 00:00:00 2001 From: Jacob Lisi Date: Tue, 11 Feb 2020 12:42:15 -0500 Subject: [PATCH 1/2] fix panic when creating pipelineBuidler in alertmanager Signed-off-by: Jacob Lisi --- pkg/alertmanager/alertmanager.go | 33 +++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/pkg/alertmanager/alertmanager.go b/pkg/alertmanager/alertmanager.go index 8deae314722..6371de0b3bb 100644 --- a/pkg/alertmanager/alertmanager.go +++ b/pkg/alertmanager/alertmanager.go @@ -52,19 +52,20 @@ type Config struct { // An Alertmanager manages the alerts for one user. type Alertmanager struct { - cfg *Config - api *api.API - logger log.Logger - nflog *nflog.Log - silences *silence.Silences - marker types.Marker - alerts *mem.Alerts - dispatcher *dispatch.Dispatcher - inhibitor *inhibit.Inhibitor - stop chan struct{} - wg sync.WaitGroup - mux *http.ServeMux - registry *prometheus.Registry + cfg *Config + api *api.API + logger log.Logger + nflog *nflog.Log + silences *silence.Silences + marker types.Marker + alerts *mem.Alerts + dispatcher *dispatch.Dispatcher + inhibitor *inhibit.Inhibitor + pipelineBuilder *notify.PipelineBuilder + stop chan struct{} + wg sync.WaitGroup + mux *http.ServeMux + registry *prometheus.Registry } var webReload = make(chan chan error) @@ -130,6 +131,8 @@ func New(cfg *Config) (*Alertmanager, error) { am.silences.SetBroadcast(c.Broadcast) } + am.pipelineBuilder = notify.NewPipelineBuilder(am.registry) + am.wg.Add(1) go func() { am.silences.Maintenance(15*time.Minute, filepath.Join(cfg.DataDir, silencesID), am.stop) @@ -205,8 +208,8 @@ func (am *Alertmanager) ApplyConfig(userID string, conf *config.Config) error { if err != nil { return nil } - pipelineBuilder := notify.NewPipelineBuilder(am.registry) - pipeline := pipelineBuilder.New( + + pipeline := am.pipelineBuilder.New( integrationsMap, waitFunc, am.inhibitor, From 719c5a3e6b31134722bc758e591b1bb494593bf0 Mon Sep 17 00:00:00 2001 From: Jacob Lisi Date: Tue, 11 Feb 2020 12:52:30 -0500 Subject: [PATCH 2/2] update changelog Signed-off-by: Jacob Lisi --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index cbe944e7c8a..c6d8fd19b09 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -27,6 +27,7 @@ * `-server.grpc.keepalive.time` * `-server.grpc.keepalive.timeout` * [ENHANCEMENT] PostgreSQL: Bump up `github.com/lib/pq` from `v1.0.0` to `v1.3.0` to support PostgreSQL SCRAM-SHA-256 authentication. #2097 +* [BUGFIX] Alertmanager: fixed panic upon applying a new config, caused by duplicate metrics registration in the `NewPipelineBuilder` function. #2114 * [BUGFIX] Experimental TSDB: fixed `/all_user_stats` and `/api/prom/user_stats` endpoints when using the experimental TSDB blocks storage. #2042 * [BUGFIX] Azure Blob ChunkStore: Fixed issue causing `invalid chunk checksum` errors. #2074