From 3fd08cc5e64c0f301e666c7da60ce25060e80065 Mon Sep 17 00:00:00 2001 From: Alexander Morozov Date: Tue, 29 Mar 2016 10:46:29 -0700 Subject: [PATCH] volume/store: fix couple of races with accessing maps Signed-off-by: Alexander Morozov (cherry picked from commit e6d87c0706d178407ffccaab5c3ffc13a9e7b02e) --- volume/store/store.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/volume/store/store.go b/volume/store/store.go index 154258d8f9..b2ac9a8ce8 100644 --- a/volume/store/store.go +++ b/volume/store/store.go @@ -267,7 +267,9 @@ func (s *VolumeStore) create(name, driverName string, opts, labels map[string]st if err != nil { return nil, err } + s.globalLock.Lock() s.labels[name] = labels + s.globalLock.Unlock() if s.db != nil { metadata := &volumeMetadata{ @@ -362,7 +364,10 @@ func (s *VolumeStore) getVolume(name string) (volume.Volume, error) { } logrus.Debugf("Getting volume reference for name: %s", name) - if v, exists := s.names[name]; exists { + s.globalLock.Lock() + v, exists := s.names[name] + s.globalLock.Unlock() + if exists { vd, err := volumedrivers.GetDriver(v.DriverName()) if err != nil { return nil, err