summaryrefslogtreecommitdiff
path: root/app/services/projects
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2022-06-20 11:10:13 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2022-06-20 11:10:13 +0000
commit0ea3fcec397b69815975647f5e2aa5fe944a8486 (patch)
tree7979381b89d26011bcf9bdc989a40fcc2f1ed4ff /app/services/projects
parent72123183a20411a36d607d70b12d57c484394c8e (diff)
downloadgitlab-ce-0ea3fcec397b69815975647f5e2aa5fe944a8486.tar.gz
Add latest changes from gitlab-org/gitlab@15-1-stable-eev15.1.0-rc42
Diffstat (limited to 'app/services/projects')
-rw-r--r--app/services/projects/after_rename_service.rb14
-rw-r--r--app/services/projects/destroy_rollback_service.rb31
-rw-r--r--app/services/projects/destroy_service.rb19
-rw-r--r--app/services/projects/import_export/export_service.rb7
-rw-r--r--app/services/projects/open_issues_count_service.rb6
-rw-r--r--app/services/projects/operations/update_service.rb2
-rw-r--r--app/services/projects/transfer_service.rb8
-rw-r--r--app/services/projects/update_pages_service.rb8
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)