Close archive writers when the delivery engine stops (closes #280) #332
@@ -368,9 +368,9 @@ func (e *Engine) start() {
|
||||
// writer for long by then: the archive sweeper stops before the
|
||||
// engine, and deleting a webhook only closes one. If the pool did
|
||||
// not drain in time, the writers are left open, as a kill would
|
||||
// leave them: a worker still running may be mid-write, and
|
||||
// closing its writer would wait on that write and then fail the
|
||||
// next delivery the worker archives.
|
||||
// leave them. Closing them would wait for any write in progress,
|
||||
// and a worker still running would then open new writers that
|
||||
// nothing closes, so it gains nothing over a kill.
|
||||
func (e *Engine) stop(ctx context.Context) error {
|
||||
e.log.Info("delivery engine stopping")
|
||||
|
||||
|
||||
@@ -327,10 +327,10 @@ func TestEngine_StopHookClosesArchives(t *testing.T) {
|
||||
}
|
||||
|
||||
// TestEngine_StopHookTimeoutLeavesArchivesOpen covers a stop whose
|
||||
// budget runs out while a worker is still running. That worker may
|
||||
// be in the middle of an archive write, so the archive writers are
|
||||
// left open, as a kill would leave them, rather than closed
|
||||
// underneath it.
|
||||
// budget runs out while a worker is still running. The archive
|
||||
// writers are left open, as a kill would leave them: closing them
|
||||
// would wait for any write in progress, and that worker would then
|
||||
// open new writers that nothing closes.
|
||||
func TestEngine_StopHookTimeoutLeavesArchivesOpen(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user