From b41070ac5f6428879a70628e9002a8db0d1ec335 Mon Sep 17 00:00:00 2001 From: Dmitry Meyer Date: Wed, 18 Feb 2026 14:21:53 +0000 Subject: [PATCH] [runner] Check if repo dir exists before chown The check is added to avoid the following log message when no repo specified or the repo is empty: > Error while walking repo dir path=/workflow err=lstat /workflow: > no such file or directory In addition, walk/chown errors log level is changed to warning to highlight possible issues. --- runner/internal/executor/repo.go | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/runner/internal/executor/repo.go b/runner/internal/executor/repo.go index 467c783a8..dd16092be 100644 --- a/runner/internal/executor/repo.go +++ b/runner/internal/executor/repo.go @@ -236,16 +236,25 @@ func (ex *RunExecutor) restoreRepoDir(ctx context.Context, tmpDir string) error func (ex *RunExecutor) chownRepoDir(ctx context.Context) error { log.Trace(ctx, "Chowning repo dir") + exists, err := common.PathExists(ex.repoDir) + // We consider all errors here non-fatal + if err != nil { + log.Warning(ctx, "Failed to check if repo dir exists", "err", err) + return nil + } + if !exists { + log.Trace(ctx, "Repo dir does not exist") + return nil + } return filepath.WalkDir( ex.repoDir, func(p string, d fs.DirEntry, err error) error { - // We consider walk/chown errors non-fatal if err != nil { - log.Debug(ctx, "Error while walking repo dir", "path", p, "err", err) + log.Warning(ctx, "Error while walking repo dir", "path", p, "err", err) return nil } if err := os.Chown(p, ex.jobUser.Uid, ex.jobUser.Gid); err != nil { - log.Debug(ctx, "Error while chowning repo dir", "path", p, "err", err) + log.Warning(ctx, "Error while chowning repo dir", "path", p, "err", err) } return nil },