У меня есть код вроде:
json_file = Tempfile.new("json_cred_")
json_file.write(auth_json)
json_file.close
return GCE.new(:json_cred => json_file.path, :auth_type => "json",
:avoid_garbage_collection => json_file)
Внутри GCE
методов класса есть код вроде:
if !File.exist?(config[:json_cred])
logger.error "Tempfile deleted: #{config[:avoid_garbage_collection]&.inspect}"
raise
end
Позже во время выполнения примерно в 40% случаев вышеперечисленное не удается. И зарегистрированная ошибка является ожидаемой:
[17:10:44] ERROR> Tempfile deleted: #<Tempfile:/home/jenkins/workspace/Runner-v3/workdir/json_cred_20200801-375-hqhu72 (closed)>
Есть идеи, как это возможно, что временный файл пропадает? Я не вижу другого выхода, кроме как удалить его каким-то внешним процессом. Но также я не вижу такого внешнего процесса, поскольку это система CI на основе контейнера, и внутри нее выполняется только процесс тестирования. Поэтому я спрашиваю, может ли быть какое-нибудь другое объяснение, которое мне не хватает.
Это с ruby 2.6.2p47 (2019-03-13 revision 67232) [x86_64-linux]
.