Browse Source

Merge pull request #177 from prometheus/refactor/time/everything-in-utc

Convert time readers to represent time in UTC.
pull/176/merge
Matt T. Proud 12 years ago
parent
commit
a3f04ed272
  1. 12
      coding/indexable/time.go
  2. 2
      model/metric.go
  3. 2
      model/samplekey.go
  4. 2
      model/watermark.go
  5. 4
      web/api/query.go

12
coding/indexable/time.go

@ -18,14 +18,14 @@ import (
"time"
)
var (
EarliestTime = EncodeTime(time.Time{})
)
// EncodeTimeInto writes the provided time into the specified buffer subject
// to the LevelDB big endian key sort order requirement.
func EncodeTimeInto(dst []byte, t time.Time) {
binary.BigEndian.PutUint64(dst, uint64(t.Unix()))
}
// EncodeTime converts the provided time into a byte buffer subject to the
// LevelDB big endian key sort order requirement.
func EncodeTime(t time.Time) []byte {
buffer := make([]byte, 8)
@ -34,6 +34,8 @@ func EncodeTime(t time.Time) []byte {
return buffer
}
// DecodeTime deserializes a big endian byte array into a Unix time in UTC,
// omitting granularity precision less than a second.
func DecodeTime(src []byte) time.Time {
return time.Unix(int64(binary.BigEndian.Uint64(src)), 0)
return time.Unix(int64(binary.BigEndian.Uint64(src)), 0).UTC()
}

2
model/metric.go

@ -139,7 +139,7 @@ func (v Values) InsideInterval(t time.Time) (s bool) {
func NewValuesFromDTO(dto *dto.SampleValueSeries) (v Values) {
for _, value := range dto.Value {
v = append(v, SamplePair{
Timestamp: time.Unix(*value.Timestamp, 0),
Timestamp: time.Unix(*value.Timestamp, 0).UTC(),
Value: SampleValue(*value.Value),
})
}

2
model/samplekey.go

@ -73,7 +73,7 @@ func NewSampleKeyFromDTO(dto *dto.SampleKey) SampleKey {
return SampleKey{
Fingerprint: NewFingerprintFromDTO(dto.Fingerprint),
FirstTimestamp: indexable.DecodeTime(dto.Timestamp),
LastTimestamp: time.Unix(*dto.LastTimestamp, 0),
LastTimestamp: time.Unix(*dto.LastTimestamp, 0).UTC(),
SampleCount: *dto.SampleCount,
}
}

2
model/watermark.go

@ -37,7 +37,7 @@ func (w Watermark) ToMetricHighWatermarkDTO() *dto.MetricHighWatermark {
// dto.MetricHighWatermark object.
func NewWatermarkFromHighWatermarkDTO(d *dto.MetricHighWatermark) Watermark {
return Watermark{
time.Unix(*d.Timestamp, 0),
time.Unix(*d.Timestamp, 0).UTC(),
}
}

4
web/api/query.go

@ -84,8 +84,8 @@ func (serv MetricsService) QueryRange(expr string, end int64, duration int64, st
matrix, err := ast.EvalVectorRange(
exprNode.(ast.VectorNode),
time.Unix(end-duration, 0),
time.Unix(end, 0),
time.Unix(end-duration, 0).UTC(),
time.Unix(end, 0).UTC(),
time.Duration(step)*time.Second)
if err != nil {
return ast.ErrorToJSON(err)

Loading…
Cancel
Save