|
|
@@ -84,6 +84,8 @@ type Authenticator interface {
|
|
|
}
|
|
|
|
|
|
func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error) {
|
|
|
+ defer warnOfExpensiveReadOnlyRangeRequest(time.Now(), r)
|
|
|
+
|
|
|
if !r.Serializable {
|
|
|
err := s.linearizableReadNotify(ctx)
|
|
|
if err != nil {
|
|
|
@@ -95,6 +97,7 @@ func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRe
|
|
|
chk := func(ai *auth.AuthInfo) error {
|
|
|
return s.authStore.IsRangePermitted(ai, r.Key, r.RangeEnd)
|
|
|
}
|
|
|
+
|
|
|
get := func() { resp, err = s.applyV3Base.Range(nil, r) }
|
|
|
if serr := s.doSerialize(ctx, chk, get); serr != nil {
|
|
|
return nil, serr
|
|
|
@@ -131,12 +134,16 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse
|
|
|
chk := func(ai *auth.AuthInfo) error {
|
|
|
return checkTxnAuth(s.authStore, ai, r)
|
|
|
}
|
|
|
+
|
|
|
+ defer warnOfExpensiveReadOnlyRangeRequest(time.Now(), r)
|
|
|
+
|
|
|
get := func() { resp, err = s.applyV3Base.Txn(r) }
|
|
|
if serr := s.doSerialize(ctx, chk, get); serr != nil {
|
|
|
return nil, serr
|
|
|
}
|
|
|
return resp, err
|
|
|
}
|
|
|
+
|
|
|
resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{Txn: r})
|
|
|
if err != nil {
|
|
|
return nil, err
|