diff --git a/tracker.go b/tracker.go index b541375e2..330fbe0a1 100644 --- a/tracker.go +++ b/tracker.go @@ -23,14 +23,14 @@ import ( type ActiveQueryStatus struct { Query string `json:"query"` Node string `json:"node"` - Index string `json:index` + Index string `json:"index"` Age time.Duration `json:"age"` } type PastQueryStatus struct { Query string `json:"query"` Node string `json:"nodeID"` - Index string `json:index` + Index string `json:"index"` Age time.Duration `json:"age"` Runtime time.Duration `json:"runtime"` } @@ -86,9 +86,10 @@ func (b *ringBuffer) add(q pastQuery) { b.mu.Lock() defer b.mu.Unlock() - b.queries[(b.start+b.count)%cap(b.queries)] = q - if b.count == cap(b.queries) { - b.start = (b.start + 1) % cap(b.queries) + // len(b.queries) is used here as the *capacity* of the ringBuffer + b.queries[(b.start+b.count)%len(b.queries)] = q + if b.count == len(b.queries) { + b.start = (b.start + 1) % len(b.queries) } else { b.count++ } diff --git a/tracker_test.go b/tracker_test.go index fa6767e50..d2b10e08a 100644 --- a/tracker_test.go +++ b/tracker_test.go @@ -56,14 +56,14 @@ func TestRingBuffer(t *testing.T) { } func TestQueryTracker(t *testing.T) { - tracker := newQueryTracker() + tracker := newQueryTracker(5) defer tracker.Stop() if queries := tracker.ActiveQueries(); len(queries) > 0 { t.Fatalf("expected no active queries; found %v", queries) } - qs := tracker.Start("test query", "node0") + qs := tracker.Start("test query", "node0", "i") var queries []ActiveQueryStatus for len(queries) < 1 {