From 5eff6fb7db953c471346d4e8a46d483445750174 Mon Sep 17 00:00:00 2001 From: Anthony Romano Date: Fri, 12 Aug 2016 13:22:01 -0700 Subject: [PATCH] compactor: wait for After() in TestPeriodic If the test calls clock.Advance() after the compactor checks clock.Now() but before the compactor calls clock.After(), the compactor will wait forever on clock.After() expecting the lost clock.Advance(). Reproduced failure by putting a Sleep() in the clock.Now() continue path. Fixes #6060 (again) --- compactor/compactor_test.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/compactor/compactor_test.go b/compactor/compactor_test.go index fcb507a98d6..c4f3ab3b546 100644 --- a/compactor/compactor_test.go +++ b/compactor/compactor_test.go @@ -47,7 +47,10 @@ func TestPeriodic(t *testing.T) { fc.Advance(checkCompactionInterval) rg.Wait(1) } - // ready to acknowledge hour "i"; unblock clock + // ready to acknowledge hour "i" + // block until compactor calls clock.After() + fc.BlockUntil(1) + // unblock the After() fc.Advance(checkCompactionInterval) a, err := compactable.Wait(1) if err != nil {