skip update when deleting with grace-period=0

This commit is contained in:
Chao Xu 2016-01-26 23:08:50 -08:00
parent 635cf5877f
commit fdf6a0f61c
3 changed files with 9 additions and 4 deletions

View File

@ -673,7 +673,8 @@ func (t *Tester) testDeleteGracefulImmediate(obj runtime.Object, setFn SetFunc,
t.Errorf("unexpected error, object should be deleted immediately: %v", err) t.Errorf("unexpected error, object should be deleted immediately: %v", err)
} }
objectMeta = t.getObjectMetaOrFail(out) objectMeta = t.getObjectMetaOrFail(out)
if objectMeta.DeletionTimestamp == nil || objectMeta.DeletionGracePeriodSeconds == nil || *objectMeta.DeletionGracePeriodSeconds != 0 { // the second delete shouldn't update the object, so the objectMeta.DeletionGracePeriodSeconds should eqaul to the value set in the first delete.
if objectMeta.DeletionTimestamp == nil || objectMeta.DeletionGracePeriodSeconds == nil || *objectMeta.DeletionGracePeriodSeconds != expectedGrace {
t.Errorf("unexpected deleted meta: %#v", objectMeta) t.Errorf("unexpected deleted meta: %#v", objectMeta)
} }
} }

View File

@ -387,7 +387,7 @@ func (e *Etcd) Delete(ctx api.Context, name string, options *api.DeleteOptions)
if pendingGraceful { if pendingGraceful {
return e.finalizeDelete(obj, false) return e.finalizeDelete(obj, false)
} }
if graceful { if graceful && *options.GracePeriodSeconds > 0 {
out := e.NewFunc() out := e.NewFunc()
lastGraceful := int64(0) lastGraceful := int64(0)
err := e.Storage.GuaranteedUpdate( err := e.Storage.GuaranteedUpdate(

View File

@ -343,8 +343,12 @@ var _ = Describe("Pods", func() {
Fail("Timeout while waiting for pod creation") Fail("Timeout while waiting for pod creation")
} }
// We need to wait for the pod to be scheduled, otherwise the deletion
// will be carried out immediately rather than gracefully.
expectNoError(framework.WaitForPodRunning(pod.Name))
By("deleting the pod gracefully") By("deleting the pod gracefully")
if err := podClient.Delete(pod.Name, nil); err != nil { if err := podClient.Delete(pod.Name, api.NewDeleteOptions(30)); err != nil {
Failf("Failed to delete pod: %v", err) Failf("Failed to delete pod: %v", err)
} }
@ -352,7 +356,7 @@ var _ = Describe("Pods", func() {
deleted := false deleted := false
timeout := false timeout := false
var lastPod *api.Pod var lastPod *api.Pod
timer := time.After(podStartTimeout) timer := time.After(30 * time.Second)
for !deleted && !timeout { for !deleted && !timeout {
select { select {
case event, _ := <-w.ResultChan(): case event, _ := <-w.ResultChan():