From 660191c5d7a28bea4a871e3e6d338cd9d0aef5a4 Mon Sep 17 00:00:00 2001 From: Zhexuan Yang Date: Tue, 16 Oct 2018 15:45:08 +0800 Subject: [PATCH] util/timeutil: fix data race caused by forgetting set stats lease to 0 (#7901) --- util/kvencoder/kv_encoder_test.go | 1 + util/timeutil/time.go | 6 +++++- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/util/kvencoder/kv_encoder_test.go b/util/kvencoder/kv_encoder_test.go index fcd50e0820edf..18fb8d5663e34 100644 --- a/util/kvencoder/kv_encoder_test.go +++ b/util/kvencoder/kv_encoder_test.go @@ -49,6 +49,7 @@ func newStoreWithBootstrap() (kv.Storage, *domain.Domain, error) { return nil, nil, errors.Trace(err) } session.SetSchemaLease(0) + session.SetStatsLease(0) dom, err := session.BootstrapSession(store) return store, dom, errors.Trace(err) } diff --git a/util/timeutil/time.go b/util/timeutil/time.go index e3527238a1a23..5ebdf1212b142 100644 --- a/util/timeutil/time.go +++ b/util/timeutil/time.go @@ -117,9 +117,13 @@ func SystemLocation() *time.Location { return loc } +var setSysTZOnce sync.Once + // SetSystemTZ sets systemTZ by the value loaded from mysql.tidb. func SetSystemTZ(name string) { - systemTZ = name + setSysTZOnce.Do(func() { + systemTZ = name + }) } // getLoc first trying to load location from a cache map. If nothing found in such map, then call