diff options
author | Sami Hiltunen <shiltunen@gitlab.com> | 2022-07-19 16:20:22 +0300 |
---|---|---|
committer | Sami Hiltunen <shiltunen@gitlab.com> | 2022-07-19 16:20:22 +0300 |
commit | ca638e23ca921cf2f2f3cdc8a6ff033af667170b (patch) | |
tree | 36185ef9cfe520bf11eb859f353abdc58cf1ba54 | |
parent | 7f26e592e0e9b69aeb9d71400b424a5b41458ec3 (diff) | |
parent | b32f0ad8f66f42057dabfac127e3d1ca75cda7e7 (diff) |
Merge branch 'wc-prune-reused-pid' into 'master'
config: Don't treat EPERM as error when signalling
Closes #4355
See merge request gitlab-org/gitaly!4716
-rw-r--r-- | internal/gitaly/config/config.go | 4 | ||||
-rw-r--r-- | internal/gitaly/config/config_test.go | 6 |
2 files changed, 9 insertions, 1 deletions
diff --git a/internal/gitaly/config/config.go b/internal/gitaly/config/config.go index 460c6114a..0e458b0ba 100644 --- a/internal/gitaly/config/config.go +++ b/internal/gitaly/config/config.go @@ -586,7 +586,9 @@ func PruneRuntimeDirectories(log log.FieldLogger, runtimeDir string) error { }() if err := process.Signal(syscall.Signal(0)); err != nil { - if !errors.Is(err, os.ErrProcessDone) { + // Either the process does not exist, or the pid has been re-used by for a + // process owned by another user and is not a Gitaly process. + if !errors.Is(err, os.ErrProcessDone) && !errors.Is(err, syscall.EPERM) { return fmt.Errorf("signal: %w", err) } diff --git a/internal/gitaly/config/config_test.go b/internal/gitaly/config/config_test.go index a1ab0fa56..47c1542e2 100644 --- a/internal/gitaly/config/config_test.go +++ b/internal/gitaly/config/config_test.go @@ -1338,6 +1338,12 @@ func TestPruneRuntimeDirectories(t *testing.T) { expectedLogs[staleRuntimeDir] = "removing leftover runtime directory" } + // Setup runtime directory with pid of process not owned by git user + rootRuntimeDir, err := SetupRuntimeDirectory(cfg, 1) + require.NoError(t, err) + expectedLogs[rootRuntimeDir] = "removing leftover runtime directory" + prunableDirs = append(prunableDirs, rootRuntimeDir) + // Create an unexpected file in the runtime directory unexpectedFilePath := filepath.Join(baseDir, "unexpected-file") require.NoError(t, os.WriteFile(unexpectedFilePath, []byte(""), os.ModePerm)) |