mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2026-01-16 01:31:45 +01:00
Fix shutdown timout bug
This commit is contained in:
@@ -392,21 +392,26 @@ func runServer(ctx context.Context) error {
|
|||||||
close(errChan)
|
close(errChan)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
|
// Wait for either:
|
||||||
|
// 1. An error from server startup
|
||||||
|
// 2. Completion of all goroutines (normal shutdown or crash)
|
||||||
select {
|
select {
|
||||||
case err := <-errChan:
|
case err := <-errChan:
|
||||||
|
// errChan will be closed when waitDone is closed, which happens
|
||||||
|
// when all goroutines complete (either from normal shutdown or error)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
case <-time.After(100 * time.Millisecond):
|
case <-time.After(100 * time.Millisecond):
|
||||||
|
// Give the server 100ms to start and report any immediate startup errors
|
||||||
|
// After that, just wait for normal shutdown completion
|
||||||
select {
|
select {
|
||||||
case err := <-errChan:
|
case err := <-errChan:
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
case <-waitDone:
|
case <-waitDone:
|
||||||
case <-time.After(45 * time.Second):
|
// Normal shutdown completed
|
||||||
cclog.Error("Shutdown timeout after 45 seconds - forcing exit")
|
|
||||||
return fmt.Errorf("shutdown timeout exceeded")
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user