From a6f7bbe5602a0b63ed78a1d82afc9db6c1e3e222 Mon Sep 17 00:00:00 2001 From: Wei Fu Date: Wed, 6 Sep 2023 18:04:58 +0800 Subject: [PATCH] server/storage/mvcc: deflake TestHashKVWhenCompacting The HashByRev-goroutines exit since receive `donec` notification. The Check-computed-hashes goroutine could not have chance to get the hash result and be stuck forever. We should add case for donec when we wait for hash result. Signed-off-by: Wei Fu --- server/storage/mvcc/kvstore_test.go | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/server/storage/mvcc/kvstore_test.go b/server/storage/mvcc/kvstore_test.go index af4c3846c33..1e57c59f357 100644 --- a/server/storage/mvcc/kvstore_test.go +++ b/server/storage/mvcc/kvstore_test.go @@ -591,18 +591,17 @@ func TestHashKVWhenCompacting(t *testing.T) { defer wg.Done() revHash := make(map[int64]uint32) for { - r := <-hashCompactc - if revHash[r.compactRev] == 0 { - revHash[r.compactRev] = r.hash - } - if r.hash != revHash[r.compactRev] { - t.Errorf("Hashes differ (current %v) != (saved %v)", r.hash, revHash[r.compactRev]) - } - select { + case r := <-hashCompactc: + if revHash[r.compactRev] == 0 { + revHash[r.compactRev] = r.hash + } + + if r.hash != revHash[r.compactRev] { + t.Errorf("Hashes differ (current %v) != (saved %v)", r.hash, revHash[r.compactRev]) + } case <-donec: return - default: } } }()