From 9f81cf096bfa56d22d345ff2f97473e03bc354d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Cruz?= Date: Tue, 18 Jul 2017 12:06:31 +0100 Subject: [PATCH 1/2] Make sure the previous symlink file is deleted before trying to create a new one. --- pkg/kubelet/dockershim/docker_container.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/kubelet/dockershim/docker_container.go b/pkg/kubelet/dockershim/docker_container.go index f3b481fc30e..8fc336cf2e0 100644 --- a/pkg/kubelet/dockershim/docker_container.go +++ b/pkg/kubelet/dockershim/docker_container.go @@ -227,6 +227,10 @@ func (ds *dockerService) createContainerLogSymlink(containerID string) error { if realPath != "" { // Only create the symlink when container log path is specified and log file exists. + // Delete possibly existing file first + if err = ds.os.Remove(path); err == nil { + glog.Warningf("Deleted previously existing symlink file: %q", path) + } if err = ds.os.Symlink(realPath, path); err != nil { return fmt.Errorf("failed to create symbolic link %q to the container log file %q for container %q: %v", path, realPath, containerID, err) From 89012ccb2396b1c9f2444b172786d494bebab73e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Cruz?= Date: Wed, 19 Jul 2017 17:14:35 +0100 Subject: [PATCH 2/2] Fix test --- pkg/kubelet/dockershim/docker_container_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/kubelet/dockershim/docker_container_test.go b/pkg/kubelet/dockershim/docker_container_test.go index ee737b7d692..92a46bdc30c 100644 --- a/pkg/kubelet/dockershim/docker_container_test.go +++ b/pkg/kubelet/dockershim/docker_container_test.go @@ -218,9 +218,10 @@ func TestContainerLogPath(t *testing.T) { assert.NoError(t, err) // Verify container log symlink deletion + // symlink is also tentatively deleted at startup err = ds.RemoveContainer(id) assert.NoError(t, err) - assert.Equal(t, fakeOS.Removes, []string{kubeletContainerLogPath}) + assert.Equal(t, []string{kubeletContainerLogPath, kubeletContainerLogPath}, fakeOS.Removes) } // TestContainerCreationConflict tests the logic to work around docker container