Merge pull request #8601 from dgl/fix-8243

Ensure that timestamp comparison uses wall clock time
This commit is contained in:
Julien Pivotto 2021-03-16 16:00:25 +01:00 committed by GitHub
commit e14176756f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1013,7 +1013,7 @@ func (sl *scrapeLoop) run(interval, timeout time.Duration, errc chan<- error) {
var last time.Time
alignedScrapeTime := time.Now()
alignedScrapeTime := time.Now().Round(0)
ticker := time.NewTicker(interval)
defer ticker.Stop()
@ -1031,7 +1031,9 @@ mainLoop:
// Temporary workaround for a jitter in go timers that causes disk space
// increase in TSDB.
// See https://github.com/prometheus/prometheus/issues/7846
scrapeTime := time.Now()
// Calling Round ensures the time used is the wall clock, as otherwise .Sub
// and .Add on time.Time behave differently (see time package docs).
scrapeTime := time.Now().Round(0)
if AlignScrapeTimestamps && interval > 100*scrapeTimestampTolerance {
// For some reason, a tick might have been skipped, in which case we
// would call alignedScrapeTime.Add(interval) multiple times.