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
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2023-12-13 15:13:10 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2023-12-13 15:13:10 +0300
commit8ebd99a81f8fe458153de9815f73f9067d010293 (patch)
tree29390f8f6e89af290768a32e4bb6cf281c44105d /app/workers
parentc283bdb7bc86aee27a7ed065fc9fb17e4c4ffee6 (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/workers')
-rw-r--r--app/workers/bulk_imports/stuck_import_worker.rb35
-rw-r--r--app/workers/concerns/gitlab/github_import/object_importer.rb7
2 files changed, 25 insertions, 17 deletions
diff --git a/app/workers/bulk_imports/stuck_import_worker.rb b/app/workers/bulk_imports/stuck_import_worker.rb
index 9f3fe21f1e1..cb4e10a29b2 100644
--- a/app/workers/bulk_imports/stuck_import_worker.rb
+++ b/app/workers/bulk_imports/stuck_import_worker.rb
@@ -12,22 +12,27 @@ module BulkImports
feature_category :importers
+ # Using Keyset pagination for scopes that involve timestamp indexes
def perform
- BulkImport.stale.find_each do |import|
- logger.error(message: 'BulkImport stale', bulk_import_id: import.id)
- import.cleanup_stale
+ Gitlab::Pagination::Keyset::Iterator.new(scope: bulk_import_scope).each_batch do |imports|
+ imports.each do |import|
+ logger.error(message: 'BulkImport stale', bulk_import_id: import.id)
+ import.cleanup_stale
+ end
end
- BulkImports::Entity.includes(:trackers).stale.find_each do |entity| # rubocop: disable CodeReuse/ActiveRecord
- ApplicationRecord.transaction do
- logger.with_entity(entity).error(
- message: 'BulkImports::Entity stale'
- )
+ Gitlab::Pagination::Keyset::Iterator.new(scope: entity_scope).each_batch do |entities|
+ entities.each do |entity|
+ ApplicationRecord.transaction do
+ logger.with_entity(entity).error(
+ message: 'BulkImports::Entity stale'
+ )
- entity.cleanup_stale
+ entity.cleanup_stale
- entity.trackers.find_each do |tracker|
- tracker.cleanup_stale
+ entity.trackers.find_each do |tracker|
+ tracker.cleanup_stale
+ end
end
end
end
@@ -36,5 +41,13 @@ module BulkImports
def logger
@logger ||= Logger.build
end
+
+ def bulk_import_scope
+ BulkImport.stale.order_by_updated_at_and_id(:asc)
+ end
+
+ def entity_scope
+ BulkImports::Entity.with_trackers.stale.order_by_updated_at_and_id(:asc)
+ end
end
end
diff --git a/app/workers/concerns/gitlab/github_import/object_importer.rb b/app/workers/concerns/gitlab/github_import/object_importer.rb
index fcc7a96fa2b..046d9ed49e1 100644
--- a/app/workers/concerns/gitlab/github_import/object_importer.rb
+++ b/app/workers/concerns/gitlab/github_import/object_importer.rb
@@ -57,12 +57,7 @@ module Gitlab
end
info(project.id, message: 'importer finished')
- rescue NoMethodError => e
- # This exception will be more useful in development when a new
- # Representation is created but the developer forgot to add a
- # `#github_identifiers` method.
- track_and_raise_exception(project, e, fail_import: true)
- rescue ActiveRecord::RecordInvalid, NotRetriableError => e
+ rescue ActiveRecord::RecordInvalid, NotRetriableError, NoMethodError => e
# We do not raise exception to prevent job retry
track_exception(project, e)
rescue StandardError => e