Forráskód Böngészése

Fix shutdown daemon during starting causes daemon crash

Signed-off-by: Lei Jitang <leijitang@huawei.com>
Lei Jitang 9 éve
szülő
commit
3c25656efa
1 módosított fájl, 5 hozzáadás és 6 törlés
  1. 5 6
      cmd/dockerd/daemon.go

+ 5 - 6
cmd/dockerd/daemon.go

@@ -127,11 +127,6 @@ func (cli *DaemonCli) start() (err error) {
 	stopc := make(chan bool)
 	stopc := make(chan bool)
 	defer close(stopc)
 	defer close(stopc)
 
 
-	signal.Trap(func() {
-		cli.stop()
-		<-stopc // wait for daemonCli.start() to return
-	})
-
 	// warn from uuid package when running the daemon
 	// warn from uuid package when running the daemon
 	uuid.Loggerf = logrus.Warnf
 	uuid.Loggerf = logrus.Warnf
 
 
@@ -258,6 +253,11 @@ func (cli *DaemonCli) start() (err error) {
 	if err != nil {
 	if err != nil {
 		return err
 		return err
 	}
 	}
+	cli.api = api
+	signal.Trap(func() {
+		cli.stop()
+		<-stopc // wait for daemonCli.start() to return
+	})
 
 
 	d, err := daemon.NewDaemon(cli.Config, registryService, containerdRemote)
 	d, err := daemon.NewDaemon(cli.Config, registryService, containerdRemote)
 	if err != nil {
 	if err != nil {
@@ -276,7 +276,6 @@ func (cli *DaemonCli) start() (err error) {
 	initRouter(api, d)
 	initRouter(api, d)
 
 
 	cli.d = d
 	cli.d = d
-	cli.api = api
 	cli.setupConfigReloadTrap()
 	cli.setupConfigReloadTrap()
 
 
 	// The serve API routine never exits unless an error occurs
 	// The serve API routine never exits unless an error occurs