Remove shardSeriesSet caching

This commit is contained in:
Fabian Reinartz 2017-01-02 12:05:52 +01:00
parent beb842a856
commit 5c45a1cc6f
1 changed files with 15 additions and 31 deletions

View File

@ -351,16 +351,16 @@ func (s *mergedSeriesSet) Next() bool {
type shardSeriesSet struct {
a, b SeriesSet
cur Series
as, bs Series // peek ahead of each set
cur Series
adone, bdone bool
}
func newShardSeriesSet(a, b SeriesSet) *shardSeriesSet {
s := &shardSeriesSet{a: a, b: b}
// Initialize first elements of both sets as Next() needs
// one element look-ahead.
s.advanceA()
s.advanceB()
s.adone = !s.a.Next()
s.bdone = !s.b.Next()
return s
}
@ -377,50 +377,34 @@ func (s *shardSeriesSet) Err() error {
}
func (s *shardSeriesSet) compare() int {
if s.as == nil {
if s.adone {
return 1
}
if s.bs == nil {
if s.bdone {
return -1
}
return labels.Compare(s.as.Labels(), s.bs.Labels())
}
func (s *shardSeriesSet) advanceA() {
if s.a.Next() {
s.as = s.a.Series()
} else {
s.as = nil
}
}
func (s *shardSeriesSet) advanceB() {
if s.b.Next() {
s.bs = s.b.Series()
} else {
s.bs = nil
}
return labels.Compare(s.a.Series().Labels(), s.a.Series().Labels())
}
func (s *shardSeriesSet) Next() bool {
if s.as == nil && s.bs == nil || s.Err() != nil {
if s.adone && s.bdone || s.Err() != nil {
return false
}
d := s.compare()
// Both sets contain the current series. Chain them into a single one.
if d > 0 {
s.cur = s.bs
s.advanceB()
s.cur = s.b.Series()
s.bdone = !s.b.Next()
} else if d < 0 {
s.cur = s.as
s.advanceA()
s.cur = s.a.Series()
s.adone = !s.a.Next()
} else {
s.cur = &chainedSeries{series: []Series{s.as, s.bs}}
s.advanceA()
s.advanceB()
s.cur = &chainedSeries{series: []Series{s.a.Series(), s.b.Series()}}
s.adone = !s.a.Next()
s.bdone = !s.b.Next()
}
return true
}