Merge pull request #15401 from tjungblu/racefix_15352

Fixing flaky TestLeasingDeleteRangeContendTxn
This commit is contained in:
Marek Siarkowicz 2023-03-03 12:23:25 +01:00 committed by GitHub
commit 85bd9d7719
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -16,6 +16,7 @@ package lease_test
import ( import (
"context" "context"
"errors"
"fmt" "fmt"
"math/rand" "math/rand"
"reflect" "reflect"
@ -1270,7 +1271,8 @@ func testLeasingDeleteRangeContend(t *testing.T, op clientv3.Op) {
testutil.AssertNil(t, err) testutil.AssertNil(t, err)
defer closePutKV() defer closePutKV()
for i := 0; i < 8; i++ { const maxKey = 8
for i := 0; i < maxKey; i++ {
key := fmt.Sprintf("key/%d", i) key := fmt.Sprintf("key/%d", i)
if _, err = clus.Client(0).Put(context.TODO(), key, "123"); err != nil { if _, err = clus.Client(0).Put(context.TODO(), key, "123"); err != nil {
t.Fatal(err) t.Fatal(err)
@ -1282,14 +1284,17 @@ func testLeasingDeleteRangeContend(t *testing.T, op clientv3.Op) {
ctx, cancel := context.WithCancel(context.TODO()) ctx, cancel := context.WithCancel(context.TODO())
donec := make(chan struct{}) donec := make(chan struct{})
go func() { go func(t *testing.T) {
defer close(donec) defer close(donec)
for i := 0; ctx.Err() == nil; i++ { for i := 0; (i < maxKey) && (ctx.Err() == nil); i++ {
key := fmt.Sprintf("key/%d", i%8) key := fmt.Sprintf("key/%d", i%8)
putkv.Put(ctx, key, "123") if _, err = putkv.Put(ctx, key, "123"); err != nil {
putkv.Get(ctx, key) if !errors.Is(err, context.Canceled) {
t.Errorf("fail putting key %s, err was: %v", key, err)
}
}
} }
}() }(t)
_, delErr := delkv.Do(context.TODO(), op) _, delErr := delkv.Do(context.TODO(), op)
cancel() cancel()
@ -1299,7 +1304,7 @@ func testLeasingDeleteRangeContend(t *testing.T, op clientv3.Op) {
} }
// confirm keys on non-deleter match etcd // confirm keys on non-deleter match etcd
for i := 0; i < 8; i++ { for i := 0; i < maxKey; i++ {
key := fmt.Sprintf("key/%d", i) key := fmt.Sprintf("key/%d", i)
resp, err := putkv.Get(context.TODO(), key) resp, err := putkv.Get(context.TODO(), key)
if err != nil { if err != nil {