From c75f0eea5fd900d7b2413ebf6098798561e792b3 Mon Sep 17 00:00:00 2001 From: Rajshekar Chavakula Date: Thu, 20 Feb 2025 12:10:01 +0530 Subject: [PATCH] Improvements in silences --- backend/cmd/start.go | 3 --- backend/store/etcd/silenced_store.go | 28 ++++++++++++++++++---------- 2 files changed, 18 insertions(+), 13 deletions(-) diff --git a/backend/cmd/start.go b/backend/cmd/start.go index 12757449a..0862b1bc0 100644 --- a/backend/cmd/start.go +++ b/backend/cmd/start.go @@ -456,9 +456,6 @@ func handleConfig(cmd *cobra.Command, arguments []string, server bool) error { viper.SetDefault(flagEventLogFile, "") viper.SetDefault(flagEventLogParallelEncoders, false) - // default silenced value are set for 1 day = 1440m - viper.SetDefault(flagMaxSilencedExpiryTimeAllowed, "1440m") - viper.SetDefault(flagDefaultSilencedExpiryTime, "1440m") } // Etcd defaults diff --git a/backend/store/etcd/silenced_store.go b/backend/store/etcd/silenced_store.go index c7fe3319c..72477b544 100644 --- a/backend/store/etcd/silenced_store.go +++ b/backend/store/etcd/silenced_store.go @@ -4,9 +4,9 @@ import ( "context" "errors" "fmt" + "github.com/gogo/protobuf/proto" "time" - "github.com/gogo/protobuf/proto" corev2 "github.com/sensu/core/v2" "github.com/sensu/sensu-go/backend/etcd" "github.com/sensu/sensu-go/backend/store" @@ -208,13 +208,9 @@ func (s *Store) UpdateSilencedEntry(ctx context.Context, silenced *corev2.Silenc if err := silenced.Validate(); err != nil { return &store.ErrNotValid{Err: err} } - allowedMaxTime := time.Now().Add(s.cfg.MaxSilencedExpiryTimeAllowed).Unix() - // check for maximum allowed duration for silenced allowed - if silenced.ExpireAt > 0 && (silenced.ExpireAt > allowedMaxTime) { - err := errors.New(silencedLimitError) - return &store.ErrThreshold{Err: err} - } + // calculate maximum allowed time based on max-silenced-expiry-time-allowed in yaml + allowedMaxTime := time.Now().Add(s.cfg.MaxSilencedExpiryTimeAllowed).Unix() if silenced.ExpireAt == 0 && silenced.Expire > 0 { start := time.Now() @@ -230,13 +226,25 @@ func (s *Store) UpdateSilencedEntry(ctx context.Context, silenced *corev2.Silenc } } - // set default silenced expiry time configured in backend yaml file - if silenced.Expire <= 0 && silenced.ExpireAt == 0 { + // if Expiry date is not set + if silenced.ExpireAt == 0 { start := time.Now() if silenced.Begin > 0 { start = time.Unix(silenced.Begin, 0) } - silenced.ExpireAt = start.Add(s.cfg.DefaultSilencedExpiryTime).Unix() + + // if default-silenced-expiry-time in yaml is set + if s.cfg.DefaultSilencedExpiryTime > 0 { + silenced.ExpireAt = start.Add(s.cfg.DefaultSilencedExpiryTime).Unix() + } + } else { + // if max-silenced-expiry-time-allowed in yaml is set + if s.cfg.MaxSilencedExpiryTimeAllowed > 0 { + if silenced.ExpireAt > allowedMaxTime { + err := errors.New(silencedLimitError) + return &store.ErrThreshold{Err: err} + } + } } silencedBytes, err := proto.Marshal(silenced)