diff options
author | Rémy Coutable <remy@rymai.me> | 2017-02-16 15:00:40 +0000 |
---|---|---|
committer | Rémy Coutable <remy@rymai.me> | 2017-02-16 15:00:40 +0000 |
commit | d8752015b34a542b1412065f375d869178e70761 (patch) | |
tree | 019877ac1b11b96968a43b8c572c0c5d7e5cbc3d /lib | |
parent | f15340e044391945a5bee6f135a453ff7e05b270 (diff) | |
parent | 21aafcfc899d34f296ddd1e3380970dbe01397f6 (diff) | |
download | gitlab-ce-d8752015b34a542b1412065f375d869178e70761.tar.gz |
Merge branch 'fix/import-hooks' into 'master'
Fix import webhooks performance issue
Closes #27958
See merge request !9197
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/import_export/command_line_util.rb | 12 | ||||
-rw-r--r-- | lib/gitlab/import_export/repo_restorer.rb | 21 | ||||
-rw-r--r-- | lib/gitlab/shell.rb | 4 |
3 files changed, 5 insertions, 32 deletions
diff --git a/lib/gitlab/import_export/command_line_util.rb b/lib/gitlab/import_export/command_line_util.rb index f00c7460e82..90942774a2e 100644 --- a/lib/gitlab/import_export/command_line_util.rb +++ b/lib/gitlab/import_export/command_line_util.rb @@ -15,14 +15,6 @@ module Gitlab execute(%W(#{git_bin_path} --git-dir=#{repo_path} bundle create #{bundle_path} --all)) end - def git_unbundle(repo_path:, bundle_path:) - execute(%W(#{git_bin_path} clone --bare #{bundle_path} #{repo_path})) - end - - def git_restore_hooks - execute(%W(#{Gitlab.config.gitlab_shell.path}/bin/create-hooks) + repository_storage_paths_args) - end - def mkdir_p(path) FileUtils.mkdir_p(path, mode: DEFAULT_MODE) FileUtils.chmod(DEFAULT_MODE, path) @@ -56,10 +48,6 @@ module Gitlab FileUtils.copy_entry(source, destination) true end - - def repository_storage_paths_args - Gitlab.config.repositories.storages.values - end end end end diff --git a/lib/gitlab/import_export/repo_restorer.rb b/lib/gitlab/import_export/repo_restorer.rb index 48a9a6fa5e2..c824d3ea9fc 100644 --- a/lib/gitlab/import_export/repo_restorer.rb +++ b/lib/gitlab/import_export/repo_restorer.rb @@ -2,6 +2,7 @@ module Gitlab module ImportExport class RepoRestorer include Gitlab::ImportExport::CommandLineUtil + include Gitlab::ShellAdapter def initialize(project:, shared:, path_to_bundle:) @project = project @@ -12,29 +13,11 @@ module Gitlab def restore return true unless File.exist?(@path_to_bundle) - mkdir_p(path_to_repo) - - git_unbundle(repo_path: path_to_repo, bundle_path: @path_to_bundle) && repo_restore_hooks + gitlab_shell.import_repository(@project.repository_storage_path, @project.path_with_namespace, @path_to_bundle) rescue => e @shared.error(e) false end - - private - - def path_to_repo - @project.repository.path_to_repo - end - - def repo_restore_hooks - return true if wiki? - - git_restore_hooks - end - - def wiki? - @project.class.name == 'ProjectWiki' - end end end end diff --git a/lib/gitlab/shell.rb b/lib/gitlab/shell.rb index 942cedd6cd4..3faa336f142 100644 --- a/lib/gitlab/shell.rb +++ b/lib/gitlab/shell.rb @@ -80,8 +80,10 @@ module Gitlab # import_repository("/path/to/storage", "gitlab/gitlab-ci", "https://github.com/randx/six.git") # def import_repository(storage, name, url) + # Timeout should be less than 900 ideally, to prevent the memory killer + # to silently kill the process without knowing we are timing out here. output, status = Popen::popen([gitlab_shell_projects_path, 'import-project', - storage, "#{name}.git", url, '900']) + storage, "#{name}.git", url, '800']) raise Error, output unless status.zero? true end |