From cbf69f6ded936577a344a1409fe5c63009452669 Mon Sep 17 00:00:00 2001 From: Steven Allen Date: Tue, 24 Aug 2021 11:35:56 -0700 Subject: [PATCH] fix: make TestTimedCacheBlockstoreSimple pass reliably --- blockstore/timed.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/blockstore/timed.go b/blockstore/timed.go index 80e6c8a08..b21dceeb8 100644 --- a/blockstore/timed.go +++ b/blockstore/timed.go @@ -47,8 +47,12 @@ func (t *TimedCacheBlockstore) Start(_ context.Context) error { return fmt.Errorf("already started") } t.closeCh = make(chan struct{}) + + // Create this timer before starting the goroutine. Otherwise, creating the timer will race + // with addint time to the mock clock, and we could add time _first_, then stall waiting for + // a timer that'll never fire. + ticker := t.clock.Ticker(t.interval) go func() { - ticker := t.clock.Ticker(t.interval) defer ticker.Stop() for { select {