diff --git a/engine/engine.go b/engine/engine.go index 299b0c05fb..4550df9d1d 100644 --- a/engine/engine.go +++ b/engine/engine.go @@ -164,11 +164,20 @@ func (eng *Engine) Shutdown() { // This requires all concurrent calls to check for shutdown, otherwise // it might cause a race. - // Wait for all jobs to complete - eng.tasks.Wait() + // Wait for all jobs to complete. + // Timeout after 5 seconds. + tasksDone := make(chan struct{}) + go func() { + eng.tasks.Wait() + close(tasksDone) + }() + select { + case <-time.After(time.Second * 5): + case <-tasksDone: + } // Call shutdown handlers, if any. - // Timeout after 15 seconds. + // Timeout after 10 seconds. var wg sync.WaitGroup for _, h := range eng.onShutdown { wg.Add(1) @@ -183,7 +192,7 @@ func (eng *Engine) Shutdown() { close(done) }() select { - case <-time.After(time.Second * 15): + case <-time.After(time.Second * 10): case <-done: } return