Skip to content

Commit

Permalink
Improvements in silences (#5090)
Browse files Browse the repository at this point in the history
Silence improvements
  • Loading branch information
chavakula authored Feb 25, 2025
1 parent ff5db96 commit 312e1af
Showing 1 changed file with 18 additions and 10 deletions.
28 changes: 18 additions & 10 deletions backend/store/etcd/silenced_store.go
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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()
Expand All @@ -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)
Expand Down

0 comments on commit 312e1af

Please sign in to comment.