run shutdownListeners concurrently
Vladimir Bauer
1 year, 10 months ago
| 423 | 423 | case op := <-b.operateState: |
| 424 | 424 | op(bs) |
| 425 | 425 | case <-b.ctx.Done(): |
| 426 | shutdownListeners := bs.shutdownListeners | |
| 426 | for _, d := range bs.shutdownListeners { | |
| 427 | b.container.bwg.Add(1) | |
| 428 | d := d | |
| 429 | go func() { | |
| 430 | d.OnShutdown() | |
| 431 | b.container.bwg.Done() | |
| 432 | }() | |
| 433 | } | |
| 427 | 434 | bs.aborted = !bs.completed() |
| 428 | 435 | b.bs = bs |
| 429 | 436 | close(b.bsOk) |
| 430 | for _, d := range shutdownListeners { | |
| 431 | d.OnShutdown() | |
| 432 | } | |
| 433 | 437 | b.container.bwg.Done() |
| 434 | 438 | return |
| 435 | 439 | } |