Merge pull request #1707 from merico-dev/kw-1706-task-hangs
Kw 1706 task hangs
diff --git a/plugins/helper/api_collector.go b/plugins/helper/api_collector.go
index 5fecac5..069a5ab 100644
--- a/plugins/helper/api_collector.go
+++ b/plugins/helper/api_collector.go
@@ -179,7 +179,9 @@
break
}
}
- wg.Wait()
+ if err == nil {
+ wg.Wait()
+ }
} else {
// or we just did it once
err = collector.exec(nil)
diff --git a/runner/directrun.go b/runner/directrun.go
index 4c2fa15..fecf449 100644
--- a/runner/directrun.go
+++ b/runner/directrun.go
@@ -2,6 +2,8 @@
import (
"context"
+ "os"
+ "os/exec"
"github.com/merico-dev/lake/config"
"github.com/merico-dev/lake/logger"
@@ -39,11 +41,27 @@
if err != nil {
panic(err)
}
+
+ exec.Command("stty", "-F", "/dev/tty", "cbreak", "min", "1").Run()
+ ctx, cancel := context.WithCancel(context.Background())
+ go func() {
+ buf := make([]byte, 1)
+ n, err := os.Stdin.Read(buf)
+ if err != nil {
+ panic(err)
+ } else if n == 1 && buf[0] == 99 {
+ cancel()
+ } else {
+ println("unknown key press, code: ", buf[0])
+ }
+ }()
+ println("press `c` to send cancel signal")
+
err = RunPluginSubTasks(
cfg,
log,
db,
- context.Background(),
+ ctx,
cmd.Use,
options,
pluginTask,