From 52bb564812d106124b95c93f5a502f3ced9c280b Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 27 Jul 2016 17:56:25 +0200 Subject: squashed - fix timing issues in prod importing projects added changelog fix specs refactored code based on feedback fix rubocop warning --- CHANGELOG | 1 + lib/gitlab/import_export/file_importer.rb | 20 +++++++++++++++++++- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 9075972e6d0..4095eaa6e63 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -41,6 +41,7 @@ v 8.10.3 (unreleased) - Fix hooks missing on imported GitLab projects - Properly abort a merge when merge conflicts occur - Ignore invalid IPs in X-Forwarded-For when trusted proxies are configured. + - Fix timing problems running imports on production v 8.10.2 - User can now search branches by name. !5144 diff --git a/lib/gitlab/import_export/file_importer.rb b/lib/gitlab/import_export/file_importer.rb index 82d1e1805c5..ff7174c995f 100644 --- a/lib/gitlab/import_export/file_importer.rb +++ b/lib/gitlab/import_export/file_importer.rb @@ -3,6 +3,8 @@ module Gitlab class FileImporter include Gitlab::ImportExport::CommandLineUtil + MAX_RETRIES = 8 + def self.import(*args) new(*args).import end @@ -14,7 +16,10 @@ module Gitlab def import FileUtils.mkdir_p(@shared.export_path) - decompress_archive + + wait_for_archived_file do + decompress_archive + end rescue => e @shared.error(e) false @@ -22,6 +27,19 @@ module Gitlab private + # Exponentially sleep until I/O finishes copying the file + def wait_for_archived_file + MAX_RETRIES.times do |retry_number| + if File.exist?(@archive_file) + yield + + break + else + sleep(2**retry_number) + end + end + end + def decompress_archive result = untar_zxf(archive: @archive_file, dir: @shared.export_path) -- cgit v1.2.1 From dad1d0b8646b75ffcb3b1f6758848c53482f6bd2 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Fri, 29 Jul 2016 15:27:21 +0200 Subject: fix return value and spec --- lib/gitlab/import_export/file_importer.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/gitlab/import_export/file_importer.rb b/lib/gitlab/import_export/file_importer.rb index ff7174c995f..4b5f1f26286 100644 --- a/lib/gitlab/import_export/file_importer.rb +++ b/lib/gitlab/import_export/file_importer.rb @@ -33,7 +33,7 @@ module Gitlab if File.exist?(@archive_file) yield - break + return true else sleep(2**retry_number) end -- cgit v1.2.1 From 81495528f90b009bd4e649fbfd2b0ff951032fc4 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Mon, 1 Aug 2016 11:07:06 +0200 Subject: refactored wait_for_archived_file method --- lib/gitlab/import_export/file_importer.rb | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/gitlab/import_export/file_importer.rb b/lib/gitlab/import_export/file_importer.rb index 4b5f1f26286..eca6e5b6d51 100644 --- a/lib/gitlab/import_export/file_importer.rb +++ b/lib/gitlab/import_export/file_importer.rb @@ -30,14 +30,12 @@ module Gitlab # Exponentially sleep until I/O finishes copying the file def wait_for_archived_file MAX_RETRIES.times do |retry_number| - if File.exist?(@archive_file) - yield + break if File.exist?(@archive_file) - return true - else - sleep(2**retry_number) - end + sleep(2**retry_number) end + + yield end def decompress_archive -- cgit v1.2.1 From 7e77b1fd39f60d5b311bdaa350acbf005a4b398e Mon Sep 17 00:00:00 2001 From: James Lopez Date: Mon, 1 Aug 2016 12:45:27 +0000 Subject: Update CHANGELOG --- CHANGELOG | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 4095eaa6e63..9075972e6d0 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -41,7 +41,6 @@ v 8.10.3 (unreleased) - Fix hooks missing on imported GitLab projects - Properly abort a merge when merge conflicts occur - Ignore invalid IPs in X-Forwarded-For when trusted proxies are configured. - - Fix timing problems running imports on production v 8.10.2 - User can now search branches by name. !5144 -- cgit v1.2.1