From fd6600850ac661337db44a43be71f748845aeb33 Mon Sep 17 00:00:00 2001 From: Bjoern Rabenstein Date: Thu, 9 Oct 2014 13:03:54 +0200 Subject: [PATCH] Fix race in chunkDesc. Change-Id: Id7bae115d75886e10d44184a690a76777b1531fe --- storage/local/series.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/storage/local/series.go b/storage/local/series.go index ed4057850d..8b853ecb9b 100644 --- a/storage/local/series.go +++ b/storage/local/series.go @@ -161,6 +161,9 @@ func (cd *chunkDesc) unpin() { } func (cd *chunkDesc) firstTime() clientmodel.Timestamp { + cd.Lock() + defer cd.Unlock() + if cd.chunk == nil { return cd.firstTimeField } @@ -168,6 +171,9 @@ func (cd *chunkDesc) firstTime() clientmodel.Timestamp { } func (cd *chunkDesc) lastTime() clientmodel.Timestamp { + cd.Lock() + defer cd.Unlock() + if cd.chunk == nil { return cd.lastTimeField } @@ -201,6 +207,7 @@ func (cd *chunkDesc) evictOnUnpin() { cd.evict = true } +// evictNow is an internal helper method. func (cd *chunkDesc) evictNow() { cd.firstTimeField = cd.chunk.firstTime() cd.lastTimeField = cd.chunk.lastTime()