Browse code

Fix race between dispatchers.run and toDisk

Signed-off-by: Alexandr Morozov <lk4d4math@gmail.com>

Alexandr Morozov authored on 2014/09/05 00:43:28
Showing 1 changed files
... ...
@@ -68,15 +68,10 @@ func (b *Builder) commit(id string, autoCmd []string, comment string) error {
68 68
 			return nil
69 69
 		}
70 70
 
71
-		container, warnings, err := b.Daemon.Create(b.Config, "")
71
+		container, err := b.create()
72 72
 		if err != nil {
73 73
 			return err
74 74
 		}
75
-		for _, warning := range warnings {
76
-			fmt.Fprintf(b.OutStream, " ---> [Warning] %s\n", warning)
77
-		}
78
-		b.TmpContainers[container.ID] = struct{}{}
79
-		fmt.Fprintf(b.OutStream, " ---> Running in %s\n", utils.TruncateID(container.ID))
80 75
 		id = container.ID
81 76
 
82 77
 		if err := container.Mount(); err != nil {
... ...
@@ -373,18 +368,23 @@ func (b *Builder) create() (*daemon.Container, error) {
373 373
 	}
374 374
 	b.Config.Image = b.image
375 375
 
376
+	config := *b.Config
377
+
376 378
 	// Create the container
377
-	c, _, err := b.Daemon.Create(b.Config, "")
379
+	c, warnings, err := b.Daemon.Create(b.Config, "")
378 380
 	if err != nil {
379 381
 		return nil, err
380 382
 	}
383
+	for _, warning := range warnings {
384
+		fmt.Fprintf(b.OutStream, " ---> [Warning] %s\n", warning)
385
+	}
381 386
 
382 387
 	b.TmpContainers[c.ID] = struct{}{}
383 388
 	fmt.Fprintf(b.OutStream, " ---> Running in %s\n", utils.TruncateID(c.ID))
384 389
 
385 390
 	// override the entry point that may have been picked up from the base image
386
-	c.Path = b.Config.Cmd[0]
387
-	c.Args = b.Config.Cmd[1:]
391
+	c.Path = config.Cmd[0]
392
+	c.Args = config.Cmd[1:]
388 393
 
389 394
 	return c, nil
390 395
 }