Browse Source

Fixes/cleanups to renderView() samples truncation.

pull/176/head
Julius Volz 12 years ago
parent
commit
9b8c671ec9
  1. 13
      model/metric.go
  2. 4
      storage/metric/tiered.go

13
model/metric.go

@ -96,15 +96,8 @@ type SamplePair struct {
Timestamp time.Time
}
func (s SamplePair) Equal(o SamplePair) (equal bool) {
switch {
case !s.Value.Equal(o.Value):
return
case !s.Timestamp.Equal(o.Timestamp):
return
}
return true
func (s SamplePair) Equal(o SamplePair) bool {
return s.Value.Equal(o.Value) && s.Timestamp.Equal(o.Timestamp)
}
type Values []SamplePair
@ -158,7 +151,7 @@ func (v Values) TruncateBefore(t time.Time) (values Values) {
index := sort.Search(len(v), func(i int) bool {
timestamp := v[i].Timestamp
return timestamp.After(t) || timestamp.Equal(t)
return !timestamp.Before(t)
})
switch index {

4
storage/metric/tiered.go

@ -417,13 +417,13 @@ func (t *tieredStorage) renderView(viewJob viewJob) {
break
}
chunk = chunk.TruncateBefore(targetTime)
lastChunkTime := chunk[len(chunk)-1].Timestamp
if lastChunkTime.After(targetTime) {
targetTime = lastChunkTime
}
chunk = chunk.TruncateBefore(targetTime)
// For each op, extract all needed data from the current chunk.
out := model.Values{}
for _, op := range standingOps {

Loading…
Cancel
Save