Remove panic in storage and add log

Signed-off-by: caohe <caohe9603@gmail.com>
This commit is contained in:
caohe 2019-07-06 17:01:20 +08:00
parent 0304cda3e3
commit 99365063ba

View File

@ -185,7 +185,7 @@ func (s *store) Create(ctx context.Context, key string, obj, out runtime.Object,
func (s *store) Delete(ctx context.Context, key string, out runtime.Object, preconditions *storage.Preconditions, validateDeletion storage.ValidateObjectFunc) error {
v, err := conversion.EnforcePtr(out)
if err != nil {
panic("unable to convert output object to pointer")
return fmt.Errorf("unable to convert output object to pointer: %v", err)
}
key = path.Join(s.pathPrefix, key)
return s.conditionalDelete(ctx, key, out, v, preconditions, validateDeletion)
@ -241,7 +241,7 @@ func (s *store) GuaranteedUpdate(
v, err := conversion.EnforcePtr(out)
if err != nil {
panic("unable to convert output object to pointer")
return fmt.Errorf("unable to convert output object to pointer: %v", err)
}
key = path.Join(s.pathPrefix, key)
@ -371,7 +371,7 @@ func (s *store) GetToList(ctx context.Context, key string, resourceVersion strin
}
v, err := conversion.EnforcePtr(listPtr)
if err != nil || v.Kind() != reflect.Slice {
panic("need ptr to slice")
return fmt.Errorf("need ptr to slice: %v", err)
}
key = path.Join(s.pathPrefix, key)
@ -476,7 +476,7 @@ func (s *store) List(ctx context.Context, key, resourceVersion string, pred stor
}
v, err := conversion.EnforcePtr(listPtr)
if err != nil || v.Kind() != reflect.Slice {
panic("need ptr to slice")
return fmt.Errorf("need ptr to slice: %v", err)
}
if s.pathPrefix != "" {
@ -742,7 +742,9 @@ func (s *store) getStateFromObject(obj runtime.Object) (*objState, error) {
if err != nil {
return nil, err
}
s.versioner.UpdateObject(state.obj, uint64(rv))
if err := s.versioner.UpdateObject(state.obj, uint64(rv)); err != nil {
klog.Errorf("failed to update object version: %v", err)
}
return state, nil
}
@ -779,14 +781,16 @@ func (s *store) ttlOpts(ctx context.Context, ttl int64) ([]clientv3.OpOption, er
// On success, objPtr would be set to the object.
func decode(codec runtime.Codec, versioner storage.Versioner, value []byte, objPtr runtime.Object, rev int64) error {
if _, err := conversion.EnforcePtr(objPtr); err != nil {
panic("unable to convert output object to pointer")
return fmt.Errorf("unable to convert output object to pointer: %v", err)
}
_, _, err := codec.Decode(value, nil, objPtr)
if err != nil {
return err
}
// being unable to set the version does not prevent the object from being extracted
versioner.UpdateObject(objPtr, uint64(rev))
if err := versioner.UpdateObject(objPtr, uint64(rev)); err != nil {
klog.Errorf("failed to update object version: %v", err)
}
return nil
}
@ -797,7 +801,9 @@ func appendListItem(v reflect.Value, data []byte, rev uint64, pred storage.Selec
return err
}
// being unable to set the version does not prevent the object from being extracted
versioner.UpdateObject(obj, rev)
if err := versioner.UpdateObject(obj, rev); err != nil {
klog.Errorf("failed to update object version: %v", err)
}
if matched, err := pred.Matches(obj); err == nil && matched {
v.Set(reflect.Append(v, reflect.ValueOf(obj).Elem()))
}