diff options
Diffstat (limited to 'app/services/projects')
-rw-r--r-- | app/services/projects/after_rename_service.rb | 14 | ||||
-rw-r--r-- | app/services/projects/destroy_rollback_service.rb | 31 | ||||
-rw-r--r-- | app/services/projects/destroy_service.rb | 19 | ||||
-rw-r--r-- | app/services/projects/import_export/export_service.rb | 7 | ||||
-rw-r--r-- | app/services/projects/open_issues_count_service.rb | 6 | ||||
-rw-r--r-- | app/services/projects/operations/update_service.rb | 2 | ||||
-rw-r--r-- | app/services/projects/transfer_service.rb | 8 | ||||
-rw-r--r-- | app/services/projects/update_pages_service.rb | 8 |
8 files changed, 22 insertions, 73 deletions
diff --git a/app/services/projects/after_rename_service.rb b/app/services/projects/after_rename_service.rb index a3d54bc6b58..2ed4346e5ca 100644 --- a/app/services/projects/after_rename_service.rb +++ b/app/services/projects/after_rename_service.rb @@ -95,20 +95,6 @@ module Projects .new .rename_project(path_before, project_path, namespace_full_path) end - - if project.pages_deployed? - # Block will be evaluated in the context of project so we need - # to bind to a local variable to capture it, as the instance - # variable and method aren't available on Project - path_before_local = @path_before - - project.run_after_commit_or_now do - Gitlab::PagesTransfer - .new - .async - .rename_project(path_before_local, path, namespace.full_path) - end - end end def log_completion diff --git a/app/services/projects/destroy_rollback_service.rb b/app/services/projects/destroy_rollback_service.rb deleted file mode 100644 index 7f0ca63a406..00000000000 --- a/app/services/projects/destroy_rollback_service.rb +++ /dev/null @@ -1,31 +0,0 @@ -# frozen_string_literal: true - -module Projects - class DestroyRollbackService < BaseService - include Gitlab::ShellAdapter - - def execute - return unless project - - Projects::ForksCountService.new(project).delete_cache - - unless rollback_repository(project.repository) - raise_error(s_('DeleteProject|Failed to restore project repository. Please contact the administrator.')) - end - - unless rollback_repository(project.wiki.repository) - raise_error(s_('DeleteProject|Failed to restore wiki repository. Please contact the administrator.')) - end - end - - private - - def rollback_repository(repository) - return true unless repository - - result = Repositories::DestroyRollbackService.new(repository).execute - - result[:status] == :success - end - end -end diff --git a/app/services/projects/destroy_service.rb b/app/services/projects/destroy_service.rb index a73244c6971..bc5be5bdff3 100644 --- a/app/services/projects/destroy_service.rb +++ b/app/services/projects/destroy_service.rb @@ -10,11 +10,6 @@ module Projects def async_execute project.update_attribute(:pending_delete, true) - # Ensure no repository +deleted paths are kept, - # regardless of any issue with the ProjectDestroyWorker - # job process. - schedule_stale_repos_removal - job_id = ProjectDestroyWorker.perform_async(project.id, current_user.id, params) log_info("User #{current_user.id} scheduled destruction of project #{project.full_path} with job ID #{job_id}") end @@ -109,16 +104,6 @@ module Projects result[:status] == :success end - def schedule_stale_repos_removal - repos = [project.repository, project.wiki.repository] - - repos.each do |repository| - next unless repository - - Repositories::ShellDestroyService.new(repository).execute(Repositories::ShellDestroyService::STALE_REMOVAL_DELAY) - end - end - def attempt_rollback(project, message) return unless project @@ -191,6 +176,10 @@ module Projects # rubocop: enable CodeReuse/ActiveRecord def destroy_ci_records! + # Make sure to destroy this first just in case the project is undergoing stats refresh. + # This is to avoid logging the artifact deletion in Ci::JobArtifacts::DestroyBatchService. + project.build_artifacts_size_refresh&.destroy + project.all_pipelines.find_each(batch_size: BATCH_SIZE) do |pipeline| # rubocop: disable CodeReuse/ActiveRecord # Destroy artifacts, then builds, then pipelines # All builds have already been dropped by Ci::AbortPipelinesService, diff --git a/app/services/projects/import_export/export_service.rb b/app/services/projects/import_export/export_service.rb index 72492b6f5a5..d8d35422590 100644 --- a/app/services/projects/import_export/export_service.rb +++ b/app/services/projects/import_export/export_service.rb @@ -143,7 +143,12 @@ module Projects project_id: project.id ) - notification_service.project_not_exported(project, current_user, shared.errors) + user = current_user + errors = shared.errors + + project.run_after_commit_or_now do |project| + NotificationService.new.project_not_exported(project, user, errors) + end end end end diff --git a/app/services/projects/open_issues_count_service.rb b/app/services/projects/open_issues_count_service.rb index ee4d559e612..925512f31d7 100644 --- a/app/services/projects/open_issues_count_service.rb +++ b/app/services/projects/open_issues_count_service.rb @@ -63,12 +63,12 @@ module Projects # rubocop: disable CodeReuse/ActiveRecord def self.query(projects, public_only: true) - issues_filtered_by_type = Issue.opened.with_issue_type(Issue::TYPES_FOR_LIST) + open_issues = Issue.opened if public_only - issues_filtered_by_type.public_only.where(project: projects) + open_issues.public_only.where(project: projects) else - issues_filtered_by_type.where(project: projects) + open_issues.where(project: projects) end end # rubocop: enable CodeReuse/ActiveRecord diff --git a/app/services/projects/operations/update_service.rb b/app/services/projects/operations/update_service.rb index b66435d013b..d01e96a1a2d 100644 --- a/app/services/projects/operations/update_service.rb +++ b/app/services/projects/operations/update_service.rb @@ -112,7 +112,7 @@ module Projects integration = project.find_or_initialize_integration(::Integrations::Prometheus.to_param) integration.assign_attributes(attrs) - attrs = integration.to_integration_hash.except('created_at', 'updated_at') + attrs = integration.to_database_hash { prometheus_integration_attributes: attrs } end diff --git a/app/services/projects/transfer_service.rb b/app/services/projects/transfer_service.rb index 2ad5c303be2..666227951c6 100644 --- a/app/services/projects/transfer_service.rb +++ b/app/services/projects/transfer_service.rb @@ -120,7 +120,6 @@ module Projects # Overridden in EE def post_update_hooks(project) - move_pages(project) ensure_personal_project_owner_membership(project) end @@ -232,13 +231,6 @@ module Projects ) end - def move_pages(project) - return unless project.pages_deployed? - - transfer = Gitlab::PagesTransfer.new.async - transfer.move_project(project.path, @old_namespace.full_path, @new_namespace.full_path) - end - def old_wiki_repo_path "#{old_path}#{::Gitlab::GlRepository::WIKI.path_suffix}" end diff --git a/app/services/projects/update_pages_service.rb b/app/services/projects/update_pages_service.rb index c6ea364320f..8ded2516b97 100644 --- a/app/services/projects/update_pages_service.rb +++ b/app/services/projects/update_pages_service.rb @@ -3,6 +3,7 @@ module Projects class UpdatePagesService < BaseService InvalidStateError = Class.new(StandardError) + WrongUploadedDeploymentSizeError = Class.new(StandardError) BLOCK_SIZE = 32.kilobytes PUBLIC_DIR = 'public' @@ -39,6 +40,9 @@ module Projects end rescue InvalidStateError => e error(e.message) + rescue WrongUploadedDeploymentSizeError => e + error("Uploading artifacts to pages storage failed") + raise e rescue StandardError => e error(e.message) raise e @@ -80,6 +84,10 @@ module Projects ci_build_id: build.id ) + if deployment.size != file.size || deployment.file.size != file.size + raise(WrongUploadedDeploymentSizeError) + end + validate_outdated_sha! project.update_pages_deployment!(deployment) |