소스 검색

优化serviceLogHandler()函数

niujiuru 1 일 전
부모
커밋
f01b6b1f12
1개의 변경된 파일12개의 추가작업 그리고 3개의 파일을 삭제
  1. 12 3
      web-ui.service/web_handler.go

+ 12 - 3
web-ui.service/web_handler.go

@@ -207,7 +207,8 @@ func serviceLogHandler(w http.ResponseWriter, r *http.Request) {
 
 	defer func() {
 		if cmd.Process != nil {
-			cmd.Process.Kill()
+			err := cmd.Process.Kill()
+			baseapp.Logger.Tracef("[journalctl kill] pid=%d err=%v", cmd.Process.Pid, err)
 		}
 		cmd.Wait()
 
@@ -217,12 +218,20 @@ func serviceLogHandler(w http.ResponseWriter, r *http.Request) {
 	lines := make(chan string, 100)
 
 	go func() {
+		defer close(lines)
+
 		scanner := bufio.NewScanner(stdout)
 		scanner.Buffer(make([]byte, 1024), 1024*1024)
+
 		for scanner.Scan() {
-			lines <- scanner.Text()
+			select {
+			case lines <- scanner.Text():
+			case <-r.Context().Done():
+				return
+			}
 		}
-		close(lines)
+
+		_ = scanner.Err()
 	}()
 
 	for {