Skip to content

Commit fe2c526

Browse files
ultrotterGuido TrotterSuperQ
authored
Rename matcherCache to matcherIndex (#4703)
* Rename matcherCache to matcherIndex The matcherCache is in fact not a cache. We never used to evict from it, and now we need to update it when we update the state, as such call it a name that identifies its purpose. Signed-off-by: Guido Trotter <[email protected]> * Update silence/silence.go Co-authored-by: Ben Kochie <[email protected]> Signed-off-by: Guido Trotter <[email protected]> --------- Signed-off-by: Guido Trotter <[email protected]> Signed-off-by: Guido Trotter <[email protected]> Co-authored-by: Guido Trotter <[email protected]> Co-authored-by: Ben Kochie <[email protected]>
1 parent 92ecf8b commit fe2c526

File tree

2 files changed

+29
-29
lines changed

2 files changed

+29
-29
lines changed

silence/silence.go

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,10 @@ var ErrNotFound = errors.New("silence not found")
5050
// ErrInvalidState is returned if the state isn't valid.
5151
var ErrInvalidState = errors.New("invalid state")
5252

53-
type matcherCache map[string]labels.Matchers
53+
type matcherIndex map[string]labels.Matchers
5454

5555
// get retrieves the matchers for a given silence.
56-
func (c matcherCache) get(s *pb.Silence) (labels.Matchers, error) {
56+
func (c matcherIndex) get(s *pb.Silence) (labels.Matchers, error) {
5757
if m, ok := c[s.Id]; ok {
5858
return m, nil
5959
}
@@ -62,7 +62,7 @@ func (c matcherCache) get(s *pb.Silence) (labels.Matchers, error) {
6262

6363
// add compiles a silences' matchers and adds them to the cache.
6464
// It returns the compiled matchers.
65-
func (c matcherCache) add(s *pb.Silence) (labels.Matchers, error) {
65+
func (c matcherIndex) add(s *pb.Silence) (labels.Matchers, error) {
6666
ms := make(labels.Matchers, len(s.Matchers))
6767

6868
for i, m := range s.Matchers {
@@ -198,7 +198,7 @@ type Silences struct {
198198
st state
199199
version int // Increments whenever silences are added.
200200
broadcast func([]byte)
201-
mc matcherCache
201+
mi matcherIndex
202202
}
203203

204204
// Limits contains the limits for silences.
@@ -228,7 +228,7 @@ type metrics struct {
228228
propagatedMessagesTotal prometheus.Counter
229229
maintenanceTotal prometheus.Counter
230230
maintenanceErrorsTotal prometheus.Counter
231-
matcherCompileCacheSilenceErrorsTotal prometheus.Counter
231+
matcherCompileIndexSilenceErrorsTotal prometheus.Counter
232232
matcherCompileLoadSnapshotErrorsTotal prometheus.Counter
233233
}
234234

@@ -281,7 +281,7 @@ func newMetrics(r prometheus.Registerer, s *Silences) *metrics {
281281
},
282282
[]string{"stage"},
283283
)
284-
m.matcherCompileCacheSilenceErrorsTotal = matcherCompileErrorsTotal.WithLabelValues("cache_silence")
284+
m.matcherCompileIndexSilenceErrorsTotal = matcherCompileErrorsTotal.WithLabelValues("index")
285285
m.matcherCompileLoadSnapshotErrorsTotal = matcherCompileErrorsTotal.WithLabelValues("load_snapshot")
286286
m.queriesTotal = promauto.With(r).NewCounter(prometheus.CounterOpts{
287287
Name: "alertmanager_silences_queries_total",
@@ -345,7 +345,7 @@ func New(o Options) (*Silences, error) {
345345

346346
s := &Silences{
347347
clock: quartz.NewReal(),
348-
mc: matcherCache{},
348+
mi: matcherIndex{},
349349
logger: promslog.NewNopLogger(),
350350
retention: o.Retention,
351351
limits: o.Limits,
@@ -477,7 +477,7 @@ func (s *Silences) GC() (int, error) {
477477
}
478478
if !sil.ExpiresAt.After(now) {
479479
delete(s.st, id)
480-
delete(s.mc, sil.Silence.Id)
480+
delete(s.mi, sil.Silence.Id)
481481
n++
482482
}
483483
}
@@ -559,11 +559,11 @@ func (s *Silences) checkSizeLimits(msil *pb.MeshSilence) error {
559559
return nil
560560
}
561561

562-
func (s *Silences) cacheSilence(sil *pb.Silence) {
562+
func (s *Silences) indexSilence(sil *pb.Silence) {
563563
s.version++
564-
_, err := s.mc.add(sil)
564+
_, err := s.mi.add(sil)
565565
if err != nil {
566-
s.metrics.matcherCompileCacheSilenceErrorsTotal.Inc()
566+
s.metrics.matcherCompileIndexSilenceErrorsTotal.Inc()
567567
s.logger.Error("Failed to compile silence matchers", "silence_id", sil.Id, "err", err)
568568
}
569569
}
@@ -590,7 +590,7 @@ func (s *Silences) setSilence(msil *pb.MeshSilence, now time.Time) error {
590590
}
591591
_, added := s.st.merge(msil, now)
592592
if added {
593-
s.cacheSilence(msil.Silence)
593+
s.indexSilence(msil.Silence)
594594
}
595595
s.broadcast(b)
596596
return nil
@@ -744,7 +744,7 @@ func QIDs(ids ...string) QueryParam {
744744
func QMatches(set model.LabelSet) QueryParam {
745745
return func(q *query) error {
746746
f := func(sil *pb.Silence, s *Silences, _ time.Time) (bool, error) {
747-
m, err := s.mc.get(sil)
747+
m, err := s.mi.get(sil)
748748
if err != nil {
749749
return true, err
750750
}
@@ -889,8 +889,8 @@ func (s *Silences) loadSnapshot(r io.Reader) error {
889889
e.Silence.CreatedBy = e.Silence.Comments[0].Author
890890
e.Silence.Comments = nil
891891
}
892-
// Add to matcher cache, and only if successful, to the new state.
893-
if _, err := s.mc.add(e.Silence); err != nil {
892+
// Add to matcher index, and only if successful, to the new state.
893+
if _, err := s.mi.add(e.Silence); err != nil {
894894
s.metrics.matcherCompileLoadSnapshotErrorsTotal.Inc()
895895
s.logger.Error("Failed to compile silence matchers during snapshot load", "silence_id", e.Silence.Id, "err", err)
896896
} else {
@@ -945,7 +945,7 @@ func (s *Silences) Merge(b []byte) error {
945945
merged, added := s.st.merge(e, now)
946946
if merged {
947947
if added {
948-
s.cacheSilence(e.Silence)
948+
s.indexSilence(e.Silence)
949949
}
950950
if !cluster.OversizedMessage(b) {
951951
// If this is the first we've seen the message and it's

silence/silence_test.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ func TestSilenceGCOverTime(t *testing.T) {
100100
}
101101
for _, sil := range initialState {
102102
s.st[sil.Silence.Id] = sil
103-
s.cacheSilence(sil.Silence)
103+
s.indexSilence(sil.Silence)
104104
}
105105
want := state{
106106
"3": &pb.MeshSilence{Silence: &pb.Silence{Id: "3"}, ExpiresAt: now.Add(time.Second)},
@@ -127,15 +127,15 @@ func TestSilenceGCOverTime(t *testing.T) {
127127
}
128128
require.NoError(t, s.Set(sil1))
129129
require.Len(t, s.st, 1)
130-
require.Len(t, s.mc, 1)
130+
require.Len(t, s.mi, 1)
131131
// Move time forward and both silence and cache entry should be garbage
132132
// collected.
133133
clock.Advance(time.Minute)
134134
n, err := s.GC()
135135
require.NoError(t, err)
136136
require.Equal(t, 1, n)
137137
require.Empty(t, s.st)
138-
require.Empty(t, s.mc)
138+
require.Empty(t, s.mi)
139139
})
140140

141141
t.Run("replacing a silences does not leak cache entries", func(t *testing.T) {
@@ -154,7 +154,7 @@ func TestSilenceGCOverTime(t *testing.T) {
154154
}
155155
require.NoError(t, s.Set(sil1))
156156
require.Len(t, s.st, 1)
157-
require.Len(t, s.mc, 1)
157+
require.Len(t, s.mi, 1)
158158
// must clone sil1 before replacing it.
159159
sil2 := cloneSilence(sil1)
160160
sil2.Matchers = []*pb.Matcher{{
@@ -164,15 +164,15 @@ func TestSilenceGCOverTime(t *testing.T) {
164164
}}
165165
require.NoError(t, s.Set(sil2))
166166
require.Len(t, s.st, 2)
167-
require.Len(t, s.mc, 2)
167+
require.Len(t, s.mi, 2)
168168
// Move time forward and both silence and cache entry should be garbage
169169
// collected.
170170
clock.Advance(time.Minute)
171171
n, err := s.GC()
172172
require.NoError(t, err)
173173
require.Equal(t, 2, n)
174174
require.Empty(t, s.st)
175-
require.Empty(t, s.mc)
175+
require.Empty(t, s.mi)
176176
})
177177

178178
// This test checks for a memory leak that occurred in the matcher cache when
@@ -193,8 +193,8 @@ func TestSilenceGCOverTime(t *testing.T) {
193193
EndsAt: clock.Now().Add(time.Minute),
194194
}
195195
s.st["1"] = &pb.MeshSilence{Silence: sil1, ExpiresAt: clock.Now().Add(time.Minute)}
196-
s.cacheSilence(sil1)
197-
require.Len(t, s.mc, 1)
196+
s.indexSilence(sil1)
197+
require.Len(t, s.mi, 1)
198198
// must clone sil1 before updating it.
199199
sil2 := cloneSilence(sil1)
200200
require.NoError(t, s.Set(sil2))
@@ -203,15 +203,15 @@ func TestSilenceGCOverTime(t *testing.T) {
203203
// This check asserts that this no longer happens.
204204
s.Query(QMatches(model.LabelSet{"foo": "bar"}))
205205
require.Len(t, s.st, 1)
206-
require.Len(t, s.mc, 1)
206+
require.Len(t, s.mi, 1)
207207
// Move time forward and both silence and cache entry should be garbage
208208
// collected.
209209
clock.Advance(time.Minute)
210210
n, err := s.GC()
211211
require.NoError(t, err)
212212
require.Equal(t, 1, n)
213213
require.Empty(t, s.st)
214-
require.Empty(t, s.mc)
214+
require.Empty(t, s.mi)
215215
})
216216
}
217217

@@ -284,7 +284,7 @@ func TestSilencesSnapshot(t *testing.T) {
284284
require.NoError(t, err, "opening snapshot file failed")
285285

286286
// Check again against new nlog instance.
287-
s2 := &Silences{mc: matcherCache{}, st: state{}}
287+
s2 := &Silences{mi: matcherIndex{}, st: state{}}
288288
err = s2.loadSnapshot(f)
289289
require.NoError(t, err, "error loading snapshot")
290290
require.Equal(t, s1.st, s2.st, "state after loading snapshot did not match snapshotted state")
@@ -947,8 +947,8 @@ func TestQMatches(t *testing.T) {
947947
},
948948
}
949949
for _, c := range cases {
950-
silences := &Silences{mc: matcherCache{}, st: state{}}
951-
silences.mc.add(c.sil)
950+
silences := &Silences{mi: matcherIndex{}, st: state{}}
951+
silences.mi.add(c.sil)
952952
drop, err := f(c.sil, silences, time.Time{})
953953
require.NoError(t, err)
954954
require.Equal(t, c.drop, drop, "unexpected filter result")

0 commit comments

Comments
 (0)