diff options
author | James Lopez <james@jameslopez.es> | 2017-05-05 19:01:33 +0300 |
---|---|---|
committer | James Lopez <james@jameslopez.es> | 2017-05-05 19:01:33 +0300 |
commit | 6ecf16b8f70335e1e6868b7c918cd031f5eb2f8d (patch) | |
tree | e57683de43fa63c278929bcba679d1077906a2fe /app | |
parent | ce418036c763219df8239632f71ef0e9782be7ea (diff) |
refactor code based on feedback
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/admin/services_controller.rb | 2 | ||||
-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 |