|
@@ -207,7 +207,8 @@ func serviceLogHandler(w http.ResponseWriter, r *http.Request) {
|
|
|
|
|
|
|
|
defer func() {
|
|
defer func() {
|
|
|
if cmd.Process != nil {
|
|
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()
|
|
cmd.Wait()
|
|
|
|
|
|
|
@@ -217,12 +218,20 @@ func serviceLogHandler(w http.ResponseWriter, r *http.Request) {
|
|
|
lines := make(chan string, 100)
|
|
lines := make(chan string, 100)
|
|
|
|
|
|
|
|
go func() {
|
|
go func() {
|
|
|
|
|
+ defer close(lines)
|
|
|
|
|
+
|
|
|
scanner := bufio.NewScanner(stdout)
|
|
scanner := bufio.NewScanner(stdout)
|
|
|
scanner.Buffer(make([]byte, 1024), 1024*1024)
|
|
scanner.Buffer(make([]byte, 1024), 1024*1024)
|
|
|
|
|
+
|
|
|
for scanner.Scan() {
|
|
for scanner.Scan() {
|
|
|
- lines <- scanner.Text()
|
|
|
|
|
|
|
+ select {
|
|
|
|
|
+ case lines <- scanner.Text():
|
|
|
|
|
+ case <-r.Context().Done():
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|
|
|
- close(lines)
|
|
|
|
|
|
|
+
|
|
|
|
|
+ _ = scanner.Err()
|
|
|
}()
|
|
}()
|
|
|
|
|
|
|
|
for {
|
|
for {
|