Merge branch 'fix/gitlab-import-project-file-fix' into 'master'
Fix temp file being deleted after the request while importing a GitLab project Fixes https://gitlab.com/gitlab-com/infrastructure/issues/151 In production, the temporary uploaded file is getting deleted straight after the request so the Sidekiq worker is unable to find it in `/tmp` Also, improved erroring/logging of this situation. See merge request !4894
This commit is contained in:
commit
07ea22e52b
4 changed files with 23 additions and 5 deletions
|
@ -19,6 +19,7 @@ v 8.9.1
|
||||||
- Fix 404 when accessing pipelines as guest user on public projects
|
- Fix 404 when accessing pipelines as guest user on public projects
|
||||||
- Fix mobile Safari bug where horizontal nav arrows would flicker on scroll
|
- Fix mobile Safari bug where horizontal nav arrows would flicker on scroll
|
||||||
- Fix in auto merge when pipeline is nil
|
- Fix in auto merge when pipeline is nil
|
||||||
|
- Fix GitLab import project deleting imported file straight after being uploaded
|
||||||
|
|
||||||
v 8.9.0
|
v 8.9.0
|
||||||
- Fix builds API response not including commit data
|
- Fix builds API response not including commit data
|
||||||
|
|
|
@ -12,9 +12,13 @@ class Import::GitlabProjectsController < Import::BaseController
|
||||||
return redirect_back_or_default(options: { alert: "You need to upload a GitLab project export archive." })
|
return redirect_back_or_default(options: { alert: "You need to upload a GitLab project export archive." })
|
||||||
end
|
end
|
||||||
|
|
||||||
|
imported_file = project_params[:file].path + "-import"
|
||||||
|
|
||||||
|
FileUtils.copy_entry(project_params[:file].path, imported_file)
|
||||||
|
|
||||||
@project = Gitlab::ImportExport::ProjectCreator.new(project_params[:namespace_id],
|
@project = Gitlab::ImportExport::ProjectCreator.new(project_params[:namespace_id],
|
||||||
current_user,
|
current_user,
|
||||||
File.expand_path(project_params[:file].path),
|
File.expand_path(imported_file),
|
||||||
project_params[:path]).execute
|
project_params[:path]).execute
|
||||||
|
|
||||||
if @project.saved?
|
if @project.saved?
|
||||||
|
|
|
@ -23,7 +23,11 @@ module Gitlab
|
||||||
private
|
private
|
||||||
|
|
||||||
def decompress_archive
|
def decompress_archive
|
||||||
untar_zxf(archive: @archive_file, dir: @shared.export_path)
|
result = untar_zxf(archive: @archive_file, dir: @shared.export_path)
|
||||||
|
|
||||||
|
raise Projects::ImportService::Error.new("Unable to decompress #{@archive_file} into #{@shared.export_path}") unless result
|
||||||
|
|
||||||
|
true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -10,17 +10,22 @@ module Gitlab
|
||||||
end
|
end
|
||||||
|
|
||||||
def execute
|
def execute
|
||||||
Gitlab::ImportExport::FileImporter.import(archive_file: @archive_file,
|
if import_file && check_version! && [project_tree, repo_restorer, wiki_restorer, uploads_restorer].all?(&:restore)
|
||||||
shared: @shared)
|
|
||||||
if check_version! && [project_tree, repo_restorer, wiki_restorer, uploads_restorer].all?(&:restore)
|
|
||||||
project_tree.restored_project
|
project_tree.restored_project
|
||||||
else
|
else
|
||||||
raise Projects::ImportService::Error.new(@shared.errors.join(', '))
|
raise Projects::ImportService::Error.new(@shared.errors.join(', '))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
remove_import_file
|
||||||
end
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
def import_file
|
||||||
|
Gitlab::ImportExport::FileImporter.import(archive_file: @archive_file,
|
||||||
|
shared: @shared)
|
||||||
|
end
|
||||||
|
|
||||||
def check_version!
|
def check_version!
|
||||||
Gitlab::ImportExport::VersionChecker.check!(shared: @shared)
|
Gitlab::ImportExport::VersionChecker.check!(shared: @shared)
|
||||||
end
|
end
|
||||||
|
@ -59,6 +64,10 @@ module Gitlab
|
||||||
def wiki_repo_path
|
def wiki_repo_path
|
||||||
File.join(@shared.export_path, 'project.wiki.bundle')
|
File.join(@shared.export_path, 'project.wiki.bundle')
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def remove_import_file
|
||||||
|
FileUtils.rm_rf(@archive_file)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue