From 84625321085d9c1b1529f8bde18dd578fe1915e2 Mon Sep 17 00:00:00 2001 From: quzard <1191890118@qq.com> Date: Tue, 28 Nov 2023 10:27:54 +0800 Subject: [PATCH] fix dockerContainer nil (#1247) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix nil * 重试机制 * fix * add retryTimes * logger Container Info * Container Info --- pkg/helper/docker_center.go | 22 +++++++++++++++------- pkg/helper/docker_cri_adapter.go | 10 +++++++--- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/pkg/helper/docker_center.go b/pkg/helper/docker_center.go index 42af3ddd8b..8463713db2 100644 --- a/pkg/helper/docker_center.go +++ b/pkg/helper/docker_center.go @@ -625,13 +625,21 @@ func getDockerCenterInstance() *DockerCenter { dockerCenterInstance.imageCache = make(map[string]string) dockerCenterInstance.containerMap = make(map[string]*DockerInfoDetail) if IsCRIRuntimeValid(containerdUnixSocket) { - var err error - criRuntimeWrapper, err = NewCRIRuntimeWrapper(dockerCenterInstance) - if err != nil { - logger.Errorf(context.Background(), "DOCKER_CENTER_ALARM", "[CRIRuntime] creare cri-runtime client error: %v", err) - criRuntimeWrapper = nil - } else { - logger.Infof(context.Background(), "[CRIRuntime] create cri-runtime client successfully") + retryTimes := 10 + for i := 0; i < retryTimes; i++ { + var err error + criRuntimeWrapper, err = NewCRIRuntimeWrapper(dockerCenterInstance) + if err != nil { + logger.Errorf(context.Background(), "DOCKER_CENTER_ALARM", "[CRIRuntime] creare cri-runtime client error: %v", err) + criRuntimeWrapper = nil + } else { + logger.Infof(context.Background(), "[CRIRuntime] create cri-runtime client successfully") + break + } + time.Sleep(time.Second * 1) + if i == retryTimes-1 { + logger.Error(context.Background(), "DOCKER_CENTER_ALARM", "[CRIRuntime] create cri-runtime client failed") + } } } if ok, err := util.PathExists(DefaultLogtailMountPath); err == nil { diff --git a/pkg/helper/docker_cri_adapter.go b/pkg/helper/docker_cri_adapter.go index f632fab3a4..c4833328d5 100644 --- a/pkg/helper/docker_cri_adapter.go +++ b/pkg/helper/docker_cri_adapter.go @@ -405,11 +405,15 @@ func (cw *CRIRuntimeWrapper) fetchAll() error { } dockerContainer, _, _, err := cw.createContainerInfo(c.GetId()) - if dockerContainer.Status() != ContainerStatusRunning { + if err != nil { + logger.Errorf(context.Background(), "CREATE_CONTAINERD_INFO_ALARM", "Create container info from cri-runtime error, Container Info: %+v, err: %v", c, err) continue } - if err != nil { - logger.Debug(context.Background(), "Create container info from cri-runtime error", err) + if dockerContainer == nil || dockerContainer.ContainerInfo.ContainerJSONBase == nil { + logger.Error(context.Background(), "CREATE_CONTAINERD_INFO_ALARM", "Create container info from cri-runtime error, Container Info:%+v", c) + continue + } + if dockerContainer.Status() != ContainerStatusRunning { continue } cw.containers[c.GetId()] = &innerContainerInfo{