Skip to content

Commit 9936506

Browse files
committed
Remove panic in storage and add log
Signed-off-by: caohe <[email protected]>
1 parent 0304cda commit 9936506

File tree

1 file changed

+14
-8
lines changed
  • staging/src/k8s.io/apiserver/pkg/storage/etcd3

1 file changed

+14
-8
lines changed

staging/src/k8s.io/apiserver/pkg/storage/etcd3/store.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ func (s *store) Create(ctx context.Context, key string, obj, out runtime.Object,
185185
func (s *store) Delete(ctx context.Context, key string, out runtime.Object, preconditions *storage.Preconditions, validateDeletion storage.ValidateObjectFunc) error {
186186
v, err := conversion.EnforcePtr(out)
187187
if err != nil {
188-
panic("unable to convert output object to pointer")
188+
return fmt.Errorf("unable to convert output object to pointer: %v", err)
189189
}
190190
key = path.Join(s.pathPrefix, key)
191191
return s.conditionalDelete(ctx, key, out, v, preconditions, validateDeletion)
@@ -241,7 +241,7 @@ func (s *store) GuaranteedUpdate(
241241

242242
v, err := conversion.EnforcePtr(out)
243243
if err != nil {
244-
panic("unable to convert output object to pointer")
244+
return fmt.Errorf("unable to convert output object to pointer: %v", err)
245245
}
246246
key = path.Join(s.pathPrefix, key)
247247

@@ -371,7 +371,7 @@ func (s *store) GetToList(ctx context.Context, key string, resourceVersion strin
371371
}
372372
v, err := conversion.EnforcePtr(listPtr)
373373
if err != nil || v.Kind() != reflect.Slice {
374-
panic("need ptr to slice")
374+
return fmt.Errorf("need ptr to slice: %v", err)
375375
}
376376

377377
key = path.Join(s.pathPrefix, key)
@@ -476,7 +476,7 @@ func (s *store) List(ctx context.Context, key, resourceVersion string, pred stor
476476
}
477477
v, err := conversion.EnforcePtr(listPtr)
478478
if err != nil || v.Kind() != reflect.Slice {
479-
panic("need ptr to slice")
479+
return fmt.Errorf("need ptr to slice: %v", err)
480480
}
481481

482482
if s.pathPrefix != "" {
@@ -742,7 +742,9 @@ func (s *store) getStateFromObject(obj runtime.Object) (*objState, error) {
742742
if err != nil {
743743
return nil, err
744744
}
745-
s.versioner.UpdateObject(state.obj, uint64(rv))
745+
if err := s.versioner.UpdateObject(state.obj, uint64(rv)); err != nil {
746+
klog.Errorf("failed to update object version: %v", err)
747+
}
746748
return state, nil
747749
}
748750

@@ -779,14 +781,16 @@ func (s *store) ttlOpts(ctx context.Context, ttl int64) ([]clientv3.OpOption, er
779781
// On success, objPtr would be set to the object.
780782
func decode(codec runtime.Codec, versioner storage.Versioner, value []byte, objPtr runtime.Object, rev int64) error {
781783
if _, err := conversion.EnforcePtr(objPtr); err != nil {
782-
panic("unable to convert output object to pointer")
784+
return fmt.Errorf("unable to convert output object to pointer: %v", err)
783785
}
784786
_, _, err := codec.Decode(value, nil, objPtr)
785787
if err != nil {
786788
return err
787789
}
788790
// being unable to set the version does not prevent the object from being extracted
789-
versioner.UpdateObject(objPtr, uint64(rev))
791+
if err := versioner.UpdateObject(objPtr, uint64(rev)); err != nil {
792+
klog.Errorf("failed to update object version: %v", err)
793+
}
790794
return nil
791795
}
792796

@@ -797,7 +801,9 @@ func appendListItem(v reflect.Value, data []byte, rev uint64, pred storage.Selec
797801
return err
798802
}
799803
// being unable to set the version does not prevent the object from being extracted
800-
versioner.UpdateObject(obj, rev)
804+
if err := versioner.UpdateObject(obj, rev); err != nil {
805+
klog.Errorf("failed to update object version: %v", err)
806+
}
801807
if matched, err := pred.Matches(obj); err == nil && matched {
802808
v.Set(reflect.Append(v, reflect.ValueOf(obj).Elem()))
803809
}

0 commit comments

Comments
 (0)