From 1322c981a0aa0752feb16b95e43a1839094a6262 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Tue, 10 May 2016 11:10:51 +0200 Subject: [PATCH 01/11] create import data in service --- app/services/projects/create_service.rb | 2 ++ lib/gitlab/bitbucket_import/project_creator.rb | 7 ++----- lib/gitlab/fogbugz_import/project_creator.rb | 9 +++------ lib/gitlab/google_code_import/project_creator.rb | 9 +++------ 4 files changed, 10 insertions(+), 17 deletions(-) diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 501e58c140..a77652480b 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -6,6 +6,7 @@ module Projects def execute forked_from_project_id = params.delete(:forked_from_project_id) + import_data = params.delete(:import_data) @project = Project.new(params) @@ -50,6 +51,7 @@ module Projects end Project.transaction do + @project.create_or_update_import_data(data: import_data[:data], credentials: import_data[:credentials]) if import_data @project.save if @project.persisted? && !@project.import? diff --git a/lib/gitlab/bitbucket_import/project_creator.rb b/lib/gitlab/bitbucket_import/project_creator.rb index 941f818b84..b90ef0b0fb 100644 --- a/lib/gitlab/bitbucket_import/project_creator.rb +++ b/lib/gitlab/bitbucket_import/project_creator.rb @@ -11,7 +11,7 @@ module Gitlab end def execute - project = ::Projects::CreateService.new( + ::Projects::CreateService.new( current_user, name: repo["name"], path: repo["slug"], @@ -21,11 +21,8 @@ module Gitlab import_type: "bitbucket", import_source: "#{repo["owner"]}/#{repo["slug"]}", import_url: "ssh://git@bitbucket.org/#{repo["owner"]}/#{repo["slug"]}.git", + import_data: { credentials: { bb_session: session_data } } ).execute - - project.create_or_update_import_data(credentials: { bb_session: session_data }) - - project end end end diff --git a/lib/gitlab/fogbugz_import/project_creator.rb b/lib/gitlab/fogbugz_import/project_creator.rb index 3840765db8..1918d5b208 100644 --- a/lib/gitlab/fogbugz_import/project_creator.rb +++ b/lib/gitlab/fogbugz_import/project_creator.rb @@ -12,7 +12,7 @@ module Gitlab end def execute - project = ::Projects::CreateService.new( + ::Projects::CreateService.new( current_user, name: repo.safe_name, path: repo.path, @@ -21,12 +21,9 @@ module Gitlab visibility_level: Gitlab::VisibilityLevel::INTERNAL, import_type: 'fogbugz', import_source: repo.name, - import_url: Project::UNKNOWN_IMPORT_URL + import_url: Project::UNKNOWN_IMPORT_URL, + import_data: { data: { 'repo' => repo.raw_data, 'user_map' => user_map }, credentials: { fb_session: fb_session } } ).execute - - project.create_or_update_import_data(data: { 'repo' => repo.raw_data, 'user_map' => user_map }, credentials: { fb_session: fb_session }) - - project end end end diff --git a/lib/gitlab/google_code_import/project_creator.rb b/lib/gitlab/google_code_import/project_creator.rb index 0abb7a64c1..326cfcaa8a 100644 --- a/lib/gitlab/google_code_import/project_creator.rb +++ b/lib/gitlab/google_code_import/project_creator.rb @@ -11,7 +11,7 @@ module Gitlab end def execute - project = ::Projects::CreateService.new( + ::Projects::CreateService.new( current_user, name: repo.name, path: repo.name, @@ -21,12 +21,9 @@ module Gitlab visibility_level: Gitlab::VisibilityLevel::PUBLIC, import_type: "google_code", import_source: repo.name, - import_url: repo.import_url + import_url: repo.import_url, + import_data: { data: { 'repo' => repo.raw_data, 'user_map' => user_map } } ).execute - - project.create_or_update_import_data(data: { 'repo' => repo.raw_data, 'user_map' => user_map }) - - project end end end From 68aca6f6635090a33cf4d96c6dbc7ceab6ac2385 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 11 May 2016 11:37:49 +0200 Subject: [PATCH 02/11] trying to fix timing issue with import status --- app/controllers/projects/imports_controller.rb | 5 ++++- app/models/project.rb | 5 ----- app/services/projects/create_service.rb | 6 ++++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/app/controllers/projects/imports_controller.rb b/app/controllers/projects/imports_controller.rb index 7756f0f0ed..c70b9bf2f5 100644 --- a/app/controllers/projects/imports_controller.rb +++ b/app/controllers/projects/imports_controller.rb @@ -19,7 +19,10 @@ class Projects::ImportsController < Projects::ApplicationController if @project.import_failed? @project.import_retry else - @project.import_start + Project.transaction do + @project.import_start + end + @project.add_import_job if @project.persisted? end end diff --git a/app/models/project.rb b/app/models/project.rb index 05e14185a3..d807802ce1 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -246,7 +246,6 @@ class Project < ActiveRecord::Base state :finished state :failed - after_transition any => :started, do: :schedule_add_import_job after_transition any => :finished, do: :clear_import_data end @@ -385,10 +384,6 @@ class Project < ActiveRecord::Base id && persisted? end - def schedule_add_import_job - run_after_commit(:add_import_job) - end - def add_import_job if forked? job_id = RepositoryForkWorker.perform_async(self.id, forked_from_project.path_with_namespace, self.namespace.path) diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index a77652480b..53a16e95f5 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -59,6 +59,10 @@ module Projects end end + Project.transaction do + @project.import_start if @project.import? + end + after_create_actions if @project.persisted? @project @@ -95,8 +99,6 @@ module Projects unless @project.group @project.team << [current_user, :master, current_user] end - - @project.import_start if @project.import? end end end From 5c59ba35c9ae6a7e5d6d6cd20d0b2ba51166f60f Mon Sep 17 00:00:00 2001 From: James Lopez Date: Wed, 11 May 2016 15:08:27 +0200 Subject: [PATCH 03/11] fix complexity of method --- app/services/projects/create_service.rb | 30 ++++++++++++++++--------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 53a16e95f5..1693ae609c 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -50,18 +50,9 @@ module Projects @project.build_forked_project_link(forked_from_project_id: forked_from_project_id) end - Project.transaction do - @project.create_or_update_import_data(data: import_data[:data], credentials: import_data[:credentials]) if import_data - @project.save + process_import_data(import_data) - if @project.persisted? && !@project.import? - raise 'Failed to create repository' unless @project.create_repository - end - end - - Project.transaction do - @project.import_start if @project.import? - end + start_import if @project.import? after_create_actions if @project.persisted? @@ -100,5 +91,22 @@ module Projects @project.team << [current_user, :master, current_user] end end + + def start_import + Project.transaction do + @project.import_start + end + end + + def process_import_data(import_data) + Project.transaction do + @project.create_or_update_import_data(data: import_data[:data], credentials: import_data[:credentials]) if import_data + @project.save + + if @project.persisted? && !@project.import? + raise 'Failed to create repository' unless @project.create_repository + end + end + end end end From ef7f793dc4f0425e1fd5e358c162f2b08a160142 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 12 May 2016 10:12:29 +0200 Subject: [PATCH 04/11] fix silly typo --- app/services/projects/create_service.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 1693ae609c..c61a515a6b 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -56,6 +56,8 @@ module Projects after_create_actions if @project.persisted? + @project.add_import_job if @project.import? + @project rescue => e message = "Unable to save project: #{e.message}" From f4ab8ea4968b97fc2c918b85c534978aaa954c94 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 12 May 2016 17:16:35 +0200 Subject: [PATCH 05/11] rename method --- app/services/projects/create_service.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index c61a515a6b..e0081e5162 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -50,7 +50,7 @@ module Projects @project.build_forked_project_link(forked_from_project_id: forked_from_project_id) end - process_import_data(import_data) + save_project_and_import_data(import_data) start_import if @project.import? @@ -100,7 +100,7 @@ module Projects end end - def process_import_data(import_data) + def save_project_and_import_data(import_data) Project.transaction do @project.create_or_update_import_data(data: import_data[:data], credentials: import_data[:credentials]) if import_data @project.save From 7c32488dc0170547720b36b11f9d8b7f6466c309 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 12 May 2016 17:22:43 +0200 Subject: [PATCH 06/11] added changelog --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 4841361482..f8fd6a8ee2 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -43,6 +43,9 @@ v 8.8.0 (unreleased) - Fix adding a todo for private group members (Ahmad Sherif) - Bump ace-rails-ap gem version from 2.0.1 to 4.0.2 which upgrades Ace Editor from 1.1.2 to 1.2.3 +v 8.7.5 + - Fix Bitbucket imports not finding the import data + v 8.7.4 - Links for Redmine issue references are generated correctly again !4048 (Benedikt Huss) - Fix setting trusted proxies !3970 From f27d7b2c642e66a45b2b3644e955250786ae07fa Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 12 May 2016 18:03:16 +0200 Subject: [PATCH 07/11] updated changelog --- CHANGELOG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index f8fd6a8ee2..8dc52cde60 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -44,7 +44,7 @@ v 8.8.0 (unreleased) - Bump ace-rails-ap gem version from 2.0.1 to 4.0.2 which upgrades Ace Editor from 1.1.2 to 1.2.3 v 8.7.5 - - Fix Bitbucket imports not finding the import data + - Fix external imports not finding the import data v 8.7.4 - Links for Redmine issue references are generated correctly again !4048 (Benedikt Huss) From cacbecd05c4edc7d27c458462463f2ee65383ea5 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 12 May 2016 18:27:20 +0200 Subject: [PATCH 08/11] more changes based on MR feedback --- app/controllers/projects/imports_controller.rb | 2 +- app/services/projects/create_service.rb | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/controllers/projects/imports_controller.rb b/app/controllers/projects/imports_controller.rb index c70b9bf2f5..d353a39034 100644 --- a/app/controllers/projects/imports_controller.rb +++ b/app/controllers/projects/imports_controller.rb @@ -22,7 +22,7 @@ class Projects::ImportsController < Projects::ApplicationController Project.transaction do @project.import_start end - @project.add_import_job if @project.persisted? + @project.add_import_job end end diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index e0081e5162..2687544ae6 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -103,9 +103,8 @@ module Projects def save_project_and_import_data(import_data) Project.transaction do @project.create_or_update_import_data(data: import_data[:data], credentials: import_data[:credentials]) if import_data - @project.save - if @project.persisted? && !@project.import? + if @project.save && !@project.import? raise 'Failed to create repository' unless @project.create_repository end end From bade0ed63e55a8168b9c2c1ddd16edbcfcd9dcd7 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 12 May 2016 18:39:10 +0200 Subject: [PATCH 09/11] looks like 8.7.6 --- CHANGELOG | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG b/CHANGELOG index 8dc52cde60..1b246919a1 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -43,7 +43,7 @@ v 8.8.0 (unreleased) - Fix adding a todo for private group members (Ahmad Sherif) - Bump ace-rails-ap gem version from 2.0.1 to 4.0.2 which upgrades Ace Editor from 1.1.2 to 1.2.3 -v 8.7.5 +v 8.7.6 - Fix external imports not finding the import data v 8.7.4 From 491a312724076f5113766b5fb55f38fee316dd38 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Thu, 12 May 2016 18:40:50 +0200 Subject: [PATCH 10/11] fix merge conflict --- CHANGELOG | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 986f465327..5412e4c19b 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -47,14 +47,14 @@ v 8.8.0 (unreleased) - Bump ace-rails-ap gem version from 2.0.1 to 4.0.2 which upgrades Ace Editor from 1.1.2 to 1.2.3 - Total method execution timings are no longer tracked +v 8.7.6 + - Fix external imports not finding the import data + v 8.7.5 - Fix relative links in wiki pages. !4050 - Fix always showing build notification message when switching between merge requests !4086 - Fix an issue when filtering merge requests with more than one label. !3886 -v 8.7.6 - - Fix external imports not finding the import data - v 8.7.4 - Links for Redmine issue references are generated correctly again !4048 (Benedikt Huss) - Fix setting trusted proxies !3970 From 8eb67187d04f49f88afc13cdc3d0d591bb1e2a20 Mon Sep 17 00:00:00 2001 From: James Lopez Date: Fri, 13 May 2016 13:12:21 +0200 Subject: [PATCH 11/11] removed transaction stuff --- app/controllers/projects/imports_controller.rb | 4 +--- app/services/projects/create_service.rb | 8 +------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/app/controllers/projects/imports_controller.rb b/app/controllers/projects/imports_controller.rb index d353a39034..a1b84afcd9 100644 --- a/app/controllers/projects/imports_controller.rb +++ b/app/controllers/projects/imports_controller.rb @@ -19,9 +19,7 @@ class Projects::ImportsController < Projects::ApplicationController if @project.import_failed? @project.import_retry else - Project.transaction do - @project.import_start - end + @project.import_start @project.add_import_job end end diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index 2687544ae6..6728fabea1 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -52,7 +52,7 @@ module Projects save_project_and_import_data(import_data) - start_import if @project.import? + @project.import_start if @project.import? after_create_actions if @project.persisted? @@ -94,12 +94,6 @@ module Projects end end - def start_import - Project.transaction do - @project.import_start - end - end - def save_project_and_import_data(import_data) Project.transaction do @project.create_or_update_import_data(data: import_data[:data], credentials: import_data[:credentials]) if import_data