mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-10 12:32:03 +00:00
k8s.io/apiserver/storage/etcd: refactor getCurrentState.
Extract getCurrentState as a separate method that can be reused. Signed-off-by: Siyuan Zhang <sizhang@google.com>
This commit is contained in:
parent
338c3a0fc7
commit
ebca5d438d
@ -272,15 +272,7 @@ func (s *store) Delete(
|
|||||||
func (s *store) conditionalDelete(
|
func (s *store) conditionalDelete(
|
||||||
ctx context.Context, key string, out runtime.Object, v reflect.Value, preconditions *storage.Preconditions,
|
ctx context.Context, key string, out runtime.Object, v reflect.Value, preconditions *storage.Preconditions,
|
||||||
validateDeletion storage.ValidateObjectFunc, cachedExistingObject runtime.Object) error {
|
validateDeletion storage.ValidateObjectFunc, cachedExistingObject runtime.Object) error {
|
||||||
getCurrentState := func() (*objState, error) {
|
getCurrentState := s.getCurrentState(ctx, key, v, false)
|
||||||
startTime := time.Now()
|
|
||||||
getResp, err := s.client.KV.Get(ctx, key)
|
|
||||||
metrics.RecordEtcdRequest("get", s.groupResourceString, err, startTime)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return s.getState(ctx, getResp, key, v, false)
|
|
||||||
}
|
|
||||||
|
|
||||||
var origState *objState
|
var origState *objState
|
||||||
var err error
|
var err error
|
||||||
@ -408,15 +400,7 @@ func (s *store) GuaranteedUpdate(
|
|||||||
return fmt.Errorf("unable to convert output object to pointer: %v", err)
|
return fmt.Errorf("unable to convert output object to pointer: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
getCurrentState := func() (*objState, error) {
|
getCurrentState := s.getCurrentState(ctx, preparedKey, v, ignoreNotFound)
|
||||||
startTime := time.Now()
|
|
||||||
getResp, err := s.client.KV.Get(ctx, preparedKey)
|
|
||||||
metrics.RecordEtcdRequest("get", s.groupResourceString, err, startTime)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return s.getState(ctx, getResp, preparedKey, v, ignoreNotFound)
|
|
||||||
}
|
|
||||||
|
|
||||||
var origState *objState
|
var origState *objState
|
||||||
var origStateIsCurrent bool
|
var origStateIsCurrent bool
|
||||||
@ -879,6 +863,18 @@ func (s *store) watchContext(ctx context.Context) context.Context {
|
|||||||
return clientv3.WithRequireLeader(ctx)
|
return clientv3.WithRequireLeader(ctx)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *store) getCurrentState(ctx context.Context, key string, v reflect.Value, ignoreNotFound bool) func() (*objState, error) {
|
||||||
|
return func() (*objState, error) {
|
||||||
|
startTime := time.Now()
|
||||||
|
getResp, err := s.client.KV.Get(ctx, key)
|
||||||
|
metrics.RecordEtcdRequest("get", s.groupResourceString, err, startTime)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return s.getState(ctx, getResp, key, v, ignoreNotFound)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (s *store) getState(ctx context.Context, getResp *clientv3.GetResponse, key string, v reflect.Value, ignoreNotFound bool) (*objState, error) {
|
func (s *store) getState(ctx context.Context, getResp *clientv3.GetResponse, key string, v reflect.Value, ignoreNotFound bool) (*objState, error) {
|
||||||
state := &objState{
|
state := &objState{
|
||||||
meta: &storage.ResponseMeta{},
|
meta: &storage.ResponseMeta{},
|
||||||
|
Loading…
Reference in New Issue
Block a user