Skip to content

Commit

Permalink
Merge pull request #17321 from ahrtr/3.4_TestHashKVWhenCompacting_202…
Browse files Browse the repository at this point in the history
…40125

[3.4] test: fix `TestHashKVWhenCompacting`: ensure all goroutine finished
  • Loading branch information
ahrtr authored Jan 26, 2024
2 parents 1d67e9e + 6b77452 commit d14f794
Showing 1 changed file with 23 additions and 2 deletions.
25 changes: 23 additions & 2 deletions mvcc/kvstore_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -546,6 +546,7 @@ func TestHashKVWhenCompacting(t *testing.T) {
hashCompactc := make(chan hashKVResult, 1)
var wg sync.WaitGroup
donec := make(chan struct{})
stopc := make(chan struct{})

// Call HashByRev(10000) in multiple goroutines until donec is closed
for i := 0; i < 10; i++ {
Expand All @@ -558,6 +559,8 @@ func TestHashKVWhenCompacting(t *testing.T) {
t.Error(err)
}
select {
case <-stopc:
return
case <-donec:
return
case hashCompactc <- hashKVResult{hash, compactRev}:
Expand All @@ -581,6 +584,8 @@ func TestHashKVWhenCompacting(t *testing.T) {
}

select {
case <-stopc:
return
case <-donec:
return
default:
Expand All @@ -589,9 +594,20 @@ func TestHashKVWhenCompacting(t *testing.T) {
}()

// Compact the store in a goroutine, using revision 9900 to 10000 and close donec when finished
wg.Add(1)
go func() {
defer close(donec)
defer func() {
close(donec)
wg.Done()
}()

for i := 100; i >= 0; i-- {
select {
case <-stopc:
return
default:
}

_, err := s.Compact(traceutil.TODO(), int64(rev-i))
if err != nil {
t.Error(err)
Expand All @@ -602,12 +618,17 @@ func TestHashKVWhenCompacting(t *testing.T) {
time.Sleep(10 * time.Millisecond)
}
}()

select {
case <-donec:
wg.Wait()
case <-time.After(10 * time.Second):
close(stopc)
wg.Wait()
testutil.FatalStack(t, "timeout")
}

close(stopc)
wg.Wait()
}

// TestHashKVWithCompactedAndFutureRevisions ensures that HashKV returns a correct hash when called
Expand Down

0 comments on commit d14f794

Please sign in to comment.