Root background loops at context.Background() (closes #97) (#100)
All checks were successful
check / check (push) Successful in 5s
All checks were successful
check / check (push) Successful in 5s
The delivery engine worker pool and the retention reaper both rooted their goroutines in the fx OnStart hook context, which fx cancels 15s into startup. Both now use context.WithCancel(context.Background()), bounded by OnStop.
This commit was merged in pull request #100.
This commit is contained in:
@@ -5,6 +5,8 @@ import (
|
||||
"log/slog"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"go.uber.org/fx"
|
||||
)
|
||||
|
||||
// NewTestRetentionReaper builds a RetentionReaper backed by the given
|
||||
@@ -29,3 +31,26 @@ func NewTestRetentionReaper(
|
||||
func (r *RetentionReaper) ExportSweep(ctx context.Context) {
|
||||
r.sweep(ctx)
|
||||
}
|
||||
|
||||
// ExportRegisterHooks registers the reaper's real fx lifecycle hooks
|
||||
// on a lifecycle supplied by a test, so a test can drive the exact
|
||||
// OnStart/OnStop functions the application runs and hand OnStart the
|
||||
// kind of context fx actually supplies.
|
||||
func (r *RetentionReaper) ExportRegisterHooks(lc fx.Lifecycle) {
|
||||
r.registerHooks(lc)
|
||||
}
|
||||
|
||||
// ExportStart starts the reaper's background loop for tests.
|
||||
func (r *RetentionReaper) ExportStart() {
|
||||
r.start()
|
||||
}
|
||||
|
||||
// ExportStop stops the reaper's background loop for tests.
|
||||
func (r *RetentionReaper) ExportStop() {
|
||||
r.stop()
|
||||
}
|
||||
|
||||
// ExportSetInterval overrides the sweep interval for tests.
|
||||
func (r *RetentionReaper) ExportSetInterval(d time.Duration) {
|
||||
r.interval = d
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user