diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2023-12-13 15:13:10 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2023-12-13 15:13:10 +0300 |
commit | 8ebd99a81f8fe458153de9815f73f9067d010293 (patch) | |
tree | 29390f8f6e89af290768a32e4bb6cf281c44105d /app/workers | |
parent | c283bdb7bc86aee27a7ed065fc9fb17e4c4ffee6 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/workers')
-rw-r--r-- | app/workers/bulk_imports/stuck_import_worker.rb | 35 | ||||
-rw-r--r-- | app/workers/concerns/gitlab/github_import/object_importer.rb | 7 |
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 |