mirror of
https://github.com/VictoriaMetrics/VictoriaMetrics.git
synced 2024-11-21 14:44:00 +00:00
app/vmselect/prometheus: convert negative times to 0, since they arent supported by the storage
This commit is contained in:
parent
2bd1a01d1a
commit
54bd21eb4a
2 changed files with 11 additions and 8 deletions
|
@ -562,8 +562,11 @@ func getTime(r *http.Request, argKey string, defaultValue int64) (int64, error)
|
||||||
secs = float64(t.UnixNano()) / 1e9
|
secs = float64(t.UnixNano()) / 1e9
|
||||||
}
|
}
|
||||||
msecs := int64(secs * 1e3)
|
msecs := int64(secs * 1e3)
|
||||||
if msecs < minTimeMsecs || msecs > maxTimeMsecs {
|
if msecs < minTimeMsecs {
|
||||||
return 0, fmt.Errorf("%q=%dms is out of allowed range [%d ... %d]", argKey, msecs, minTimeMsecs, maxTimeMsecs)
|
msecs = 0
|
||||||
|
}
|
||||||
|
if msecs > maxTimeMsecs {
|
||||||
|
msecs = maxTimeMsecs
|
||||||
}
|
}
|
||||||
return msecs, nil
|
return msecs, nil
|
||||||
}
|
}
|
||||||
|
@ -577,7 +580,7 @@ var (
|
||||||
|
|
||||||
const (
|
const (
|
||||||
// These values prevent from overflow when storing msec-precision time in int64.
|
// These values prevent from overflow when storing msec-precision time in int64.
|
||||||
minTimeMsecs = int64(-1<<63) / 1e6
|
minTimeMsecs = 0 // use 0 instead of `int64(-1<<63) / 1e6` because the storage engine doesn't actually support negative time
|
||||||
maxTimeMsecs = int64(1<<63-1) / 1e6
|
maxTimeMsecs = int64(1<<63-1) / 1e6
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -37,10 +37,12 @@ func TestGetTimeSuccess(t *testing.T) {
|
||||||
|
|
||||||
f("2019-07-07T20:01:02Z", 1562529662000)
|
f("2019-07-07T20:01:02Z", 1562529662000)
|
||||||
f("2019-07-07T20:47:40+03:00", 1562521660000)
|
f("2019-07-07T20:47:40+03:00", 1562521660000)
|
||||||
f("-292273086-05-16T16:47:06Z", -9223372036854)
|
f("-292273086-05-16T16:47:06Z", minTimeMsecs)
|
||||||
f("292277025-08-18T07:12:54.999999999Z", 9223372036854)
|
f("292277025-08-18T07:12:54.999999999Z", maxTimeMsecs)
|
||||||
f("1562529662.324", 1562529662324)
|
f("1562529662.324", 1562529662324)
|
||||||
f("-9223372036.854", -9223372036854)
|
f("-9223372036.854", minTimeMsecs)
|
||||||
|
f("-9223372036.855", minTimeMsecs)
|
||||||
|
f("9223372036.855", maxTimeMsecs)
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestGetTimeError(t *testing.T) {
|
func TestGetTimeError(t *testing.T) {
|
||||||
|
@ -73,6 +75,4 @@ func TestGetTimeError(t *testing.T) {
|
||||||
f("2019-07-07T20:47:40+03:00123")
|
f("2019-07-07T20:47:40+03:00123")
|
||||||
f("-292273086-05-16T16:47:07Z")
|
f("-292273086-05-16T16:47:07Z")
|
||||||
f("292277025-08-18T07:12:54.999999998Z")
|
f("292277025-08-18T07:12:54.999999998Z")
|
||||||
f("-9223372036.855")
|
|
||||||
f("9223372036.855")
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue