File tree Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Expand file tree Collapse file tree 2 files changed +28
-0
lines changed Original file line number Diff line number Diff 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+ }
Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments