Add locking to sketch merge.
parent
9bd19cdc69
commit
5f7654173e
|
@ -681,10 +681,7 @@ func (i *Index) SeriesSketches() (estimator.Sketch, estimator.Sketch, error) {
|
|||
|
||||
// Merge in any current log file sketches.
|
||||
for _, f := range i.logFiles {
|
||||
if err := sketch.Merge(f.sSketch); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
if err := tsketch.Merge(f.sTSketch); err != nil {
|
||||
if err := f.MergeSeriesSketches(sketch, tsketch); err != nil {
|
||||
return nil, nil, err
|
||||
}
|
||||
}
|
||||
|
|
|
@ -775,6 +775,20 @@ func (f *LogFile) reset() {
|
|||
}
|
||||
}
|
||||
|
||||
// MergeSeriesSketches merges the series sketches within a mutex.
|
||||
func (f *LogFile) MergeSeriesSketches(sketch, tsketch estimator.Sketch) error {
|
||||
f.mu.RLock()
|
||||
defer f.mu.RUnlock()
|
||||
|
||||
if err := sketch.Merge(f.sSketch); err != nil {
|
||||
return err
|
||||
}
|
||||
if err := tsketch.Merge(f.sTSketch); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
// LogEntry represents a single log entry in the write-ahead log.
|
||||
type LogEntry struct {
|
||||
Flag byte // flag
|
||||
|
|
Loading…
Reference in New Issue