diff --git a/client/v3/experimental/recipes/barrier.go b/client/v3/experimental/recipes/barrier.go index ce88e4ff8..daf4abefb 100644 --- a/client/v3/experimental/recipes/barrier.go +++ b/client/v3/experimental/recipes/barrier.go @@ -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 } diff --git a/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go b/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go index 9d4ba9249..3b64388ee 100644 --- a/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go +++ b/tests/integration/clientv3/experimental/recipes/v3_barrier_test.go @@ -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)