Browse code

DockerSwarmSuite lock portIndex to work around race

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit c096225e8ee6cb36e363ac38de4e4a566cf09918)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

Sebastiaan van Stijn authored on 2019/07/13 10:13:37
Showing 1 changed files
... ...
@@ -304,8 +304,8 @@ func init() {
304 304
 type DockerSwarmSuite struct {
305 305
 	server      *httptest.Server
306 306
 	ds          *DockerSuite
307
+	daemonsLock sync.Mutex // protect access to daemons and portIndex
307 308
 	daemons     []*daemon.Daemon
308
-	daemonsLock sync.Mutex // protect access to daemons
309 309
 	portIndex   int
310 310
 }
311 311
 
... ...
@@ -336,8 +336,8 @@ func (s *DockerSwarmSuite) AddDaemon(c *check.C, joinSwarm, manager bool) *daemo
336 336
 		d.StartNode(c)
337 337
 	}
338 338
 
339
-	s.portIndex++
340 339
 	s.daemonsLock.Lock()
340
+	s.portIndex++
341 341
 	s.daemons = append(s.daemons, d)
342 342
 	s.daemonsLock.Unlock()
343 343
 
... ...
@@ -354,9 +354,8 @@ func (s *DockerSwarmSuite) TearDownTest(c *check.C) {
354 354
 		}
355 355
 	}
356 356
 	s.daemons = nil
357
-	s.daemonsLock.Unlock()
358
-
359 357
 	s.portIndex = 0
358
+	s.daemonsLock.Unlock()
360 359
 	s.ds.TearDownTest(c)
361 360
 }
362 361