From 31d52d24834ceac6b04df54db14108ddbcb8bc70 Mon Sep 17 00:00:00 2001 From: simon lehericey Date: Thu, 17 Mar 2022 22:33:38 +0100 Subject: [PATCH] do not open all fd at once --- app/lib/download_manager/parallel_download_queue.rb | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/app/lib/download_manager/parallel_download_queue.rb b/app/lib/download_manager/parallel_download_queue.rb index f7c693200..724821606 100644 --- a/app/lib/download_manager/parallel_download_queue.rb +++ b/app/lib/download_manager/parallel_download_queue.rb @@ -26,7 +26,6 @@ module DownloadManager hydra.run end - # rubocop:disable Style/AutoResourceCleanup # can't be used with typhoeus, otherwise block is closed before the request is run by hydra def download_one(attachment:, path_in_download_dir:, http_client:) attachment_path = File.join(destination, path_in_download_dir) @@ -37,12 +36,10 @@ module DownloadManager File.write(attachment_path, attachment.file.read, mode: 'wb') else request = Typhoeus::Request.new(attachment.url) - fd = File.open(attachment_path, mode: 'wb') request.on_body do |chunk| - fd.write(chunk) + File.write(attachment_path, chunk, mode: 'a+b') end request.on_complete do |response| - fd.close unless response.success? File.delete(attachment_path) if File.exist?(attachment_path) # -> case of retries failed, must cleanup partialy downloaded file on_error.call(attachment, path_in_download_dir, response.code) @@ -51,6 +48,5 @@ module DownloadManager http_client.queue(request) end end - # rubocop:enable Style/AutoResourceCleanup end end