From 928f83960ed68abf21f93f1adc59e7363a5f0c13 Mon Sep 17 00:00:00 2001 From: vikaschoudhary16 Date: Sat, 21 Apr 2018 05:23:04 -0400 Subject: [PATCH] Fix dockershim e2e --- pkg/kubelet/dockershim/BUILD | 1 + pkg/kubelet/dockershim/docker_sandbox.go | 13 +++++++++++++ 2 files changed, 14 insertions(+) diff --git a/pkg/kubelet/dockershim/BUILD b/pkg/kubelet/dockershim/BUILD index ea7f430fdf5..1036111007d 100644 --- a/pkg/kubelet/dockershim/BUILD +++ b/pkg/kubelet/dockershim/BUILD @@ -84,6 +84,7 @@ go_library( "//pkg/kubelet/apis/kubeletconfig:go_default_library", "//pkg/kubelet/checkpointmanager:go_default_library", "//pkg/kubelet/checkpointmanager/checksum:go_default_library", + "//pkg/kubelet/checkpointmanager/errors:go_default_library", "//pkg/kubelet/cm:go_default_library", "//pkg/kubelet/container:go_default_library", "//pkg/kubelet/dockershim/cm:go_default_library", diff --git a/pkg/kubelet/dockershim/docker_sandbox.go b/pkg/kubelet/dockershim/docker_sandbox.go index a9bd36789b4..8386d629fed 100644 --- a/pkg/kubelet/dockershim/docker_sandbox.go +++ b/pkg/kubelet/dockershim/docker_sandbox.go @@ -31,6 +31,7 @@ import ( utilerrors "k8s.io/apimachinery/pkg/util/errors" runtimeapi "k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2" "k8s.io/kubernetes/pkg/kubelet/checkpointmanager" + "k8s.io/kubernetes/pkg/kubelet/checkpointmanager/errors" kubecontainer "k8s.io/kubernetes/pkg/kubelet/container" "k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker" "k8s.io/kubernetes/pkg/kubelet/qos" @@ -197,6 +198,12 @@ func (ds *dockerService) StopPodSandbox(ctx context.Context, r *runtimeapi.StopP // actions will only have sandbox ID and not have pod namespace and name information. // Return error if encounter any unexpected error. if checkpointErr != nil { + if checkpointErr != errors.ErrCheckpointNotFound { + err := ds.checkpointManager.RemoveCheckpoint(podSandboxID) + if err != nil { + glog.Errorf("Failed to delete corrupt checkpoint for sandbox %q: %v", podSandboxID, err) + } + } if libdocker.IsContainerNotFoundError(statusErr) { glog.Warningf("Both sandbox container and checkpoint for id %q could not be found. "+ "Proceed without further sandbox information.", podSandboxID) @@ -505,6 +512,12 @@ func (ds *dockerService) ListPodSandbox(_ context.Context, r *runtimeapi.ListPod err := ds.checkpointManager.GetCheckpoint(id, checkpoint) if err != nil { glog.Errorf("Failed to retrieve checkpoint for sandbox %q: %v", id, err) + if err == errors.ErrCorruptCheckpoint { + err = ds.checkpointManager.RemoveCheckpoint(id) + if err != nil { + glog.Errorf("Failed to delete corrupt checkpoint for sandbox %q: %v", id, err) + } + } continue } result = append(result, checkpointToRuntimeAPISandbox(id, checkpoint))