浏览代码

Merge pull request #25129 from mlaventure/fix-weird-rpc-lock-on-master

Attach stdin after attach stdout/err to avoid an rpc lock
Alexander Morozov 9 年之前
父节点
当前提交
67a47d78a1
共有 1 个文件被更改,包括 17 次插入17 次删除
  1. 17 17
      daemon/monitor.go

+ 17 - 17
daemon/monitor.go

@@ -125,6 +125,23 @@ func (daemon *Daemon) AttachStreams(id string, iop libcontainerd.IOPipe) error {
 		}
 	}
 
+	copyFunc := func(w io.Writer, r io.Reader) {
+		s.Add(1)
+		go func() {
+			if _, err := io.Copy(w, r); err != nil {
+				logrus.Errorf("%v stream copy error: %v", id, err)
+			}
+			s.Done()
+		}()
+	}
+
+	if iop.Stdout != nil {
+		copyFunc(s.Stdout(), iop.Stdout)
+	}
+	if iop.Stderr != nil {
+		copyFunc(s.Stderr(), iop.Stderr)
+	}
+
 	if stdin := s.Stdin(); stdin != nil {
 		if iop.Stdin != nil {
 			go func() {
@@ -144,22 +161,5 @@ func (daemon *Daemon) AttachStreams(id string, iop libcontainerd.IOPipe) error {
 		}
 	}
 
-	copyFunc := func(w io.Writer, r io.Reader) {
-		s.Add(1)
-		go func() {
-			if _, err := io.Copy(w, r); err != nil {
-				logrus.Errorf("%v stream copy error: %v", id, err)
-			}
-			s.Done()
-		}()
-	}
-
-	if iop.Stdout != nil {
-		copyFunc(s.Stdout(), iop.Stdout)
-	}
-	if iop.Stderr != nil {
-		copyFunc(s.Stderr(), iop.Stderr)
-	}
-
 	return nil
 }