Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
authorJames Lopez <james@jameslopez.es>2017-05-05 19:01:33 +0300
committerJames Lopez <james@jameslopez.es>2017-05-05 19:01:33 +0300
commit6ecf16b8f70335e1e6868b7c918cd031f5eb2f8d (patch)
treee57683de43fa63c278929bcba679d1077906a2fe /app
parentce418036c763219df8239632f71ef0e9782be7ea (diff)
refactor code based on feedback
Diffstat (limited to 'app')
-rw-r--r--app/controllers/admin/services_controller.rb2
-rw-r--r--app/services/projects/propagate_service_template.rb (renamed from app/services/projects/propagate_service.rb)21
-rw-r--r--app/workers/propagate_service_template_worker.rb (renamed from app/workers/propagate_project_service_worker.rb)6
3 files changed, 19 insertions, 10 deletions
diff --git a/app/controllers/admin/services_controller.rb b/app/controllers/admin/services_controller.rb
index e335fbfffed..a40ce3c2418 100644
--- a/app/controllers/admin/services_controller.rb
+++ b/app/controllers/admin/services_controller.rb
@@ -16,7 +16,7 @@ class Admin::ServicesController < Admin::ApplicationController
def update
if service.update_attributes(service_params[:service])
- PropagateProjectServiceWorker.perform_async(service.id) if service.active?
+ PropagateServiceTemplateWorker.perform_async(service.id) if service.active?
redirect_to admin_application_settings_services_path,
notice: 'Application settings saved successfully'
diff --git a/app/services/projects/propagate_service.rb b/app/services/projects/propagate_service_template.rb
index f4fae478609..32ad68673ac 100644
--- a/app/services/projects/propagate_service.rb
+++ b/app/services/projects/propagate_service_template.rb
@@ -1,5 +1,5 @@
module Projects
- class PropagateService
+ class PropagateServiceTemplate
BATCH_SIZE = 100
def self.propagate(*args)
@@ -36,9 +36,7 @@ module Projects
end
Project.transaction do
- Gitlab::SQL::BulkInsert.new(service_hash.keys + ['project_id'],
- service_list,
- 'services').execute
+ bulk_insert_services(service_hash.keys + ['project_id'], service_list)
run_callbacks(batch)
end
end
@@ -54,11 +52,22 @@ module Projects
WHERE services.project_id = projects.id
AND services.type = '#{@template.type}'
)
+ AND projects.pending_delete = false
+ AND projects.archived = false
LIMIT #{BATCH_SIZE}
SQL
)
end
+ def bulk_insert_services(columns, values_array)
+ ActiveRecord::Base.connection.execute(
+ <<-SQL.strip_heredoc
+ INSERT INTO services (#{columns.join(', ')})
+ VALUES #{values_array.map { |tuple| "(#{tuple.join(', ')})" }.join(', ')}
+ SQL
+ )
+ end
+
def service_hash
@service_hash ||=
begin
@@ -84,11 +93,11 @@ module Projects
end
def active_external_issue_tracker?
- @template['category'] == 'issue_tracker' && @template['active'] && !@template['default']
+ @template.category == :issue_tracker && !@template.default
end
def active_external_wiki?
- @template['type'] == 'ExternalWikiService' && @template['active']
+ @template.type == 'ExternalWikiService'
end
end
end
diff --git a/app/workers/propagate_project_service_worker.rb b/app/workers/propagate_service_template_worker.rb
index 5eabe4eaecd..f1fc7ccb955 100644
--- a/app/workers/propagate_project_service_worker.rb
+++ b/app/workers/propagate_service_template_worker.rb
@@ -1,5 +1,5 @@
# Worker for updating any project specific caches.
-class PropagateProjectServiceWorker
+class PropagateServiceTemplateWorker
include Sidekiq::Worker
include DedicatedSidekiqQueue
@@ -10,14 +10,14 @@ class PropagateProjectServiceWorker
def perform(template_id)
return unless try_obtain_lease_for(template_id)
- Projects::PropagateService.propagate(Service.find_by(id: template_id))
+ Projects::PropagateServiceTemplate.propagate(Service.find_by(id: template_id))
end
private
def try_obtain_lease_for(template_id)
Gitlab::ExclusiveLease.
- new("propagate_project_service_worker:#{template_id}", timeout: LEASE_TIMEOUT).
+ new("propagate_service_template_worker:#{template_id}", timeout: LEASE_TIMEOUT).
try_obtain
end
end