Browse Source

Fix miscellaneaus data races

Fixed the remaining data races in the libnetwork code.

Signed-off-by: Jana Radhakrishnan <mrjana@docker.com>
Jana Radhakrishnan 10 years ago
parent
commit
bc70ed60cb

+ 9 - 0
libnetwork/network.go

@@ -64,14 +64,23 @@ type network struct {
 }
 
 func (n *network) Name() string {
+	n.Lock()
+	defer n.Unlock()
+
 	return n.name
 }
 
 func (n *network) ID() string {
+	n.Lock()
+	defer n.Unlock()
+
 	return string(n.id)
 }
 
 func (n *network) Type() string {
+	n.Lock()
+	defer n.Unlock()
+
 	if n.driver == nil {
 		return ""
 	}

+ 5 - 1
libnetwork/sandbox/namespace_linux.go

@@ -52,7 +52,11 @@ func createBasePath() {
 }
 
 func removeUnusedPaths() {
-	for range time.Tick(gpmCleanupPeriod) {
+	gpmLock.Lock()
+	period := gpmCleanupPeriod
+	gpmLock.Unlock()
+
+	for range time.Tick(period) {
 		gpmLock.Lock()
 		pathList := make([]string, 0, len(garbagePathMap))
 		for path := range garbagePathMap {

+ 2 - 0
libnetwork/sandbox/sandbox_linux_test.go

@@ -33,7 +33,9 @@ func newKey(t *testing.T) (string, error) {
 	}
 
 	// Set the rpmCleanupPeriod to be low to make the test run quicker
+	gpmLock.Lock()
 	gpmCleanupPeriod = 2 * time.Second
+	gpmLock.Unlock()
 
 	return name, nil
 }