Browse code

Fix race in stats cli and native driver

Signed-off-by: Antonio Murdaca <me@runcom.ninja>

Antonio Murdaca authored on 2015/05/25 05:26:50
Showing 2 changed files
... ...
@@ -37,7 +37,9 @@ func (s *containerStats) Collect(cli *DockerCli, streamStats bool) {
37 37
 	}
38 38
 	stream, _, err := cli.call("GET", "/containers/"+s.Name+"/stats?"+v.Encode(), nil, nil)
39 39
 	if err != nil {
40
+		s.mu.Lock()
40 41
 		s.err = err
42
+		s.mu.Unlock()
41 43
 		return
42 44
 	}
43 45
 	defer stream.Close()
... ...
@@ -335,7 +335,9 @@ func (d *driver) Clean(id string) error {
335 335
 }
336 336
 
337 337
 func (d *driver) Stats(id string) (*execdriver.ResourceStats, error) {
338
+	d.Lock()
338 339
 	c := d.activeContainers[id]
340
+	d.Unlock()
339 341
 	if c == nil {
340 342
 		return nil, execdriver.ErrNotRunning
341 343
 	}