mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-03 17:30:00 +00:00
Merge pull request #103232 from astraw99/fix_delete_nil_pointer
Fix delete nil pointer panic
This commit is contained in:
commit
20be00980c
@ -58,6 +58,8 @@ type GarbageCollectionDeleteStrategy interface {
|
|||||||
type RESTGracefulDeleteStrategy interface {
|
type RESTGracefulDeleteStrategy interface {
|
||||||
// CheckGracefulDelete should return true if the object can be gracefully deleted and set
|
// CheckGracefulDelete should return true if the object can be gracefully deleted and set
|
||||||
// any default values on the DeleteOptions.
|
// any default values on the DeleteOptions.
|
||||||
|
// NOTE: if return true, `options.GracePeriodSeconds` must be non-nil (nil will fail),
|
||||||
|
// that's what tells the deletion how "graceful" to be.
|
||||||
CheckGracefulDelete(ctx context.Context, obj runtime.Object, options *metav1.DeleteOptions) bool
|
CheckGracefulDelete(ctx context.Context, obj runtime.Object, options *metav1.DeleteOptions) bool
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,9 +138,15 @@ func BeforeDelete(strategy RESTDeleteStrategy, ctx context.Context, obj runtime.
|
|||||||
return false, true, nil
|
return false, true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// `CheckGracefulDelete` will be implemented by specific strategy
|
||||||
if !gracefulStrategy.CheckGracefulDelete(ctx, obj, options) {
|
if !gracefulStrategy.CheckGracefulDelete(ctx, obj, options) {
|
||||||
return false, false, nil
|
return false, false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if options.GracePeriodSeconds == nil {
|
||||||
|
return false, false, errors.NewInternalError(fmt.Errorf("options.GracePeriodSeconds should not be nil"))
|
||||||
|
}
|
||||||
|
|
||||||
now := metav1.NewTime(metav1.Now().Add(time.Second * time.Duration(*options.GracePeriodSeconds)))
|
now := metav1.NewTime(metav1.Now().Add(time.Second * time.Duration(*options.GracePeriodSeconds)))
|
||||||
objectMeta.SetDeletionTimestamp(&now)
|
objectMeta.SetDeletionTimestamp(&now)
|
||||||
objectMeta.SetDeletionGracePeriodSeconds(options.GracePeriodSeconds)
|
objectMeta.SetDeletionGracePeriodSeconds(options.GracePeriodSeconds)
|
||||||
@ -149,6 +157,7 @@ func BeforeDelete(strategy RESTDeleteStrategy, ctx context.Context, obj runtime.
|
|||||||
if objectMeta.GetGeneration() > 0 {
|
if objectMeta.GetGeneration() > 0 {
|
||||||
objectMeta.SetGeneration(objectMeta.GetGeneration() + 1)
|
objectMeta.SetGeneration(objectMeta.GetGeneration() + 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
return true, false, nil
|
return true, false, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user