Skip to content

Commit a2f6371

Browse files
committed
tsdb: reset symbol table for exemplars
Signed-off-by: Bryan Boreham <[email protected]>
1 parent 23106ff commit a2f6371

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

tsdb/exemplar.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,3 +448,27 @@ func (ce *CircularExemplarStorage) IterateExemplars(f func(seriesLabels labels.L
448448
}
449449
return nil
450450
}
451+
452+
func (ce *CircularExemplarStorage) ResetSymbolTable(st *labels.SymbolTable) {
453+
builder := labels.NewScratchBuilderWithSymbolTable(st, 0)
454+
rebuildLabels := func(lbls labels.Labels) labels.Labels {
455+
builder.Reset()
456+
lbls.Range(func(l labels.Label) {
457+
builder.Add(l.Name, l.Value)
458+
})
459+
return builder.Labels()
460+
}
461+
462+
ce.lock.RLock()
463+
defer ce.lock.RUnlock()
464+
465+
for _, v := range ce.index {
466+
v.seriesLabels = rebuildLabels(v.seriesLabels)
467+
}
468+
for i := range ce.exemplars {
469+
if ce.exemplars[i] == nil {
470+
continue
471+
}
472+
ce.exemplars[i].exemplar.Labels = rebuildLabels(ce.exemplars[i].exemplar.Labels)
473+
}
474+
}

tsdb/head.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2509,5 +2509,9 @@ func (h *Head) RebuildSymbolTable() *labels.SymbolTable {
25092509

25102510
h.series.locks[i].Unlock()
25112511
}
2512+
2513+
if e, ok := h.exemplars.(interface{ ResetSymbolTable(*labels.SymbolTable) }); ok {
2514+
e.ResetSymbolTable(st)
2515+
}
25122516
return st
25132517
}

0 commit comments

Comments
 (0)