From d93fda2fc047b45ac6a7ea13a04fa29f72a38594 Mon Sep 17 00:00:00 2001 From: siddontang Date: Mon, 30 Nov 2015 10:43:09 +0800 Subject: [PATCH] localstore: check valid timestamp if time is reset. --- store/localstore/local_version_provider.go | 29 ++++++++++++++-------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/store/localstore/local_version_provider.go b/store/localstore/local_version_provider.go index 997bf786b6..38631532e6 100644 --- a/store/localstore/local_version_provider.go +++ b/store/localstore/local_version_provider.go @@ -5,6 +5,7 @@ import ( "sync" "time" + "github.com/ngaut/log" "github.com/pingcap/tidb/kv" ) @@ -31,18 +32,26 @@ func (l *LocalVersionProvider) CurrentVersion() (kv.Version, error) { l.mu.Lock() defer l.mu.Unlock() - var ts uint64 - ts = uint64((time.Now().UnixNano() / int64(time.Millisecond)) << timePrecisionOffset) - if l.lastTimestamp == uint64(ts) { - l.logical++ - if l.logical >= 1< ts { + log.Warn("invalid physical time stamp") + continue } - return kv.Version{Ver: ts + l.logical}, nil + + if l.lastTimestamp == uint64(ts) { + l.logical++ + if l.logical >= 1<