Merge pull request #16223 from kensou97/fix-barrier

clientv3: fix barrier.Wait() still block after barrier.Release()
This commit is contained in:
Benjamin Wang 2023-08-01 17:08:17 +01:00 committed by GitHub
commit 8524903935
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 2 deletions

View File

@ -60,7 +60,7 @@ func (b *Barrier) Wait() error {
_, err = WaitEvents(
b.client,
b.key,
resp.Header.Revision,
[]mvccpb.Event_EventType{mvccpb.PUT, mvccpb.DELETE})
resp.Header.Revision+1,
[]mvccpb.Event_EventType{mvccpb.DELETE})
return err
}

View File

@ -15,6 +15,7 @@
package recipes_test
import (
"context"
"testing"
"time"
@ -46,6 +47,11 @@ func testBarrier(t *testing.T, waiters int, chooseClient func() *clientv3.Client
t.Fatalf("able to double-hold barrier")
}
// put a random key to move the revision forward
if _, err := chooseClient().Put(context.Background(), "x", ""); err != nil {
t.Errorf("could not put x (%v)", err)
}
donec := make(chan struct{})
stopc := make(chan struct{})
defer close(stopc)