@@ -24,7 +24,7 @@ type Engine struct {
24
24
buildRunCh chan bool
25
25
buildRunStopCh chan bool
26
26
canExit chan bool
27
- binStopChMap map [ int ] chan bool
27
+ binStopCh chan bool
28
28
exitCh chan bool
29
29
30
30
mu sync.RWMutex
@@ -57,7 +57,7 @@ func NewEngine(cfgPath string, debugMode bool) (*Engine, error) {
57
57
buildRunCh : make (chan bool , 1 ),
58
58
buildRunStopCh : make (chan bool , 1 ),
59
59
canExit : make (chan bool , 1 ),
60
- binStopChMap : make (map [ int ] chan bool ),
60
+ binStopCh : make (chan bool ),
61
61
exitCh : make (chan bool ),
62
62
watchers : 0 ,
63
63
}
@@ -94,7 +94,7 @@ func (e *Engine) checkRunEnv() error {
94
94
p := e .config .tmpPath ()
95
95
if _ , err := os .Stat (p ); os .IsNotExist (err ) {
96
96
e .runnerLog ("mkdir %s" , p )
97
- if err := os .Mkdir (p , 0755 ); err != nil {
97
+ if err := os .Mkdir (p , 0o755 ); err != nil {
98
98
e .runnerLog ("failed to mkdir, error: %s" , err .Error ())
99
99
return err
100
100
}
@@ -340,10 +340,8 @@ func (e *Engine) start() {
340
340
341
341
// if current app is running, stop it
342
342
e .withLock (func () {
343
- for _ , v := range e .binStopChMap {
344
- v <- true
345
- }
346
- e .binStopChMap = make (map [int ]chan bool )
343
+ close (e .binStopCh )
344
+ e .binStopCh = make (chan bool )
347
345
})
348
346
go e .buildRun ()
349
347
}
@@ -424,15 +422,16 @@ func (e *Engine) runBin() error {
424
422
return err
425
423
}
426
424
427
- killFunc := func (cmd * exec.Cmd , stdin io.WriteCloser , stdout io.ReadCloser , stderr io.ReadCloser , binStopChan chan bool ) {
425
+ killFunc := func (cmd * exec.Cmd , stdin io.WriteCloser , stdout io.ReadCloser , stderr io.ReadCloser ) {
428
426
defer func () {
429
427
select {
430
428
case <- e .exitCh :
431
429
close (e .canExit )
432
430
default :
433
431
}
434
432
}()
435
- <- binStopChan
433
+ // when invoke close() it will return
434
+ <- e .binStopCh
436
435
e .mainDebug ("trying to kill pid %d, cmd %+v" , cmd .Process .Pid , cmd .Args )
437
436
defer func () {
438
437
stdout .Close ()
@@ -457,12 +456,9 @@ func (e *Engine) runBin() error {
457
456
}
458
457
}
459
458
e .withLock (func () {
460
- for _ , v := range e .binStopChMap {
461
- v <- true
462
- }
463
- e .binStopChMap = make (map [int ]chan bool )
464
- e .binStopChMap [cmd .Process .Pid ] = make (chan bool )
465
- go killFunc (cmd , stdin , stdout , stderr , e .binStopChMap [cmd .Process .Pid ])
459
+ close (e .binStopCh )
460
+ e .binStopCh = make (chan bool )
461
+ go killFunc (cmd , stdin , stdout , stderr )
466
462
})
467
463
e .mainDebug ("running process pid %v" , cmd .Process .Pid )
468
464
return nil
@@ -473,10 +469,8 @@ func (e *Engine) cleanup() {
473
469
defer e .mainLog ("see you again~" )
474
470
475
471
e .withLock (func () {
476
- for _ , v := range e .binStopChMap {
477
- v <- true
478
- }
479
- e .binStopChMap = make (map [int ]chan bool )
472
+ close (e .binStopCh )
473
+ e .binStopCh = make (chan bool )
480
474
})
481
475
e .mainDebug ("wating for close watchers.." )
482
476
0 commit comments