mirror of
https://github.com/etcd-io/etcd.git
synced 2024-09-27 06:25:44 +00:00
functional-tester/tester: use clientv3.Client for consistency checks
Signed-off-by: Gyuho Lee <gyuhox@gmail.com>
This commit is contained in:
parent
5423100def
commit
7cc0d689b8
@ -21,7 +21,6 @@ import (
|
||||
|
||||
"github.com/coreos/etcd/clientv3"
|
||||
"github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes"
|
||||
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
|
||||
"github.com/coreos/etcd/tools/functional-tester/rpcpb"
|
||||
|
||||
"go.uber.org/zap"
|
||||
@ -101,22 +100,19 @@ type leaseChecker struct {
|
||||
lg *zap.Logger
|
||||
m *rpcpb.Member
|
||||
ls *leaseStresser
|
||||
lsc pb.LeaseClient
|
||||
kvc pb.KVClient
|
||||
cli *clientv3.Client
|
||||
}
|
||||
|
||||
func (lc *leaseChecker) Check() error {
|
||||
conn, err := lc.m.DialEtcdGRPCServer(grpc.WithBackoffMaxDelay(time.Second))
|
||||
cli, err := lc.m.CreateEtcdClient(grpc.WithBackoffMaxDelay(time.Second))
|
||||
if err != nil {
|
||||
return fmt.Errorf("%v (%q)", err, lc.m.EtcdClientEndpoint)
|
||||
}
|
||||
defer func() {
|
||||
if conn != nil {
|
||||
conn.Close()
|
||||
if cli != nil {
|
||||
cli.Close()
|
||||
}
|
||||
}()
|
||||
lc.kvc = pb.NewKVClient(conn)
|
||||
lc.lsc = pb.NewLeaseClient(conn)
|
||||
if err := lc.check(true, lc.ls.revokedLeases.leases); err != nil {
|
||||
return err
|
||||
}
|
||||
@ -148,7 +144,7 @@ func (lc *leaseChecker) checkShortLivedLeases() error {
|
||||
|
||||
func (lc *leaseChecker) checkShortLivedLease(ctx context.Context, leaseID int64) (err error) {
|
||||
// retry in case of transient failure or lease is expired but not yet revoked due to the fact that etcd cluster didn't have enought time to delete it.
|
||||
var resp *pb.LeaseTimeToLiveResponse
|
||||
var resp *clientv3.LeaseTimeToLiveResponse
|
||||
for i := 0; i < retries; i++ {
|
||||
resp, err = lc.getLeaseByID(ctx, leaseID)
|
||||
// lease not found, for ~v3.1 compatibilities, check ErrLeaseNotFound
|
||||
@ -230,9 +226,13 @@ func (lc *leaseChecker) check(expired bool, leases map[int64]time.Time) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (lc *leaseChecker) getLeaseByID(ctx context.Context, leaseID int64) (*pb.LeaseTimeToLiveResponse, error) {
|
||||
ltl := &pb.LeaseTimeToLiveRequest{ID: leaseID, Keys: true}
|
||||
return lc.lsc.LeaseTimeToLive(ctx, ltl, grpc.FailFast(false))
|
||||
// TODO: handle failures from "grpc.FailFast(false)"
|
||||
func (lc *leaseChecker) getLeaseByID(ctx context.Context, leaseID int64) (*clientv3.LeaseTimeToLiveResponse, error) {
|
||||
return lc.cli.TimeToLive(
|
||||
ctx,
|
||||
clientv3.LeaseID(leaseID),
|
||||
clientv3.WithAttachedKeys(),
|
||||
)
|
||||
}
|
||||
|
||||
func (lc *leaseChecker) hasLeaseExpired(ctx context.Context, leaseID int64) (bool, error) {
|
||||
@ -261,10 +261,7 @@ func (lc *leaseChecker) hasLeaseExpired(ctx context.Context, leaseID int64) (boo
|
||||
// Since the format of keys contains about leaseID, finding keys base on "<leaseID>" prefix
|
||||
// determines whether the attached keys for a given leaseID has been deleted or not
|
||||
func (lc *leaseChecker) hasKeysAttachedToLeaseExpired(ctx context.Context, leaseID int64) (bool, error) {
|
||||
resp, err := lc.kvc.Range(ctx, &pb.RangeRequest{
|
||||
Key: []byte(fmt.Sprintf("%d", leaseID)),
|
||||
RangeEnd: []byte(clientv3.GetPrefixRangeEnd(fmt.Sprintf("%d", leaseID))),
|
||||
}, grpc.FailFast(false))
|
||||
resp, err := lc.cli.Get(ctx, fmt.Sprintf("%d", leaseID), clientv3.WithPrefix())
|
||||
if err != nil {
|
||||
lc.lg.Warn(
|
||||
"hasKeysAttachedToLeaseExpired failed",
|
||||
|
Loading…
x
Reference in New Issue
Block a user