From 9be17322961775ce9ae4aad8cece6db672f059ce Mon Sep 17 00:00:00 2001 From: Pawel Chojnacki Date: Thu, 27 Jul 2017 15:44:13 +0200 Subject: [PATCH] add comment explaining use of shell commands and file operations in the same methods --- lib/gitlab/health_checks/fs_shards_check.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/gitlab/health_checks/fs_shards_check.rb b/lib/gitlab/health_checks/fs_shards_check.rb index a4740e9e9b7..9e91c135956 100644 --- a/lib/gitlab/health_checks/fs_shards_check.rb +++ b/lib/gitlab/health_checks/fs_shards_check.rb @@ -77,6 +77,13 @@ module Gitlab storages_paths&.dig(storage_name, 'path') end + # All below test methods use shell commands to perform actions on storage volumes. + # In case a storage volume have connectivity problems causing pure Ruby IO operation to wait indefinitely, + # we can rely on shell commands to be terminated once `timeout` kills them. + # + # However we also fallback to pure Ruby file operations in case a specific shell command is missing + # so we are still able to perform healthchecks and gather metrics from such system. + def delete_test_file(tmp_path) _, status = exec_with_timeout(%W{ rm -f #{tmp_path} }) status.zero?