tests: Fix putWithLease traffic timeout/limit and double overall timeout to reduce number of failed requests

Signed-off-by: Marek Siarkowicz <siarkowicz@google.com>
dependabot/go_modules/go.uber.org/atomic-1.10.0
Marek Siarkowicz 2023-01-12 09:33:31 +01:00
parent 2b45023364
commit bff3d4a592
1 changed files with 14 additions and 8 deletions

View File

@ -27,6 +27,7 @@ import (
var (
DefaultLeaseTTL int64 = 7200
RequestTimeout = 40 * time.Millisecond
DefaultTraffic Traffic = readWriteSingleKey{keyCount: 4, leaseTTL: DefaultLeaseTTL, writes: []opChance{{operation: Put, chance: 50}, {operation: Delete, chance: 10}, {operation: PutWithLease, chance: 10}, {operation: LeaseRevoke, chance: 10}, {operation: Txn, chance: 20}}}
)
@ -65,7 +66,7 @@ func (t readWriteSingleKey) Run(ctx context.Context, c *recordingClient, limiter
}
func (t readWriteSingleKey) Read(ctx context.Context, c *recordingClient, limiter *rate.Limiter, key string) ([]*mvccpb.KeyValue, error) {
getCtx, cancel := context.WithTimeout(ctx, 20*time.Millisecond)
getCtx, cancel := context.WithTimeout(ctx, RequestTimeout)
resp, err := c.Get(getCtx, key)
cancel()
if err == nil {
@ -75,33 +76,38 @@ func (t readWriteSingleKey) Read(ctx context.Context, c *recordingClient, limite
}
func (t readWriteSingleKey) Write(ctx context.Context, c *recordingClient, limiter *rate.Limiter, key string, newValue string, lm clientId2LeaseIdMapper, cid int, lastValues []*mvccpb.KeyValue) error {
putCtx, cancel := context.WithTimeout(ctx, 20*time.Millisecond)
writeCtx, cancel := context.WithTimeout(ctx, RequestTimeout)
var err error
switch t.pickWriteOperation() {
case Put:
err = c.Put(putCtx, key, newValue)
err = c.Put(writeCtx, key, newValue)
case Delete:
err = c.Delete(putCtx, key)
err = c.Delete(writeCtx, key)
case Txn:
var expectValue string
if len(lastValues) != 0 {
expectValue = string(lastValues[0].Value)
}
err = c.Txn(putCtx, key, expectValue, newValue)
err = c.Txn(writeCtx, key, expectValue, newValue)
case PutWithLease:
leaseId := lm.LeaseId(cid)
if leaseId == 0 {
leaseId, err = c.LeaseGrant(ctx, t.leaseTTL)
lm.AddLeaseId(cid, leaseId)
leaseId, err = c.LeaseGrant(writeCtx, t.leaseTTL)
if err == nil {
lm.AddLeaseId(cid, leaseId)
limiter.Wait(ctx)
}
}
if leaseId != 0 {
putCtx, putCancel := context.WithTimeout(ctx, RequestTimeout)
err = c.PutWithLease(putCtx, key, newValue, leaseId)
putCancel()
}
case LeaseRevoke:
leaseId := lm.LeaseId(cid)
if leaseId != 0 {
err = c.LeaseRevoke(putCtx, leaseId)
err = c.LeaseRevoke(writeCtx, leaseId)
//if LeaseRevoke has failed, do not remove the mapping.
if err == nil {
lm.RemoveLeaseId(cid)