From a8a7bbaa327569ba5d582951bc8af713f5811298 Mon Sep 17 00:00:00 2001 From: Marc Shaw Date: Tue, 2 Sep 2025 10:37:19 +0200 Subject: [PATCH 1/6] Split out reviewer service from refresh worker This MR implements the third step in splitting the `MergeRequests::RefreshService` by extracting reviewer-related functionality into a separate service and worker. This refactoring improves the separation of concerns and allows for better performance optimization of merge request refresh operations. ### Key Changes: 1. **New `MergeRequests::Refresh::ReviewerService`**: Extracts reviewer-related logic from the main refresh service, including: * Scheduling Duo Code Review for merge requests * Removing requested changes when appropriate * Handling reviewer state updates * Processing reviewer-related notifications 2. **New `MergeRequests::Refresh::ReviewerWorker`**: A Sidekiq worker that processes reviewer operations asynchronously with: * Low urgency and CPU resource boundary * Idempotent execution with deduplication * Proper error handling for missing projects/users * Weight of 2 to handle the processing load 3. **Feature Flag Integration**: Introduces `split_refresh_worker_reviewer` feature flag to gradually roll out the new architecture: * When enabled: Reviewer processing happens asynchronously via the new worker * When disabled: Falls back to the original synchronous behavior 4. **EE Extension**: Maintains Enterprise Edition functionality with proper override for reviewer handling ### Benefits: * **Performance**: Moves time-consuming reviewer operations to background processing * **Scalability**: Reduces blocking time in the main refresh flow * **Maintainability**: Better separation of concerns with focused, testable services * **Gradual Rollout**: Feature flag allows safe deployment and rollback if needed ### Implementation Notes: This approach uses direct worker enqueuing rather than events to allow independent feature flag control during the transition period. The worker will only execute if both project and user exist, providing robust error handling for edge cases. The reviewer service handles all reviewer-related operations including Duo Code Review scheduling, requested changes removal, and reviewer state management. Part of: https://gitlab.com/gitlab-org/gitlab/-/issues/554081 --- .../refresh/reviewer_service.rb | 35 + app/workers/all_queues.yml | 5124 +---------------- .../merge_requests/refresh/reviewer_worker.rb | 33 + .../wip/split_refresh_worker_reviewer.yml | 10 + config/sidekiq_queues.yml | 1160 +--- .../refresh/reviewer_service.rb | 41 + 6 files changed, 124 insertions(+), 6279 deletions(-) create mode 100644 app/services/merge_requests/refresh/reviewer_service.rb create mode 100644 app/workers/merge_requests/refresh/reviewer_worker.rb create mode 100644 config/feature_flags/wip/split_refresh_worker_reviewer.yml create mode 100644 ee/app/services/ee/merge_requests/refresh/reviewer_service.rb diff --git a/app/services/merge_requests/refresh/reviewer_service.rb b/app/services/merge_requests/refresh/reviewer_service.rb new file mode 100644 index 00000000000000..c6b90dcc59eabd --- /dev/null +++ b/app/services/merge_requests/refresh/reviewer_service.rb @@ -0,0 +1,35 @@ +# frozen_string_literal: true + +module MergeRequests + module Refresh + class ReviewerService < MergeRequests::Refresh::BaseService + attr_reader :push + + def execute(oldrev, newrev, ref) + @push = Gitlab::Git::Push.new(@project, oldrev, newrev, ref) + + process_reviewers + end + + private + + def process_reviewers + merge_requests_for_source_branch.each do |mr| + schedule_duo_code_review(mr) + end + + remove_requested_changes + end + + def schedule_duo_code_review(merge_request) + # Overridden in EE + end + + def remove_requested_changes + # Overridden in EE + end + end + end +end + +MergeRequests::Refresh::ReviewerService.prepend_mod_with('MergeRequests::Refresh::ReviewerService') diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index 6142cbdb996d67..69086aeacf37f4 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -1,5132 +1,14 @@ # This file is generated automatically by # bin/rake gitlab:sidekiq:all_queues_yml:generate -# # Do not edit it manually! --- -- :name: activity_pub:activity_pub_projects_releases_subscription - :worker_name: ActivityPub::Projects::ReleasesSubscriptionWorker - :feature_category: :release_orchestration - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :activity_pub -- :name: authorized_project_update:authorized_project_update_enqueue_group_members_refresh_authorized_projects - :worker_name: AuthorizedProjectUpdate::EnqueueGroupMembersRefreshAuthorizedProjectsWorker - :feature_category: :permissions - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :authorized_project_update -- :name: authorized_project_update:authorized_project_update_enqueue_users_refresh_authorized_projects - :worker_name: AuthorizedProjectUpdate::EnqueueUsersRefreshAuthorizedProjectsWorker - :feature_category: :permissions - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :authorized_project_update -- :name: authorized_project_update:authorized_project_update_project_recalculate - :worker_name: AuthorizedProjectUpdate::ProjectRecalculateWorker - :feature_category: :permissions - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :authorized_project_update -- :name: authorized_project_update:authorized_project_update_project_recalculate_per_user - :worker_name: AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker - :feature_category: :permissions - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :authorized_project_update -- :name: authorized_project_update:authorized_project_update_user_refresh_from_replica - :worker_name: AuthorizedProjectUpdate::UserRefreshFromReplicaWorker - :feature_category: :permissions - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :authorized_project_update -- :name: authorized_project_update:authorized_project_update_user_refresh_over_user_range - :worker_name: AuthorizedProjectUpdate::UserRefreshOverUserRangeWorker - :feature_category: :permissions - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :authorized_project_update -- :name: authorized_project_update:authorized_project_update_user_refresh_with_low_urgency - :worker_name: AuthorizedProjectUpdate::UserRefreshWithLowUrgencyWorker - :feature_category: :permissions - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 2 - :idempotent: true - :tags: [] - :queue_namespace: :authorized_project_update -- :name: auto_devops:auto_devops_disable - :worker_name: AutoDevops::DisableWorker - :feature_category: :auto_devops - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :auto_devops -- :name: auto_merge:auto_merge_process - :worker_name: AutoMergeProcessWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 3 - :idempotent: false - :tags: [] - :queue_namespace: :auto_merge -- :name: batched_background_migrations:database_batched_background_migration_ci_execution - :worker_name: Database::BatchedBackgroundMigration::CiExecutionWorker - :feature_category: :database - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :batched_background_migrations -- :name: batched_background_migrations:database_batched_background_migration_main_execution - :worker_name: Database::BatchedBackgroundMigration::MainExecutionWorker - :feature_category: :database - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :batched_background_migrations -- :name: batched_background_migrations:database_batched_background_migration_sec_execution - :worker_name: Database::BatchedBackgroundMigration::SecExecutionWorker - :feature_category: :database - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :batched_background_migrations -- :name: chaos:chaos_cpu_spin - :worker_name: Chaos::CpuSpinWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :chaos -- :name: chaos:chaos_db_sleep - :worker_name: Chaos::DbSleepWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :chaos -- :name: chaos:chaos_db_spin - :worker_name: Chaos::DbSpinWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :chaos -- :name: chaos:chaos_kill - :worker_name: Chaos::KillWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :chaos -- :name: chaos:chaos_leak_mem - :worker_name: Chaos::LeakMemWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :chaos -- :name: chaos:chaos_sleep - :worker_name: Chaos::SleepWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :chaos -- :name: cluster_agent:clusters_agents_delete_expired_events - :worker_name: Clusters::Agents::DeleteExpiredEventsWorker - :feature_category: :deployment_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cluster_agent -- :name: cluster_agent:clusters_agents_managed_resources_delete - :worker_name: Clusters::Agents::ManagedResources::DeleteWorker - :feature_category: :deployment_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cluster_agent -- :name: cluster_agent:clusters_agents_notify_git_push - :worker_name: Clusters::Agents::NotifyGitPushWorker - :feature_category: :deployment_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cluster_agent -- :name: container_repository:cleanup_container_repository - :worker_name: CleanupContainerRepositoryWorker - :feature_category: :container_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: :container_repository -- :name: container_repository:container_expiration_policies_cleanup_container_repository - :worker_name: ContainerExpirationPolicies::CleanupContainerRepositoryWorker - :feature_category: :container_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :container_repository -- :name: container_repository:container_registry_record_data_repair_detail - :worker_name: ContainerRegistry::RecordDataRepairDetailWorker - :feature_category: :container_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: :container_repository -- :name: container_repository_delete:container_registry_delete_container_repository - :worker_name: ContainerRegistry::DeleteContainerRepositoryWorker - :feature_category: :container_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: :container_repository_delete -- :name: cronjob:adjourned_group_deletion - :worker_name: AdjournedGroupDeletionWorker - :feature_category: :groups_and_projects - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:adjourned_projects_deletion_cron - :worker_name: AdjournedProjectsDeletionCronWorker - :feature_category: :compliance_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:admin_email - :worker_name: AdminEmailWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:analytics_usage_trends_count_job_trigger - :worker_name: Analytics::UsageTrends::CountJobTriggerWorker - :feature_category: :devops_reports - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:authorized_project_update_periodic_recalculate - :worker_name: AuthorizedProjectUpdate::PeriodicRecalculateWorker - :feature_category: :permissions - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:batched_git_ref_updates_cleanup_scheduler - :worker_name: BatchedGitRefUpdates::CleanupSchedulerWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:bulk_imports_stale_import - :worker_name: BulkImports::StaleImportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_archive_traces_cron - :worker_name: Ci::ArchiveTracesCronWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_catalog_resources_aggregate_last30_day_usage - :worker_name: Ci::Catalog::Resources::AggregateLast30DayUsageWorker - :feature_category: :pipeline_composition - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_catalog_resources_cleanup_last_usages - :worker_name: Ci::Catalog::Resources::CleanupLastUsagesWorker - :feature_category: :pipeline_composition - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_catalog_resources_process_sync_events - :worker_name: Ci::Catalog::Resources::ProcessSyncEventsWorker - :feature_category: :pipeline_composition - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_click_house_finished_pipelines_sync_cron - :worker_name: Ci::ClickHouse::FinishedPipelinesSyncCronWorker - :feature_category: :fleet_visibility - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_delete_unit_tests - :worker_name: Ci::DeleteUnitTestsWorker - :feature_category: :code_testing - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_partitioning - :worker_name: Ci::PartitioningWorker - :feature_category: :ci_scaling - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_pipeline_artifacts_expire_artifacts - :worker_name: Ci::PipelineArtifacts::ExpireArtifactsWorker - :feature_category: :job_artifacts - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_runners_reconcile_existing_runner_versions_cron - :worker_name: Ci::Runners::ReconcileExistingRunnerVersionsCronWorker - :feature_category: :fleet_visibility - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_runners_stale_machines_cleanup_cron - :worker_name: Ci::Runners::StaleMachinesCleanupCronWorker - :feature_category: :fleet_visibility - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_schedule_delete_objects_cron - :worker_name: Ci::ScheduleDeleteObjectsCronWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_schedule_old_pipelines_removal_cron - :worker_name: Ci::ScheduleOldPipelinesRemovalCronWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_schedule_unlock_pipelines_in_queue_cron - :worker_name: Ci::ScheduleUnlockPipelinesInQueueCronWorker - :feature_category: :job_artifacts - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_stuck_builds_drop_canceling - :worker_name: Ci::StuckBuilds::DropCancelingWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_stuck_builds_drop_running - :worker_name: Ci::StuckBuilds::DropRunningWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_stuck_builds_drop_scheduled - :worker_name: Ci::StuckBuilds::DropScheduledWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ci_update_locked_unknown_artifacts - :worker_name: Ci::UpdateLockedUnknownArtifactsWorker - :feature_category: :job_artifacts - :has_external_dependencies: false - :urgency: :throttled - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:concurrency_limit_resume - :worker_name: ConcurrencyLimit::ResumeWorker - :feature_category: :scalability - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:container_expiration_policy - :worker_name: ContainerExpirationPolicyWorker - :feature_category: :container_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:container_registry_cleanup - :worker_name: ContainerRegistry::CleanupWorker - :feature_category: :container_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:counters_flush_stale_counter_increments_cron - :worker_name: Gitlab::Counters::FlushStaleCounterIncrementsCronWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:database_batched_background_migration - :worker_name: Database::BatchedBackgroundMigrationWorker - :feature_category: :database - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:database_batched_background_migration_ci_database - :worker_name: Database::BatchedBackgroundMigration::CiDatabaseWorker - :feature_category: :database - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:database_batched_background_migration_sec_database - :worker_name: Database::BatchedBackgroundMigration::SecDatabaseWorker - :feature_category: :database - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:database_ci_namespace_mirrors_consistency_check - :worker_name: Database::CiNamespaceMirrorsConsistencyCheckWorker - :feature_category: :cell - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:database_ci_project_mirrors_consistency_check - :worker_name: Database::CiProjectMirrorsConsistencyCheckWorker - :feature_category: :cell - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:database_drop_detached_partitions - :worker_name: Database::DropDetachedPartitionsWorker - :feature_category: :database - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:database_monitor_locked_tables - :worker_name: Database::MonitorLockedTablesWorker - :feature_category: :cell - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:database_partition_management - :worker_name: Database::PartitionManagementWorker - :feature_category: :database - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:dependency_proxy_cleanup_dependency_proxy - :worker_name: DependencyProxy::CleanupDependencyProxyWorker - :feature_category: :virtual_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:dependency_proxy_image_ttl_group_policy - :worker_name: DependencyProxy::ImageTtlGroupPolicyWorker - :feature_category: :virtual_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:deploy_tokens_expiring - :worker_name: DeployTokens::ExpiringWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:environments_auto_delete_cron - :worker_name: Environments::AutoDeleteCronWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:environments_auto_stop_cron - :worker_name: Environments::AutoStopCronWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:expire_build_artifacts - :worker_name: ExpireBuildArtifactsWorker - :feature_category: :job_artifacts - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:export_prune_project_export_jobs - :worker_name: Gitlab::Export::PruneProjectExportJobsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:gitlab_performance_bar_stats - :worker_name: GitlabPerformanceBarStatsWorker - :feature_category: :observability - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:gitlab_service_ping - :worker_name: GitlabServicePingWorker - :feature_category: :service_ping - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:import_export_project_cleanup - :worker_name: ImportExportProjectCleanupWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:import_import_file_cleanup - :worker_name: Gitlab::Import::ImportFileCleanupWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:import_placeholder_user_cleanup - :worker_name: Import::PlaceholderUserCleanupWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:import_stuck_project_import_jobs - :worker_name: Gitlab::Import::StuckProjectImportJobsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:issue_due_scheduler - :worker_name: IssueDueSchedulerWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:issues_reschedule_stuck_issue_rebalances - :worker_name: Issues::RescheduleStuckIssueRebalancesWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:jira_import_stuck_jira_import_jobs - :worker_name: Gitlab::JiraImport::StuckJiraImportJobsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:loose_foreign_keys_cleanup - :worker_name: LooseForeignKeys::CleanupWorker - :feature_category: :database - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:loose_foreign_keys_merge_request_diff_commit_cleanup - :worker_name: LooseForeignKeys::MergeRequestDiffCommitCleanupWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:member_invitation_reminder_emails - :worker_name: MemberInvitationReminderEmailsWorker - :feature_category: :groups_and_projects - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:members_expiring - :worker_name: Members::ExpiringWorker - :feature_category: :system_access - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:members_schedule_prune_deletions - :worker_name: Members::SchedulePruneDeletionsWorker - :feature_category: :seat_cost_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:merge_requests_process_scheduled_merge - :worker_name: MergeRequests::ProcessScheduledMergeWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:metrics_global_metrics_update - :worker_name: Metrics::GlobalMetricsUpdateWorker - :feature_category: :observability - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:namespaces_enable_descendants_cache_cron - :worker_name: Namespaces::EnableDescendantsCacheCronWorker - :feature_category: :groups_and_projects - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:namespaces_process_outdated_namespace_descendants_cron - :worker_name: Namespaces::ProcessOutdatedNamespaceDescendantsCronWorker - :feature_category: :groups_and_projects - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:namespaces_prune_aggregation_schedules - :worker_name: Namespaces::PruneAggregationSchedulesWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:object_storage_delete_stale_direct_uploads - :worker_name: ObjectStorage::DeleteStaleDirectUploadsWorker - :feature_category: :job_artifacts - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:packages_cleanup_delete_orphaned_dependencies - :worker_name: Packages::Cleanup::DeleteOrphanedDependenciesWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:packages_cleanup_package_registry - :worker_name: Packages::CleanupPackageRegistryWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:packages_debian_cleanup_dangling_package_files - :worker_name: Packages::Debian::CleanupDanglingPackageFilesWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:pages_deactivate_expired_deployments_cron - :worker_name: Pages::DeactivateExpiredDeploymentsCronWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:pages_deactivated_deployments_delete_cron - :worker_name: Pages::DeactivatedDeploymentsDeleteCronWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:pages_domain_removal_cron - :worker_name: PagesDomainRemovalCronWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:pages_domain_ssl_renewal_cron - :worker_name: PagesDomainSslRenewalCronWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:pages_domain_verification_cron - :worker_name: PagesDomainVerificationCronWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:pause_control_resume - :worker_name: PauseControl::ResumeWorker - :feature_category: :global_search - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:personal_access_tokens_expired_notification - :worker_name: PersonalAccessTokens::ExpiredNotificationWorker - :feature_category: :system_access - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:personal_access_tokens_expiring - :worker_name: PersonalAccessTokens::ExpiringWorker - :feature_category: :system_access - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:pipeline_schedule - :worker_name: PipelineScheduleWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:projects_inactive_projects_deletion_cron - :worker_name: Projects::InactiveProjectsDeletionCronWorker - :feature_category: :groups_and_projects - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:projects_schedule_refresh_build_artifacts_size_statistics - :worker_name: Projects::ScheduleRefreshBuildArtifactsSizeStatisticsWorker - :feature_category: :job_artifacts - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:prune_old_events - :worker_name: PruneOldEventsWorker - :feature_category: :user_profile - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:releases_manage_evidence - :worker_name: Releases::ManageEvidenceWorker - :feature_category: :release_evidence - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:releases_publish_event - :worker_name: Releases::PublishEventWorker - :feature_category: :release_orchestration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:remove_expired_group_links - :worker_name: RemoveExpiredGroupLinksWorker - :feature_category: :system_access - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:remove_expired_members - :worker_name: RemoveExpiredMembersWorker - :feature_category: :system_access - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:remove_unaccepted_member_invites - :worker_name: RemoveUnacceptedMemberInvitesWorker - :feature_category: :system_access - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:remove_unreferenced_lfs_objects - :worker_name: RemoveUnreferencedLfsObjectsWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:repository_archive_cache - :worker_name: RepositoryArchiveCacheWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:repository_check_dispatch - :worker_name: RepositoryCheck::DispatchWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:resource_access_tokens_inactive_tokens_deletion_cron - :worker_name: ResourceAccessTokens::InactiveTokensDeletionCronWorker - :feature_category: :system_access - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:schedule_merge_request_cleanup_refs - :worker_name: ScheduleMergeRequestCleanupRefsWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:schedule_migrate_external_diffs - :worker_name: ScheduleMigrateExternalDiffsWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:scheduling_schedule_within - :worker_name: Gitlab::Scheduling::ScheduleWithinWorker - :feature_category: :scalability - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:service_desk_custom_email_verification_cleanup - :worker_name: ServiceDesk::CustomEmailVerificationCleanupWorker - :feature_category: :service_desk - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ssh_keys_expired_notification - :worker_name: SshKeys::ExpiredNotificationWorker - :feature_category: :compliance_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:ssh_keys_expiring_soon_notification - :worker_name: SshKeys::ExpiringSoonNotificationWorker - :feature_category: :compliance_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:stuck_ci_jobs - :worker_name: StuckCiJobsWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:stuck_export_jobs - :worker_name: StuckExportJobsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:stuck_merge_jobs - :worker_name: StuckMergeJobsWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:trending_projects - :worker_name: TrendingProjectsWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:update_container_registry_info - :worker_name: UpdateContainerRegistryInfoWorker - :feature_category: :container_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:user_status_cleanup_batch - :worker_name: UserStatusCleanup::BatchWorker - :feature_category: :user_profile - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:users_create_statistics - :worker_name: Users::CreateStatisticsWorker - :feature_category: :user_profile - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:users_deactivate_dormant_users - :worker_name: Users::DeactivateDormantUsersWorker - :feature_category: :seat_cost_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:users_migrate_records_to_ghost_user_in_batches - :worker_name: Users::MigrateRecordsToGhostUserInBatchesWorker - :feature_category: :user_profile - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:users_unconfirmed_secondary_emails_deletion_cron - :worker_name: Users::UnconfirmedSecondaryEmailsDeletionCronWorker - :feature_category: :user_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:version_version_check_cron - :worker_name: Gitlab::Version::VersionCheckCronWorker - :feature_category: :service_ping - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: cronjob:x509_issuer_crl_check - :worker_name: X509IssuerCrlCheckWorker - :feature_category: :source_code_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :cronjob -- :name: dependency_proxy:purge_dependency_proxy_cache - :worker_name: PurgeDependencyProxyCacheWorker - :feature_category: :virtual_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :dependency_proxy -- :name: dependency_proxy_blob:dependency_proxy_cleanup_blob - :worker_name: DependencyProxy::CleanupBlobWorker - :feature_category: :virtual_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: :dependency_proxy_blob -- :name: dependency_proxy_blob:virtual_registries_packages_cache_destroy_orphan_entries - :worker_name: VirtualRegistries::Packages::Cache::DestroyOrphanEntriesWorker - :feature_category: :virtual_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: :dependency_proxy_blob -- :name: dependency_proxy_manifest:dependency_proxy_cleanup_manifest - :worker_name: DependencyProxy::CleanupManifestWorker - :feature_category: :virtual_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: :dependency_proxy_manifest -- :name: deployment:deployments_archive_in_project - :worker_name: Deployments::ArchiveInProjectWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 3 - :idempotent: true - :tags: [] - :queue_namespace: :deployment -- :name: deployment:deployments_hooks - :worker_name: Deployments::HooksWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 3 - :idempotent: false - :tags: [] - :queue_namespace: :deployment -- :name: deployment:deployments_link_merge_request - :worker_name: Deployments::LinkMergeRequestWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 3 - :idempotent: true - :tags: [] - :queue_namespace: :deployment -- :name: deployment:deployments_update_environment - :worker_name: Deployments::UpdateEnvironmentWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 3 - :idempotent: true - :tags: [] - :queue_namespace: :deployment -- :name: gcp_cluster:cluster_configure_istio - :worker_name: ClusterConfigureIstioWorker - :feature_category: :deployment_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:cluster_install_app - :worker_name: ClusterInstallAppWorker - :feature_category: :deployment_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:cluster_patch_app - :worker_name: ClusterPatchAppWorker - :feature_category: :deployment_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:cluster_provision - :worker_name: ClusterProvisionWorker - :feature_category: :deployment_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:cluster_update_app - :worker_name: ClusterUpdateAppWorker - :feature_category: :deployment_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:cluster_upgrade_app - :worker_name: ClusterUpgradeAppWorker - :feature_category: :deployment_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:cluster_wait_for_app_installation - :worker_name: ClusterWaitForAppInstallationWorker - :feature_category: :deployment_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:cluster_wait_for_app_update - :worker_name: ClusterWaitForAppUpdateWorker - :feature_category: :deployment_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:cluster_wait_for_ingress_ip_address - :worker_name: ClusterWaitForIngressIpAddressWorker - :feature_category: :deployment_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:clusters_applications_activate_integration - :worker_name: Clusters::Applications::ActivateIntegrationWorker - :feature_category: :deployment_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:clusters_applications_deactivate_integration - :worker_name: Clusters::Applications::DeactivateIntegrationWorker - :feature_category: :deployment_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:clusters_applications_uninstall - :worker_name: Clusters::Applications::UninstallWorker - :feature_category: :deployment_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:clusters_applications_wait_for_uninstall_app - :worker_name: Clusters::Applications::WaitForUninstallAppWorker - :feature_category: :deployment_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:clusters_cleanup_project_namespace - :worker_name: Clusters::Cleanup::ProjectNamespaceWorker - :feature_category: :deployment_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:clusters_cleanup_service_account - :worker_name: Clusters::Cleanup::ServiceAccountWorker - :feature_category: :deployment_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:clusters_migration_install_agent - :worker_name: Clusters::Migration::InstallAgentWorker - :feature_category: :deployment_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :gcp_cluster -- :name: gcp_cluster:wait_for_cluster_creation - :worker_name: WaitForClusterCreationWorker - :feature_category: :deployment_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :gcp_cluster -- :name: github_gists_importer:github_gists_import_finish_import - :worker_name: Gitlab::GithubGistsImport::FinishImportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :github_gists_importer -- :name: github_gists_importer:github_gists_import_import_gist - :worker_name: Gitlab::GithubGistsImport::ImportGistWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_gists_importer -- :name: github_gists_importer:github_gists_import_start_import - :worker_name: Gitlab::GithubGistsImport::StartImportWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_gists_importer -- :name: github_importer:github_import_attachments_import_issue - :worker_name: Gitlab::GithubImport::Attachments::ImportIssueWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_attachments_import_merge_request - :worker_name: Gitlab::GithubImport::Attachments::ImportMergeRequestWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_attachments_import_note - :worker_name: Gitlab::GithubImport::Attachments::ImportNoteWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_attachments_import_release - :worker_name: Gitlab::GithubImport::Attachments::ImportReleaseWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_import_collaborator - :worker_name: Gitlab::GithubImport::ImportCollaboratorWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_import_diff_note - :worker_name: Gitlab::GithubImport::ImportDiffNoteWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_import_issue - :worker_name: Gitlab::GithubImport::ImportIssueWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_import_issue_event - :worker_name: Gitlab::GithubImport::ImportIssueEventWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_import_lfs_object - :worker_name: Gitlab::GithubImport::ImportLfsObjectWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_import_note - :worker_name: Gitlab::GithubImport::ImportNoteWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_import_protected_branch - :worker_name: Gitlab::GithubImport::ImportProtectedBranchWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_import_pull_request - :worker_name: Gitlab::GithubImport::ImportPullRequestWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_pull_requests_import_merged_by - :worker_name: Gitlab::GithubImport::PullRequests::ImportMergedByWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_pull_requests_import_review - :worker_name: Gitlab::GithubImport::PullRequests::ImportReviewWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_pull_requests_import_review_request - :worker_name: Gitlab::GithubImport::PullRequests::ImportReviewRequestWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_refresh_import_jid - :worker_name: Gitlab::GithubImport::RefreshImportJidWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_replay_events - :worker_name: Gitlab::GithubImport::ReplayEventsWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_finish_import - :worker_name: Gitlab::GithubImport::Stage::FinishImportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_attachments - :worker_name: Gitlab::GithubImport::Stage::ImportAttachmentsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_base_data - :worker_name: Gitlab::GithubImport::Stage::ImportBaseDataWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_collaborators - :worker_name: Gitlab::GithubImport::Stage::ImportCollaboratorsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_issue_events - :worker_name: Gitlab::GithubImport::Stage::ImportIssueEventsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_issues_and_diff_notes - :worker_name: Gitlab::GithubImport::Stage::ImportIssuesAndDiffNotesWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_lfs_objects - :worker_name: Gitlab::GithubImport::Stage::ImportLfsObjectsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_notes - :worker_name: Gitlab::GithubImport::Stage::ImportNotesWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_protected_branches - :worker_name: Gitlab::GithubImport::Stage::ImportProtectedBranchesWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_pull_requests - :worker_name: Gitlab::GithubImport::Stage::ImportPullRequestsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_pull_requests_merged_by - :worker_name: Gitlab::GithubImport::Stage::ImportPullRequestsMergedByWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_pull_requests_review_requests - :worker_name: Gitlab::GithubImport::Stage::ImportPullRequestsReviewRequestsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_pull_requests_reviews - :worker_name: Gitlab::GithubImport::Stage::ImportPullRequestsReviewsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: github_importer:github_import_stage_import_repository - :worker_name: Gitlab::GithubImport::Stage::ImportRepositoryWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :github_importer -- :name: incident_management:incident_management_add_severity_system_note - :worker_name: IncidentManagement::AddSeveritySystemNoteWorker - :feature_category: :incident_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :incident_management -- :name: incident_management:incident_management_pager_duty_process_incident - :worker_name: IncidentManagement::PagerDuty::ProcessIncidentWorker - :feature_category: :incident_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :incident_management -- :name: incident_management:incident_management_process_alert_worker_v2 - :worker_name: IncidentManagement::ProcessAlertWorkerV2 - :feature_category: :incident_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 2 - :idempotent: true - :tags: [] - :queue_namespace: :incident_management -- :name: jira_connect:integrations_jira_connect_remove_branch - :worker_name: Integrations::JiraConnect::RemoveBranchWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_connect -- :name: jira_connect:jira_connect_forward_event - :worker_name: JiraConnect::ForwardEventWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_connect -- :name: jira_connect:jira_connect_jira_cloud_app_deactivation - :worker_name: JiraConnect::JiraCloudAppDeactivationWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_connect -- :name: jira_connect:jira_connect_retry_request - :worker_name: JiraConnect::RetryRequestWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_connect -- :name: jira_connect:jira_connect_send_uninstalled_hook - :worker_name: JiraConnect::SendUninstalledHookWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :jira_connect -- :name: jira_connect:jira_connect_sync_branch - :worker_name: JiraConnect::SyncBranchWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_connect -- :name: jira_connect:jira_connect_sync_builds - :worker_name: JiraConnect::SyncBuildsWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_connect -- :name: jira_connect:jira_connect_sync_deployments - :worker_name: JiraConnect::SyncDeploymentsWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_connect -- :name: jira_connect:jira_connect_sync_feature_flags - :worker_name: JiraConnect::SyncFeatureFlagsWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_connect -- :name: jira_connect:jira_connect_sync_merge_request - :worker_name: JiraConnect::SyncMergeRequestWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_connect -- :name: jira_connect:jira_connect_sync_project - :worker_name: JiraConnect::SyncProjectWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_connect -- :name: jira_importer:jira_import_advance_stage - :worker_name: Gitlab::JiraImport::AdvanceStageWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_importer -- :name: jira_importer:jira_import_import_issue - :worker_name: Gitlab::JiraImport::ImportIssueWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_importer -- :name: jira_importer:jira_import_stage_finish_import - :worker_name: Gitlab::JiraImport::Stage::FinishImportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_importer -- :name: jira_importer:jira_import_stage_import_attachments - :worker_name: Gitlab::JiraImport::Stage::ImportAttachmentsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_importer -- :name: jira_importer:jira_import_stage_import_issues - :worker_name: Gitlab::JiraImport::Stage::ImportIssuesWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_importer -- :name: jira_importer:jira_import_stage_import_labels - :worker_name: Gitlab::JiraImport::Stage::ImportLabelsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_importer -- :name: jira_importer:jira_import_stage_import_notes - :worker_name: Gitlab::JiraImport::Stage::ImportNotesWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_importer -- :name: jira_importer:jira_import_stage_start_import - :worker_name: Gitlab::JiraImport::Stage::StartImportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :jira_importer -- :name: mail_scheduler:mail_scheduler_issue_due - :worker_name: MailScheduler::IssueDueWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :mail_scheduler -- :name: mail_scheduler:mail_scheduler_notification_service - :worker_name: MailScheduler::NotificationServiceWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :mail_scheduler -- :name: object_pool:object_pool_create - :worker_name: ObjectPool::CreateWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :object_pool -- :name: object_pool:object_pool_destroy - :worker_name: ObjectPool::DestroyWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :object_pool -- :name: object_pool:object_pool_join - :worker_name: ObjectPool::JoinWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :object_pool -- :name: object_pool:object_pool_schedule_join - :worker_name: ObjectPool::ScheduleJoinWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :object_pool -- :name: object_storage:object_storage_migrate_uploads - :worker_name: ObjectStorage::MigrateUploadsWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :object_storage -- :name: package_cleanup:packages_cleanup_execute_policy - :worker_name: Packages::Cleanup::ExecutePolicyWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: :package_cleanup -- :name: package_cleanup:packages_cleanup_package_file - :worker_name: Packages::CleanupPackageFileWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: :package_cleanup -- :name: package_cleanup:packages_helm_cleanup_stale_metadata_cache - :worker_name: Packages::Helm::CleanupStaleMetadataCacheWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: :package_cleanup -- :name: package_cleanup:packages_mark_package_files_for_destruction - :worker_name: Packages::MarkPackageFilesForDestructionWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_cleanup -- :name: package_cleanup:packages_npm_cleanup_stale_metadata_cache - :worker_name: Packages::Npm::CleanupStaleMetadataCacheWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: :package_cleanup -- :name: package_cleanup:packages_nuget_cleanup_stale_symbols - :worker_name: Packages::Nuget::CleanupStaleSymbolsWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: :package_cleanup -- :name: package_repositories:packages_conan_process_package_file - :worker_name: Packages::Conan::ProcessPackageFileWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_debian_generate_distribution - :worker_name: Packages::Debian::GenerateDistributionWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_debian_process_package_file - :worker_name: Packages::Debian::ProcessPackageFileWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_go_sync_packages - :worker_name: Packages::Go::SyncPackagesWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_helm_create_metadata_cache - :worker_name: Packages::Helm::CreateMetadataCacheWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_helm_extraction - :worker_name: Packages::Helm::ExtractionWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_maven_metadata_sync - :worker_name: Packages::Maven::Metadata::SyncWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_npm_create_metadata_cache - :worker_name: Packages::Npm::CreateMetadataCacheWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_npm_deprecate_package - :worker_name: Packages::Npm::DeprecatePackageWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_npm_process_package_file - :worker_name: Packages::Npm::ProcessPackageFileWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_nuget_create_symbols - :worker_name: Packages::Nuget::CreateSymbolsWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_nuget_extraction - :worker_name: Packages::Nuget::ExtractionWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_rubygems_extraction - :worker_name: Packages::Rubygems::ExtractionWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :package_repositories -- :name: package_repositories:packages_terraform_module_process_package_file - :worker_name: Packages::TerraformModule::ProcessPackageFileWorker - :feature_category: :package_registry - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :package_repositories -- :name: pipeline_background:ci_archive_trace - :worker_name: Ci::ArchiveTraceWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_background:ci_build_trace_chunk_flush - :worker_name: Ci::BuildTraceChunkFlushWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_background:ci_daily_build_group_report_results - :worker_name: Ci::DailyBuildGroupReportResultsWorker - :feature_category: :code_testing - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_background:ci_job_artifacts_track_artifact_report - :worker_name: Ci::JobArtifacts::TrackArtifactReportWorker - :feature_category: :code_testing - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_background:ci_pending_builds_update_group - :worker_name: Ci::PendingBuilds::UpdateGroupWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_background:ci_pending_builds_update_project - :worker_name: Ci::PendingBuilds::UpdateProjectWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_background:ci_pipeline_artifacts_coverage_report - :worker_name: Ci::PipelineArtifacts::CoverageReportWorker - :feature_category: :code_testing - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_background:ci_pipeline_artifacts_create_quality_report - :worker_name: Ci::PipelineArtifacts::CreateQualityReportWorker - :feature_category: :code_quality - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_background:ci_ref_delete_unlock_artifacts - :worker_name: Ci::RefDeleteUnlockArtifactsWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_background:ci_refs_unlock_previous_pipelines - :worker_name: Ci::Refs::UnlockPreviousPipelinesWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_background:ci_test_failure_history - :worker_name: Ci::TestFailureHistoryWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_background:ci_track_failed_build - :worker_name: Ci::TrackFailedBuildWorker - :feature_category: :static_application_security_testing - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_background -- :name: pipeline_creation:ci_external_pull_requests_create_pipeline - :worker_name: Ci::ExternalPullRequests::CreatePipelineWorker - :feature_category: :pipeline_composition - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 4 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_creation -- :name: pipeline_creation:create_pipeline - :worker_name: CreatePipelineWorker - :feature_category: :pipeline_composition - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 4 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_creation -- :name: pipeline_creation:merge_requests_create_pipeline - :worker_name: MergeRequests::CreatePipelineWorker - :feature_category: :pipeline_composition - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 4 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_creation -- :name: pipeline_creation:run_pipeline_schedule - :worker_name: RunPipelineScheduleWorker - :feature_category: :pipeline_composition - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 4 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_creation -- :name: pipeline_default:ci_create_downstream_pipeline - :worker_name: Ci::CreateDownstreamPipelineWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 3 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_default -- :name: pipeline_default:ci_drop_pipeline - :worker_name: Ci::DropPipelineWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 3 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_default -- :name: pipeline_default:ci_merge_requests_add_todo_when_build_fails - :worker_name: Ci::MergeRequests::AddTodoWhenBuildFailsWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 3 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_default -- :name: pipeline_default:ci_pipeline_bridge_status - :worker_name: Ci::PipelineBridgeStatusWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 3 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_default -- :name: pipeline_default:ci_pipeline_cleanup_ref - :worker_name: Ci::PipelineCleanupRefWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 3 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_default -- :name: pipeline_default:ci_retry_pipeline - :worker_name: Ci::RetryPipelineWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 3 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_default -- :name: pipeline_default:pipeline_metrics - :worker_name: PipelineMetricsWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 3 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_default -- :name: pipeline_default:pipeline_notification - :worker_name: PipelineNotificationWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 3 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_default -- :name: pipeline_hooks:pipeline_hooks - :worker_name: PipelineHooksWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_hooks -- :name: pipeline_processing:build_queue - :worker_name: BuildQueueWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 5 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_processing -- :name: pipeline_processing:ci_build_finished - :worker_name: Ci::BuildFinishedWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 5 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_processing -- :name: pipeline_processing:ci_build_prepare - :worker_name: Ci::BuildPrepareWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 5 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_processing -- :name: pipeline_processing:ci_build_schedule - :worker_name: Ci::BuildScheduleWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 5 - :idempotent: false - :tags: [] - :queue_namespace: :pipeline_processing -- :name: pipeline_processing:ci_initial_pipeline_process - :worker_name: Ci::InitialPipelineProcessWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 5 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_processing -- :name: pipeline_processing:ci_pipeline_finished - :worker_name: Ci::PipelineFinishedWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 5 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_processing -- :name: pipeline_processing:ci_resource_groups_assign_resource_from_resource_group - :worker_name: Ci::ResourceGroups::AssignResourceFromResourceGroupWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 5 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_processing -- :name: pipeline_processing:ci_resource_groups_assign_resource_from_resource_group_worker_v2 - :worker_name: Ci::ResourceGroups::AssignResourceFromResourceGroupWorkerV2 - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 5 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_processing -- :name: pipeline_processing:pipeline_process - :worker_name: PipelineProcessWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 5 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_processing -- :name: pipeline_processing:stage_update - :worker_name: StageUpdateWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 5 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_processing -- :name: pipeline_processing:update_head_pipeline_for_merge_request - :worker_name: UpdateHeadPipelineForMergeRequestWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 5 - :idempotent: true - :tags: [] - :queue_namespace: :pipeline_processing -- :name: repository_check:repository_check_batch - :worker_name: RepositoryCheck::BatchWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: - - :cronjob_child - :queue_namespace: :repository_check -- :name: repository_check:repository_check_clear - :worker_name: RepositoryCheck::ClearWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :repository_check -- :name: repository_check:repository_check_single_repository - :worker_name: RepositoryCheck::SingleRepositoryWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :repository_check -- :name: terraform:terraform_states_destroy - :worker_name: Terraform::States::DestroyWorker - :feature_category: :infrastructure_as_code - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :terraform -- :name: todos_destroyer:todos_delete_all_done - :worker_name: Todos::DeleteAllDoneWorker - :feature_category: :notifications - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :todos_destroyer -- :name: todos_destroyer:todos_destroyer_confidential_issue - :worker_name: TodosDestroyer::ConfidentialIssueWorker - :feature_category: :notifications - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :todos_destroyer -- :name: todos_destroyer:todos_destroyer_destroyed_designs - :worker_name: TodosDestroyer::DestroyedDesignsWorker - :feature_category: :notifications - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :todos_destroyer -- :name: todos_destroyer:todos_destroyer_destroyed_issuable - :worker_name: TodosDestroyer::DestroyedIssuableWorker - :feature_category: :notifications - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :todos_destroyer -- :name: todos_destroyer:todos_destroyer_entity_leave - :worker_name: TodosDestroyer::EntityLeaveWorker - :feature_category: :notifications - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :todos_destroyer -- :name: todos_destroyer:todos_destroyer_group_private - :worker_name: TodosDestroyer::GroupPrivateWorker - :feature_category: :notifications - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :todos_destroyer -- :name: todos_destroyer:todos_destroyer_private_features - :worker_name: TodosDestroyer::PrivateFeaturesWorker - :feature_category: :notifications - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :todos_destroyer -- :name: todos_destroyer:todos_destroyer_project_private - :worker_name: TodosDestroyer::ProjectPrivateWorker - :feature_category: :notifications - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: :todos_destroyer -- :name: unassign_issuables:members_destroyer_unassign_issuables - :worker_name: MembersDestroyer::UnassignIssuablesWorker - :feature_category: :user_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :unassign_issuables -- :name: update_namespace_statistics:namespaces_root_statistics - :worker_name: Namespaces::RootStatisticsWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :update_namespace_statistics -- :name: update_namespace_statistics:namespaces_schedule_aggregation - :worker_name: Namespaces::ScheduleAggregationWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: :update_namespace_statistics -- :name: adjourned_project_deletion - :worker_name: AdjournedProjectDeletionWorker - :feature_category: :groups_and_projects - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: analytics_usage_trends_counter_job - :worker_name: Analytics::UsageTrends::CounterJobWorker - :feature_category: :devops_reports - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: -- :name: anti_abuse_ban_duplicate_users - :worker_name: AntiAbuse::BanDuplicateUsersWorker - :feature_category: :instance_resiliency - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: anti_abuse_spam_abuse_events - :worker_name: AntiAbuse::SpamAbuseEventsWorker - :feature_category: :instance_resiliency - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: anti_abuse_trust_score - :worker_name: AntiAbuse::TrustScoreWorker - :feature_category: :instance_resiliency - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: anti_abuse_trust_score_cleanup - :worker_name: AntiAbuse::TrustScoreCleanupWorker - :feature_category: :instance_resiliency - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: approve_blocked_pending_approval_users - :worker_name: ApproveBlockedPendingApprovalUsersWorker - :feature_category: :user_profile - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: authorized_keys - :worker_name: AuthorizedKeysWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 2 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: authorized_projects - :worker_name: AuthorizedProjectsWorker - :feature_category: :permissions - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 2 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: batched_git_ref_updates_project_cleanup - :worker_name: BatchedGitRefUpdates::ProjectCleanupWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bitbucket_import_advance_stage - :worker_name: Gitlab::BitbucketImport::AdvanceStageWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_import_issue - :worker_name: Gitlab::BitbucketImport::ImportIssueWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_import_issue_notes - :worker_name: Gitlab::BitbucketImport::ImportIssueNotesWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_import_lfs_object - :worker_name: Gitlab::BitbucketImport::ImportLfsObjectWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_import_pull_request - :worker_name: Gitlab::BitbucketImport::ImportPullRequestWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_import_pull_request_notes - :worker_name: Gitlab::BitbucketImport::ImportPullRequestNotesWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_stage_finish_import - :worker_name: Gitlab::BitbucketImport::Stage::FinishImportWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_stage_import_issues - :worker_name: Gitlab::BitbucketImport::Stage::ImportIssuesWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_stage_import_issues_notes - :worker_name: Gitlab::BitbucketImport::Stage::ImportIssuesNotesWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_stage_import_lfs_objects - :worker_name: Gitlab::BitbucketImport::Stage::ImportLfsObjectsWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_stage_import_pull_requests - :worker_name: Gitlab::BitbucketImport::Stage::ImportPullRequestsWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_stage_import_pull_requests_notes - :worker_name: Gitlab::BitbucketImport::Stage::ImportPullRequestsNotesWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_stage_import_repository - :worker_name: Gitlab::BitbucketImport::Stage::ImportRepositoryWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_import_stage_import_users - :worker_name: Gitlab::BitbucketImport::Stage::ImportUsersWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bitbucket_server_import_advance_stage - :worker_name: Gitlab::BitbucketServerImport::AdvanceStageWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_server_import_import_lfs_object - :worker_name: Gitlab::BitbucketServerImport::ImportLfsObjectWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_server_import_import_pull_request - :worker_name: Gitlab::BitbucketServerImport::ImportPullRequestWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_server_import_import_pull_request_note - :worker_name: Gitlab::BitbucketServerImport::ImportPullRequestNoteWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_server_import_import_pull_request_notes - :worker_name: Gitlab::BitbucketServerImport::ImportPullRequestNotesWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_server_import_stage_finish_import - :worker_name: Gitlab::BitbucketServerImport::Stage::FinishImportWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_server_import_stage_import_lfs_objects - :worker_name: Gitlab::BitbucketServerImport::Stage::ImportLfsObjectsWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_server_import_stage_import_notes - :worker_name: Gitlab::BitbucketServerImport::Stage::ImportNotesWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_server_import_stage_import_pull_requests - :worker_name: Gitlab::BitbucketServerImport::Stage::ImportPullRequestsWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_server_import_stage_import_repository - :worker_name: Gitlab::BitbucketServerImport::Stage::ImportRepositoryWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: bitbucket_server_import_stage_import_users - :worker_name: Gitlab::BitbucketServerImport::Stage::ImportUsersWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_import - :worker_name: BulkImportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_imports_entity - :worker_name: BulkImports::EntityWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_imports_export_request - :worker_name: BulkImports::ExportRequestWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_imports_finish_batched_pipeline - :worker_name: BulkImports::FinishBatchedPipelineWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_imports_finish_batched_relation_export - :worker_name: BulkImports::FinishBatchedRelationExportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_imports_finish_project_import - :worker_name: BulkImports::FinishProjectImportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_imports_pipeline - :worker_name: BulkImports::PipelineWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :memory - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_imports_pipeline_batch - :worker_name: BulkImports::PipelineBatchWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :memory - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_imports_relation_batch_export - :worker_name: BulkImports::RelationBatchExportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :memory - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_imports_relation_export - :worker_name: BulkImports::RelationExportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :memory - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_imports_transform_references - :worker_name: BulkImports::TransformReferencesWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: bulk_imports_user_contributions_export - :worker_name: BulkImports::UserContributionsExportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :memory - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: chat_notification - :worker_name: ChatNotificationWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: ci_cancel_pipeline - :worker_name: Ci::CancelPipelineWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_cancel_redundant_pipelines - :worker_name: Ci::CancelRedundantPipelinesWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_click_house_finished_pipelines_sync - :worker_name: Ci::ClickHouse::FinishedPipelinesSyncWorker - :feature_category: :fleet_visibility - :has_external_dependencies: true - :urgency: :throttled - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_delete_objects - :worker_name: Ci::DeleteObjectsWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: -- :name: ci_destroy_old_pipelines - :worker_name: Ci::DestroyOldPipelinesWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: -- :name: ci_execute_build_hooks - :worker_name: Ci::ExecuteBuildHooksWorker - :feature_category: :pipeline_composition - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_initialize_pipelines_iid_sequence - :worker_name: Ci::InitializePipelinesIidSequenceWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_job_artifacts_expire_project_build_artifacts - :worker_name: Ci::JobArtifacts::ExpireProjectBuildArtifactsWorker - :feature_category: :job_artifacts - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_job_token_log_authorization - :worker_name: Ci::JobToken::LogAuthorizationWorker - :feature_category: :secrets_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_low_urgency_cancel_redundant_pipelines - :worker_name: Ci::LowUrgencyCancelRedundantPipelinesWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_parse_secure_file_metadata - :worker_name: Ci::ParseSecureFileMetadataWorker - :feature_category: :mobile_devops - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_runners_process_runner_version_update - :worker_name: Ci::Runners::ProcessRunnerVersionUpdateWorker - :feature_category: :fleet_visibility - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_safe_disable_pipeline_variables - :worker_name: Ci::SafeDisablePipelineVariablesWorker - :feature_category: :pipeline_composition - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_slsa_publish_provenance - :worker_name: Ci::Slsa::PublishProvenanceWorker - :feature_category: :artifact_security - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_unlock_pipelines_in_queue - :worker_name: Ci::UnlockPipelinesInQueueWorker - :feature_category: :job_artifacts - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: -- :name: ci_update_build_names - :worker_name: Ci::UpdateBuildNamesWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ci_user_cancel_pipeline - :worker_name: Ci::UserCancelPipelineWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: counters_cleanup_refresh - :worker_name: Counters::CleanupRefreshWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: counters_flush_stale_counter_increments - :worker_name: Gitlab::Counters::FlushStaleCounterIncrementsWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :throttled - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: create_commit_signature - :worker_name: CreateCommitSignatureWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: create_note_diff_file - :worker_name: CreateNoteDiffFileWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: database_collation_checker - :worker_name: Database::CollationCheckerWorker - :feature_category: :database - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: database_lock_tables - :worker_name: Database::LockTablesWorker - :feature_category: :cell - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: database_schema_checker - :worker_name: Database::SchemaCheckerWorker - :feature_category: :database - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: default - :worker_name: - :feature_category: :not_owned - :has_external_dependencies: - :urgency: - :resource_boundary: - :weight: 1 - :idempotent: - :tags: [] - :queue_namespace: -- :name: delete_diff_files - :worker_name: DeleteDiffFilesWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: delete_merged_branches - :worker_name: DeleteMergedBranchesWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: delete_stored_files - :worker_name: DeleteStoredFilesWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: delete_user - :worker_name: DeleteUserWorker - :feature_category: :user_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: design_management_copy_design_collection - :worker_name: DesignManagement::CopyDesignCollectionWorker - :feature_category: :design_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: design_management_new_version - :worker_name: DesignManagement::NewVersionWorker - :feature_category: :design_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :memory - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: destroy_pages_deployments - :worker_name: DestroyPagesDeploymentsWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: detect_repository_languages - :worker_name: DetectRepositoryLanguagesWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: disallow_two_factor_for_group - :worker_name: DisallowTwoFactorForGroupWorker - :feature_category: :groups_and_projects - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: disallow_two_factor_for_subgroups - :worker_name: DisallowTwoFactorForSubgroupsWorker - :feature_category: :groups_and_projects - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: email_receiver - :worker_name: EmailReceiverWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: emails_on_push - :worker_name: EmailsOnPushWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: environments_auto_recover - :worker_name: Environments::AutoRecoverWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: environments_auto_stop - :worker_name: Environments::AutoStopWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: environments_canary_ingress_update - :worker_name: Environments::CanaryIngress::UpdateWorker - :feature_category: :continuous_delivery - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: environments_recalculate_auto_stop - :worker_name: Environments::RecalculateAutoStopWorker - :feature_category: :environment_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: environments_stop_job_failed - :worker_name: Environments::StopJobFailedWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: environments_stop_job_success - :worker_name: Environments::StopJobSuccessWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: error_tracking_issue_link - :worker_name: ErrorTrackingIssueLinkWorker - :feature_category: :observability - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: export_csv - :worker_name: ExportCsvWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: external_service_reactive_caching - :worker_name: ExternalServiceReactiveCachingWorker - :feature_category: :not_owned - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: file_hook - :worker_name: FileHookWorker - :feature_category: :webhooks - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: flush_counter_increments - :worker_name: FlushCounterIncrementsWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: github_import_advance_stage - :worker_name: Gitlab::GithubImport::AdvanceStageWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: google_cloud_create_cloudsql_instance - :worker_name: GoogleCloud::CreateCloudsqlInstanceWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: google_cloud_fetch_google_ip_list - :worker_name: GoogleCloud::FetchGoogleIpListWorker - :feature_category: :job_artifacts - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: group_destroy - :worker_name: GroupDestroyWorker - :feature_category: :groups_and_projects - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: group_export - :worker_name: GroupExportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: group_import - :worker_name: GroupImportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: groups_update_statistics - :worker_name: Groups::UpdateStatisticsWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: groups_update_two_factor_requirement_for_members - :worker_name: Groups::UpdateTwoFactorRequirementForMembersWorker - :feature_category: :system_access - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: import_bulk_imports_configuration_purge - :worker_name: Import::BulkImports::ConfigurationPurgeWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: import_bulk_imports_source_users_attributes - :worker_name: Import::BulkImports::SourceUsersAttributesWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: import_delete_placeholder_user - :worker_name: Import::DeletePlaceholderUserWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: import_issues_csv - :worker_name: ImportIssuesCsvWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 2 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: import_load_placeholder_references - :worker_name: Import::LoadPlaceholderReferencesWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: import_reassign_placeholder_user_records - :worker_name: Import::ReassignPlaceholderUserRecordsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: import_refresh_import_jid - :worker_name: Gitlab::Import::RefreshImportJidWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: import_remove_import_file - :worker_name: Gitlab::Import::RemoveImportFileWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: import_user_mapping_assignment_from_csv - :worker_name: Import::UserMapping::AssignmentFromCsvWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: incident_management_close_incident - :worker_name: IncidentManagement::CloseIncidentWorker - :feature_category: :incident_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: integrations_create_external_cross_reference - :worker_name: Integrations::CreateExternalCrossReferenceWorker - :feature_category: :integrations - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: integrations_execute - :worker_name: Integrations::ExecuteWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: integrations_group_mention - :worker_name: Integrations::GroupMentionWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: integrations_irker - :worker_name: Integrations::IrkerWorker - :feature_category: :integrations - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: integrations_propagate_integration_descendant - :worker_name: Integrations::PropagateIntegrationDescendantWorker - :feature_category: :integrations - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: integrations_slack_event - :worker_name: Integrations::SlackEventWorker - :feature_category: :integrations - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: invalid_gpg_signature_update - :worker_name: InvalidGpgSignatureUpdateWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: issuable_export_csv - :worker_name: IssuableExportCsvWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: issuable_label_links_destroy - :worker_name: Issuable::LabelLinksDestroyWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: issuable_related_links_create - :worker_name: Issuable::RelatedLinksCreateWorker - :feature_category: :portfolio_management - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: issuables_clear_groups_issue_counter - :worker_name: Issuables::ClearGroupsIssueCounterWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: issues_close - :worker_name: Issues::CloseWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 2 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: issues_placement - :worker_name: Issues::PlacementWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 2 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: issues_rebalancing - :worker_name: Issues::RebalancingWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: mailers - :worker_name: ActionMailer::MailDeliveryJob - :feature_category: :not_owned - :has_external_dependencies: - :urgency: low - :resource_boundary: - :weight: 2 - :idempotent: - :tags: [] - :queue_namespace: -- :name: members_expiring_email_notification - :worker_name: Members::ExpiringEmailNotificationWorker - :feature_category: :system_access - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: -- :name: members_prune_deletions - :worker_name: Members::PruneDeletionsWorker - :feature_category: :seat_cost_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: -- :name: merge - :worker_name: MergeWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 5 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_request_cleanup_refs - :worker_name: MergeRequestCleanupRefsWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: -- :name: merge_request_mergeability_check - :worker_name: MergeRequestMergeabilityCheckWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_cleanup_ref - :worker_name: MergeRequests::CleanupRefWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_close_issue - :worker_name: MergeRequests::CloseIssueWorker - :feature_category: :code_review_workflow - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_create_approval_event - :worker_name: MergeRequests::CreateApprovalEventWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_create_approval_note - :worker_name: MergeRequests::CreateApprovalNoteWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_delete_source_branch - :worker_name: MergeRequests::DeleteSourceBranchWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_execute_approval_hooks - :worker_name: MergeRequests::ExecuteApprovalHooksWorker - :feature_category: :code_review_workflow - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_handle_assignees_change - :worker_name: MergeRequests::HandleAssigneesChangeWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_mergeability_check_batch - :worker_name: MergeRequests::MergeabilityCheckBatchWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_process_auto_merge_from_event - :worker_name: MergeRequests::ProcessAutoMergeFromEventWorker - :feature_category: :continuous_delivery - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_process_draft_note_published - :worker_name: MergeRequests::ProcessDraftNotePublishedWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_resolve_todos - :worker_name: MergeRequests::ResolveTodosWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_resolve_todos_after_approval - :worker_name: MergeRequests::ResolveTodosAfterApprovalWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: merge_requests_update_head_pipeline - :worker_name: MergeRequests::UpdateHeadPipelineWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: metrics_patched_files - :worker_name: Metrics::PatchedFilesWorker - :feature_category: :delivery - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: migrate_external_diffs - :worker_name: MigrateExternalDiffsWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: ml_experiment_tracking_associate_ml_candidate_to_package - :worker_name: Ml::ExperimentTracking::AssociateMlCandidateToPackageWorker - :feature_category: :mlops - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: namespaces_process_sync_events - :worker_name: Namespaces::ProcessSyncEventsWorker - :feature_category: :cell - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: namespaces_update_root_statistics - :worker_name: Namespaces::UpdateRootStatisticsWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: new_issue - :worker_name: NewIssueWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: new_merge_request - :worker_name: NewMergeRequestWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 2 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: new_note - :worker_name: NewNoteWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: pages - :worker_name: PagesWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: pages_deactivate_mr_deployments - :worker_name: Pages::DeactivateMrDeploymentsWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: pages_delete_pages_deployment - :worker_name: Pages::DeletePagesDeploymentWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: pages_domain_ssl_renewal - :worker_name: PagesDomainSslRenewalWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: - - :cronjob_child - :queue_namespace: -- :name: pages_domain_verification - :worker_name: PagesDomainVerificationWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: - - :cronjob_child - :queue_namespace: -- :name: pages_reset_pages_default_domain_redirect - :worker_name: Pages::ResetPagesDefaultDomainRedirectWorker - :feature_category: :pages - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: post_receive - :worker_name: PostReceive - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 5 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: process_commit - :worker_name: ProcessCommitWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 3 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: project_cache - :worker_name: ProjectCacheWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: project_destroy - :worker_name: ProjectDestroyWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: project_export - :worker_name: ProjectExportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :memory - :weight: 1 - :idempotent: false - :tags: - - :import_shared_storage - :queue_namespace: -- :name: projects_after_import - :worker_name: Projects::AfterImportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_delete_branch - :worker_name: Projects::DeleteBranchWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_finalize_project_statistics_refresh - :worker_name: Projects::FinalizeProjectStatisticsRefreshWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_forks_sync - :worker_name: Projects::Forks::SyncWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_git_garbage_collect - :worker_name: Projects::GitGarbageCollectWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: projects_import_export_after_import_merge_requests - :worker_name: Projects::ImportExport::AfterImportMergeRequestsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_import_export_create_relation_exports - :worker_name: Projects::ImportExport::CreateRelationExportsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_import_export_import_completion_notification - :worker_name: Projects::ImportExport::ImportCompletionNotificationWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_import_export_parallel_project_export - :worker_name: Projects::ImportExport::ParallelProjectExportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :memory - :weight: 1 - :idempotent: true - :tags: - - :import_shared_storage - :queue_namespace: -- :name: projects_import_export_relation_export - :worker_name: Projects::ImportExport::RelationExportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :memory - :weight: 1 - :idempotent: true - :tags: - - :import_shared_storage - :queue_namespace: -- :name: projects_import_export_relation_import - :worker_name: Projects::ImportExport::RelationImportWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :memory - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_import_export_wait_relation_exports - :worker_name: Projects::ImportExport::WaitRelationExportsWorker - :feature_category: :importers - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_inactive_projects_deletion_notification - :worker_name: Projects::InactiveProjectsDeletionNotificationWorker - :feature_category: :groups_and_projects - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: -- :name: projects_post_creation - :worker_name: Projects::PostCreationWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_process_sync_events - :worker_name: Projects::ProcessSyncEventsWorker - :feature_category: :cell - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_record_target_platforms - :worker_name: Projects::RecordTargetPlatformsWorker - :feature_category: :activation - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_refresh_build_artifacts_size_statistics - :worker_name: Projects::RefreshBuildArtifactsSizeStatisticsWorker - :feature_category: :job_artifacts - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: - - :cronjob_child - :queue_namespace: -- :name: projects_schedule_bulk_repository_shard_moves - :worker_name: Projects::ScheduleBulkRepositoryShardMovesWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :throttled - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: projects_update_repository_storage - :worker_name: Projects::UpdateRepositoryStorageWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :throttled - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: propagate_integration - :worker_name: PropagateIntegrationWorker - :feature_category: :integrations - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: propagate_integration_group - :worker_name: PropagateIntegrationGroupWorker - :feature_category: :integrations - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: propagate_integration_inherit - :worker_name: PropagateIntegrationInheritWorker - :feature_category: :integrations - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: propagate_integration_inherit_descendant - :worker_name: PropagateIntegrationInheritDescendantWorker - :feature_category: :integrations - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: propagate_integration_project - :worker_name: PropagateIntegrationProjectWorker - :feature_category: :integrations - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: reactive_caching - :worker_name: ReactiveCachingWorker - :feature_category: :not_owned - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :cpu - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: rebase - :worker_name: RebaseWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: redis_migration - :worker_name: RedisMigrationWorker - :feature_category: :redis - :has_external_dependencies: false - :urgency: :throttled - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: releases_create_evidence - :worker_name: Releases::CreateEvidenceWorker - :feature_category: :release_evidence - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: - - :cronjob_child - :queue_namespace: -- :name: remote_mirror_notification - :worker_name: RemoteMirrorNotificationWorker - :feature_category: :source_code_management +- :name: merge_requests_refresh_reviewer + :worker_name: MergeRequests::Refresh::ReviewerWorker + :feature_category: :code_review_workflow :has_external_dependencies: false :urgency: :low - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: repositories_post_receive - :worker_name: Repositories::PostReceiveWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :high :resource_boundary: :cpu - :weight: 5 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: repositories_rewrite_history - :worker_name: Repositories::RewriteHistoryWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: repository_cleanup - :worker_name: RepositoryCleanupWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: repository_fork - :worker_name: RepositoryForkWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: repository_import - :worker_name: RepositoryImportWorker - :feature_category: :importers - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :memory - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: repository_update_remote_mirror - :worker_name: RepositoryUpdateRemoteMirrorWorker - :feature_category: :source_code_management - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: service_desk_email_receiver - :worker_name: ServiceDeskEmailReceiverWorker - :feature_category: :service_desk - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 2 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: snippets_schedule_bulk_repository_shard_moves - :worker_name: Snippets::ScheduleBulkRepositoryShardMovesWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :throttled - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: snippets_update_repository_storage - :worker_name: Snippets::UpdateRepositoryStorageWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :throttled - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: ssh_keys_update_last_used_at - :worker_name: SshKeys::UpdateLastUsedAtWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: system_hook_push - :worker_name: SystemHookPushWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: update_external_pull_requests - :worker_name: UpdateExternalPullRequestsWorker - :feature_category: :continuous_integration - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 3 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: update_highest_role - :worker_name: UpdateHighestRoleWorker - :feature_category: :seat_cost_management - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown :weight: 2 :idempotent: true :tags: [] :queue_namespace: -- :name: update_merge_requests - :worker_name: UpdateMergeRequestsWorker - :feature_category: :code_review_workflow - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :cpu - :weight: 3 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: update_project_statistics - :worker_name: UpdateProjectStatisticsWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: upload_checksum - :worker_name: UploadChecksumWorker - :feature_category: :geo_replication - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: users_track_namespace_visits - :worker_name: Users::TrackNamespaceVisitsWorker - :feature_category: :navigation - :has_external_dependencies: false - :urgency: :throttled - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: web_hook - :worker_name: WebHookWorker - :feature_category: :webhooks - :has_external_dependencies: true - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: web_hooks_log_destroy - :worker_name: WebHooks::LogDestroyWorker - :feature_category: :webhooks - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: web_hooks_log_execution - :worker_name: WebHooks::LogExecutionWorker - :feature_category: :webhooks - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: wikis_git_garbage_collect - :worker_name: Wikis::GitGarbageCollectWorker - :feature_category: :gitaly - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: false - :tags: [] - :queue_namespace: -- :name: work_items_copy_timelogs - :worker_name: WorkItems::CopyTimelogsWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: work_items_import_work_items_csv - :worker_name: WorkItems::ImportWorkItemsCsvWorker - :feature_category: :team_planning - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: work_items_user_preferences_destroy - :worker_name: WorkItems::UserPreferences::DestroyWorker - :feature_category: :seat_cost_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: -- :name: x509_certificate_revoke - :worker_name: X509CertificateRevokeWorker - :feature_category: :source_code_management - :has_external_dependencies: false - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :queue_namespace: diff --git a/app/workers/merge_requests/refresh/reviewer_worker.rb b/app/workers/merge_requests/refresh/reviewer_worker.rb new file mode 100644 index 00000000000000..116e7612be92f7 --- /dev/null +++ b/app/workers/merge_requests/refresh/reviewer_worker.rb @@ -0,0 +1,33 @@ +# frozen_string_literal: true + +module MergeRequests + module Refresh + class ReviewerWorker + include ApplicationWorker + + idempotent! + deduplicate :until_executed + + feature_category :code_review_workflow + urgency :low + worker_resource_boundary :cpu + weight 2 + data_consistency :sticky + + defer_on_database_health_signal :gitlab_main, [], 10.seconds + + # NOTE: This worker will be deprecated once we switch to using events + def perform(project_id, user_id, oldrev, newrev, ref) + project = Project.find_by_id(project_id) + return unless project + + user = User.find_by_id(user_id) + return unless user + + MergeRequests::Refresh::ReviewerService + .new(project: project, current_user: user) + .execute(oldrev, newrev, ref) + end + end + end +end diff --git a/config/feature_flags/wip/split_refresh_worker_reviewer.yml b/config/feature_flags/wip/split_refresh_worker_reviewer.yml new file mode 100644 index 00000000000000..6f115ac2846b41 --- /dev/null +++ b/config/feature_flags/wip/split_refresh_worker_reviewer.yml @@ -0,0 +1,10 @@ +--- +name: split_refresh_worker_reviewer +description: +feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/554081 +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/202371 +rollout_issue_url: +milestone: '18.4' +group: group::code review +type: wip +default_enabled: false diff --git a/config/sidekiq_queues.yml b/config/sidekiq_queues.yml index 5b79f954397035..8bc8291b396642 100644 --- a/config/sidekiq_queues.yml +++ b/config/sidekiq_queues.yml @@ -1,1163 +1,7 @@ # This file is generated automatically by -# bin/rake gitlab:sidekiq:sidekiq_queues_yml:generate -# +# bin/rake gitlab:sidekiq:all_queues_yml:generate # Do not edit it manually! -# -# This configuration file should be exclusively used to set queue settings for -# Sidekiq. Any other setting should be specified using the Sidekiq CLI or the -# Sidekiq Ruby API (see config/initializers/sidekiq.rb). -# -# All the queues to process and their weights. Every queue _must_ have a weight -# defined. -# -# The available weights are as follows -# -# 1: low priority -# 2: medium priority -# 3: high priority -# 5: _super_ high priority, this should only be used for _very_ important queues -# -# The formula for calculating the likelihood of a job being popped off a queue -# (given all queues have work to perform) is: -# -# chance = (queue weight / total weight of all queues) * 100 --- :queues: -- - activity_pub - - 1 -- - adjourned_project_deletion - - 1 -- - admin_emails - - 1 -- - ai_active_context_code_mark_repository_as_ready_event - - 1 -- - ai_active_context_code_process_pending_enabled_namespace_event - - 1 -- - ai_active_context_code_repository_index - - 1 -- - ai_active_context_code_saas_initial_indexing_event - - 1 -- - ai_knowledge_graph_indexing_task - - 1 -- - ai_repository_xray_scan_dependencies - - 1 -- - analytics_ai_usage_events_backfill - - 1 -- - analytics_code_review_metrics - - 1 -- - analytics_code_suggestions_events_backfill - - 1 -- - analytics_devops_adoption_create_snapshot - - 1 -- - analytics_duo_chat_events_backfill - - 1 -- - analytics_usage_trends_counter_job - - 1 -- - anti_abuse_ban_duplicate_users - - 1 -- - anti_abuse_new_abuse_report - - 1 -- - anti_abuse_spam_abuse_events - - 1 -- - anti_abuse_trust_score - - 1 -- - anti_abuse_trust_score_cleanup - - 1 -- - app_config_cascade_duo_features_enabled - - 1 -- - app_sec_container_scanning_scan_image - - 1 -- - app_sec_dast_scanner_profiles_builds_consistency - - 1 -- - app_sec_dast_scans_consistency - - 1 -- - app_sec_dast_site_profiles_builds_consistency - - 1 -- - approval_rules_external_approval_rule_payload - - 1 -- - approve_blocked_pending_approval_users - - 1 -- - audit_events_audit_event_streaming - - 1 -- - audit_events_user_impersonation_event_create - - 1 -- - auth_saml_group_sync - - 1 -- - authn_cleanup_scim_group_memberships - - 1 -- - authn_sync_group_scim_identity_record - - 1 -- - authn_sync_group_scim_token_record - - 1 -- - authn_sync_scim_group_members - - 1 -- - authn_sync_scim_identity_record - - 1 -- - authn_sync_scim_token_record - - 1 -- - authorized_keys +- - merge_requests_refresh_reviewer - 2 -- - authorized_project_update:authorized_project_update_enqueue_group_members_refresh_authorized_projects - - 1 -- - authorized_project_update:authorized_project_update_enqueue_users_refresh_authorized_projects - - 1 -- - authorized_project_update:authorized_project_update_project_recalculate - - 1 -- - authorized_project_update:authorized_project_update_project_recalculate_per_user - - 1 -- - authorized_project_update:authorized_project_update_user_refresh_from_replica - - 1 -- - authorized_project_update:authorized_project_update_user_refresh_over_user_range - - 1 -- - authorized_project_update:authorized_project_update_user_refresh_with_low_urgency - - 2 -- - authorized_projects - - 2 -- - authz_user_group_member_roles_destroy_for_group - - 1 -- - authz_user_group_member_roles_destroy_for_shared_group - - 1 -- - authz_user_group_member_roles_update_for_group - - 1 -- - authz_user_group_member_roles_update_for_shared_group - - 1 -- - auto_devops - - 2 -- - auto_merge - - 3 -- - batched_background_migrations - - 1 -- - batched_git_ref_updates_project_cleanup - - 1 -- - bitbucket_import_advance_stage - - 1 -- - bitbucket_import_import_issue - - 1 -- - bitbucket_import_import_issue_notes - - 1 -- - bitbucket_import_import_lfs_object - - 1 -- - bitbucket_import_import_pull_request - - 1 -- - bitbucket_import_import_pull_request_notes - - 1 -- - bitbucket_import_stage_finish_import - - 1 -- - bitbucket_import_stage_import_issues - - 1 -- - bitbucket_import_stage_import_issues_notes - - 1 -- - bitbucket_import_stage_import_lfs_objects - - 1 -- - bitbucket_import_stage_import_pull_requests - - 1 -- - bitbucket_import_stage_import_pull_requests_notes - - 1 -- - bitbucket_import_stage_import_repository - - 1 -- - bitbucket_import_stage_import_users - - 1 -- - bitbucket_server_import_advance_stage - - 1 -- - bitbucket_server_import_import_lfs_object - - 1 -- - bitbucket_server_import_import_pull_request - - 1 -- - bitbucket_server_import_import_pull_request_note - - 1 -- - bitbucket_server_import_import_pull_request_notes - - 1 -- - bitbucket_server_import_stage_finish_import - - 1 -- - bitbucket_server_import_stage_import_lfs_objects - - 1 -- - bitbucket_server_import_stage_import_notes - - 1 -- - bitbucket_server_import_stage_import_pull_requests - - 1 -- - bitbucket_server_import_stage_import_repository - - 1 -- - bitbucket_server_import_stage_import_users - - 1 -- - bulk_import - - 1 -- - bulk_imports_entity - - 1 -- - bulk_imports_export_request - - 1 -- - bulk_imports_finish_batched_pipeline - - 1 -- - bulk_imports_finish_batched_relation_export - - 1 -- - bulk_imports_finish_project_import - - 1 -- - bulk_imports_pipeline - - 1 -- - bulk_imports_pipeline_batch - - 1 -- - bulk_imports_relation_batch_export - - 1 -- - bulk_imports_relation_export - - 1 -- - bulk_imports_transform_references - - 1 -- - bulk_imports_user_contributions_export - - 1 -- - chaos - - 2 -- - chat_notification - - 2 -- - ci_cancel_pipeline - - 1 -- - ci_cancel_redundant_pipelines - - 1 -- - ci_click_house_finished_pipelines_sync - - 1 -- - ci_delete_objects - - 1 -- - ci_destroy_old_pipelines - - 1 -- - ci_execute_build_hooks - - 1 -- - ci_initialize_pipelines_iid_sequence - - 1 -- - ci_job_artifacts_expire_project_build_artifacts - - 1 -- - ci_job_token_log_authorization - - 1 -- - ci_low_urgency_cancel_redundant_pipelines - - 1 -- - ci_parse_secure_file_metadata - - 1 -- - ci_runners_export_usage_csv - - 1 -- - ci_runners_process_runner_version_update - - 1 -- - ci_safe_disable_pipeline_variables - - 1 -- - ci_slsa_publish_provenance - - 1 -- - ci_unlock_pipelines_in_queue - - 1 -- - ci_update_approval_rules_for_related_mrs - - 1 -- - ci_update_build_names - - 1 -- - ci_upstream_projects_subscriptions_cleanup - - 1 -- - ci_user_cancel_pipeline - - 1 -- - click_house_buffer_sync - - 1 -- - click_house_ci_finished_builds_sync - - 1 -- - cluster_agent - - 1 -- - clusters_agents_auto_flow_merge_requests_closed_event - - 1 -- - clusters_agents_auto_flow_merge_requests_created_event - - 1 -- - clusters_agents_auto_flow_merge_requests_merged_event - - 1 -- - clusters_agents_auto_flow_merge_requests_reopened_event - - 1 -- - clusters_agents_auto_flow_merge_requests_updated_event - - 1 -- - clusters_agents_auto_flow_work_items_closed_event - - 1 -- - clusters_agents_auto_flow_work_items_created_event - - 1 -- - clusters_agents_auto_flow_work_items_reopened_event - - 1 -- - clusters_agents_auto_flow_work_items_updated_event - - 1 -- - compliance_management_chain_of_custody_report - - 1 -- - compliance_management_compliance_framework_project_compliance_statuses_removal - - 1 -- - compliance_management_compliance_framework_project_requirement_statuses_export_mailer - - 1 -- - compliance_management_compliance_framework_projects_compliance_enqueue - - 1 -- - compliance_management_compliance_violation_detection - - 1 -- - compliance_management_framework_export_mailer - - 1 -- - compliance_management_groups_compliance_violations_export_mailer - - 1 -- - compliance_management_merge_requests_compliance_violations - - 1 -- - compliance_management_pending_status_check - - 1 -- - compliance_management_pipl_update_user_country_access_logs - - 1 -- - compliance_management_pipl_user_paid_status_check - - 1 -- - compliance_management_project_compliance_evaluator - - 1 -- - compliance_management_project_framework_export_mailer - - 1 -- - compliance_management_project_settings_destroy - - 1 -- - compliance_management_standards_adherence_export_mailer - - 1 -- - compliance_management_standards_base - - 1 -- - compliance_management_standards_gitlab_at_least_two_approvals - - 1 -- - compliance_management_standards_gitlab_at_least_two_approvals_group - - 1 -- - compliance_management_standards_gitlab_dast - - 1 -- - compliance_management_standards_gitlab_dast_group - - 1 -- - compliance_management_standards_gitlab_prevent_approval_by_author - - 1 -- - compliance_management_standards_gitlab_prevent_approval_by_author_group - - 1 -- - compliance_management_standards_gitlab_prevent_approval_by_committer - - 1 -- - compliance_management_standards_gitlab_prevent_approval_by_committer_group - - 1 -- - compliance_management_standards_gitlab_sast - - 1 -- - compliance_management_standards_gitlab_sast_group - - 1 -- - compliance_management_standards_group_base - - 1 -- - compliance_management_standards_refresh - - 1 -- - compliance_management_standards_soc2_at_least_one_non_author_approval - - 1 -- - compliance_management_standards_soc2_at_least_one_non_author_approval_group - - 1 -- - compliance_management_timeout_pending_external_controls - - 1 -- - compliance_management_update_default_framework - - 1 -- - compliance_management_violation_export_mailer - - 1 -- - container_repository - - 1 -- - container_repository_delete - - 1 -- - counters_cleanup_refresh - - 1 -- - counters_flush_stale_counter_increments - - 1 -- - create_commit_signature - - 2 -- - create_github_webhook - - 2 -- - create_note_diff_file - - 1 -- - cronjob - - 1 -- - database_collation_checker - - 1 -- - database_lock_tables - - 1 -- - database_schema_checker - - 1 -- - default - - 1 -- - delete_diff_files - - 1 -- - delete_merged_branches - - 1 -- - delete_stored_files - - 1 -- - delete_user - - 1 -- - dependencies_destroy_export - - 1 -- - dependencies_export - - 1 -- - dependency_proxy - - 1 -- - dependency_proxy_blob - - 1 -- - dependency_proxy_manifest - - 1 -- - deployment - - 3 -- - design_management_copy_design_collection - - 1 -- - design_management_new_version - - 1 -- - destroy_pages_deployments - - 1 -- - detect_repository_languages - - 1 -- - disallow_two_factor_for_group - - 1 -- - disallow_two_factor_for_subgroups - - 1 -- - dora_metrics - - 1 -- - elastic_association_indexer - - 1 -- - elastic_delete_project - - 1 -- - elastic_full_index - - 1 -- - elastic_namespace_indexer - - 1 -- - elastic_namespace_rollout - - 1 -- - elastic_namespace_update - - 1 -- - elastic_project_transfer - - 1 -- - elastic_wiki_indexer - - 1 -- - email_receiver - - 2 -- - emails_on_push - - 2 -- - environments_auto_recover - - 1 -- - environments_auto_stop - - 1 -- - environments_canary_ingress_update - - 1 -- - environments_recalculate_auto_stop - - 1 -- - environments_stop_job_failed - - 1 -- - environments_stop_job_success - - 1 -- - epics - - 2 -- - epics_new_epic_issue - - 1 -- - error_tracking_issue_link - - 1 -- - export_csv - - 1 -- - export_segmented_export - - 1 -- - export_segmented_export_finalisation - - 1 -- - external_service_reactive_caching - - 1 -- - file_hook - - 1 -- - flush_counter_increments - - 1 -- - gcp_cluster - - 1 -- - geo - - 1 -- - github_gists_importer - - 1 -- - github_import_advance_stage - - 1 -- - github_importer - - 1 -- - gitlab_subscriptions_add_on_purchases_bulk_refresh_user_assignments - - 1 -- - gitlab_subscriptions_add_on_purchases_cleanup_user_add_on_assignment - - 1 -- - gitlab_subscriptions_add_on_purchases_create_user_add_on_assignment - - 1 -- - gitlab_subscriptions_add_on_purchases_destroy_user_add_on_assignment - - 1 -- - gitlab_subscriptions_add_on_purchases_email_on_duo_bulk_user_assignments - - 1 -- - gitlab_subscriptions_add_on_purchases_ldap_add_on_seat_sync - - 1 -- - gitlab_subscriptions_add_on_purchases_refresh_user_assignments - - 1 -- - gitlab_subscriptions_gitlab_com_duo_core_todo_notification - - 1 -- - gitlab_subscriptions_member_management_apply_pending_member_approvals - - 1 -- - gitlab_subscriptions_members_added - - 1 -- - gitlab_subscriptions_members_destroyed - - 1 -- - gitlab_subscriptions_members_record_last_activity - - 1 -- - gitlab_subscriptions_refresh_seats - - 1 -- - gitlab_subscriptions_seat_assignments_group_links_create_or_update_seats - - 1 -- - gitlab_subscriptions_seat_assignments_member_transfers_create_group_seats - - 1 -- - gitlab_subscriptions_seat_assignments_member_transfers_create_project_seats - - 1 -- - gitlab_subscriptions_self_managed_duo_core_todo_notification - - 1 -- - gitlab_subscriptions_trials_apply_trial - - 1 -- - google_cloud_create_cloudsql_instance - - 1 -- - google_cloud_fetch_google_ip_list - - 1 -- - group_destroy - - 1 -- - group_export - - 1 -- - group_import - - 1 -- - group_saml_group_sync - - 1 -- - group_wikis_git_garbage_collect - - 1 -- - groups_create_event - - 1 -- - groups_enterprise_users_associate - - 1 -- - groups_enterprise_users_bulk_associate_by_domain - - 1 -- - groups_enterprise_users_disassociate - - 1 -- - groups_export_memberships - - 1 -- - groups_reset_seat_callouts - - 1 -- - groups_schedule_bulk_repository_shard_moves - - 1 -- - groups_update_repository_storage - - 1 -- - groups_update_statistics - - 1 -- - groups_update_two_factor_requirement_for_members - - 1 -- - import_bulk_imports_configuration_purge - - 1 -- - import_bulk_imports_source_users_attributes - - 1 -- - import_delete_placeholder_user - - 1 -- - import_issues_csv - - 2 -- - import_load_placeholder_references - - 1 -- - import_reassign_placeholder_user_records - - 1 -- - import_refresh_import_jid - - 1 -- - import_remove_import_file - - 1 -- - import_user_mapping_assignment_from_csv - - 1 -- - incident_management - - 2 -- - incident_management_apply_incident_sla_exceeded_label - - 1 -- - incident_management_close_incident - - 1 -- - incident_management_oncall_rotations_persist_shifts_job - - 1 -- - incident_management_pending_escalations_alert_check - - 1 -- - incident_management_pending_escalations_alert_create - - 1 -- - incident_management_pending_escalations_issue_check - - 1 -- - incident_management_pending_escalations_issue_create - - 1 -- - integrations_create_external_cross_reference - - 1 -- - integrations_execute - - 1 -- - integrations_group_mention - - 1 -- - integrations_irker - - 1 -- - integrations_propagate_integration_descendant - - 1 -- - integrations_slack_event - - 1 -- - invalid_gpg_signature_update - - 2 -- - issuable_export_csv - - 1 -- - issuable_label_links_destroy - - 1 -- - issuable_related_links_create - - 1 -- - issuables_clear_groups_issue_counter - - 1 -- - issues_close - - 2 -- - issues_placement - - 2 -- - issues_rebalancing - - 1 -- - iterations - - 1 -- - jira_connect - - 1 -- - jira_importer - - 1 -- - ldap_group_sync - - 2 -- - llm_completion - - 1 -- - llm_namespace_access_cache_reset - - 1 -- - mail_scheduler - - 2 -- - mailers - - 2 -- - members_delete_pending_members - - 1 -- - members_destroyer_clean_up_group_protected_branch_rules - - 1 -- - members_expiring_email_notification - - 1 -- - members_groups_base_memberships_export - - 1 -- - members_groups_export_detailed_memberships - - 1 -- - members_prune_deletions - - 1 -- - merge - - 5 -- - merge_request_cleanup_refs - - 1 -- - merge_request_mergeability_check - - 1 -- - merge_request_reset_approvals - - 1 -- - merge_requests_approval_metrics_event - - 1 -- - merge_requests_audit_update_status_check_response - - 1 -- - merge_requests_cleanup_ref - - 1 -- - merge_requests_close_issue - - 1 -- - merge_requests_create_approval_event - - 1 -- - merge_requests_create_approval_note - - 1 -- - merge_requests_create_approvals_reset_note - - 1 -- - merge_requests_delete_source_branch - - 1 -- - merge_requests_duo_code_review_chat - - 1 -- - merge_requests_execute_approval_hooks - - 1 -- - merge_requests_handle_assignees_change - - 1 -- - merge_requests_mergeability_check_batch - - 1 -- - merge_requests_notify_approvers - - 1 -- - merge_requests_policy_violations_detected_audit_event - - 1 -- - merge_requests_policy_violations_resolved_audit_event - - 1 -- - merge_requests_process_auto_merge_from_event - - 1 -- - merge_requests_process_draft_note_published - - 1 -- - merge_requests_process_merge_audit_event - - 1 -- - merge_requests_remove_user_approval_rules - - 1 -- - merge_requests_resolve_todos - - 1 -- - merge_requests_resolve_todos_after_approval - - 1 -- - merge_requests_stream_approval_audit_event - - 1 -- - merge_requests_sync_code_owner_approval_rules - - 1 -- - merge_requests_update_head_pipeline - - 1 -- - metrics_patched_files - - 1 -- - migrate_external_diffs - - 1 -- - ml_experiment_tracking_associate_ml_candidate_to_package - - 1 -- - namespaces_cascade_duo_features_enabled - - 1 -- - namespaces_cascade_web_based_commit_signing_enabled - - 1 -- - namespaces_free_user_cap_group_over_limit_notification - - 1 -- - namespaces_process_sync_events - - 1 -- - namespaces_remove_dormant_members - - 1 -- - namespaces_storage_usage_export - - 1 -- - namespaces_sync_namespace_name - - 1 -- - namespaces_update_root_statistics - - 1 -- - new_issue - - 2 -- - new_merge_request - - 2 -- - new_note - - 2 -- - object_pool - - 1 -- - object_storage - - 1 -- - onboarding_add_on_seat_assignment_iterable_trigger - - 1 -- - onboarding_create_iterable_trigger - - 1 -- - onboarding_progress_tracking - - 1 -- - package_cleanup - - 1 -- - package_metadata_global_advisory_scan - - 1 -- - package_repositories - - 1 -- - pages - - 1 -- - pages_deactivate_mr_deployments - - 1 -- - pages_delete_pages_deployment - - 1 -- - pages_domain_ssl_renewal - - 1 -- - pages_domain_verification - - 1 -- - pages_reset_pages_default_domain_redirect - - 1 -- - personal_access_tokens - - 1 -- - pipeline_background - - 1 -- - pipeline_creation - - 4 -- - pipeline_default - - 3 -- - pipeline_hooks - - 2 -- - pipeline_processing - - 5 -- - post_receive - - 5 -- - process_commit - - 3 -- - product_analytics_initialize_snowplow_product_analytics - - 1 -- - product_analytics_move_funnels - - 1 -- - product_analytics_post_push - - 1 -- - product_analytics_sync_funnels - - 1 -- - project_cache - - 1 -- - project_destroy - - 1 -- - project_export - - 1 -- - project_import_schedule - - 1 -- - project_template_export - - 1 -- - projects_after_import - - 1 -- - projects_delete_branch - - 1 -- - projects_finalize_project_statistics_refresh - - 1 -- - projects_forks_sync - - 1 -- - projects_git_garbage_collect - - 1 -- - projects_import_export_after_import_merge_requests - - 1 -- - projects_import_export_create_relation_exports - - 1 -- - projects_import_export_import_completion_notification - - 1 -- - projects_import_export_parallel_project_export - - 1 -- - projects_import_export_relation_export - - 1 -- - projects_import_export_relation_import - - 1 -- - projects_import_export_wait_relation_exports - - 1 -- - projects_inactive_projects_deletion_notification - - 1 -- - projects_post_creation - - 1 -- - projects_process_sync_events - - 1 -- - projects_record_target_platforms - - 1 -- - projects_refresh_build_artifacts_size_statistics - - 1 -- - projects_repository_destroy - - 1 -- - projects_schedule_bulk_repository_shard_moves - - 1 -- - projects_update_repository_storage - - 1 -- - propagate_integration - - 1 -- - propagate_integration_group - - 1 -- - propagate_integration_inherit - - 1 -- - propagate_integration_inherit_descendant - - 1 -- - propagate_integration_project - - 1 -- - pull_mirrors_reenable_configuration - - 1 -- - reactive_caching - - 1 -- - rebase - - 2 -- - redis_migration - - 1 -- - refresh_license_compliance_checks - - 2 -- - releases_create_evidence - - 1 -- - remote_mirror_notification - - 2 -- - repositories_post_receive - - 5 -- - repositories_rewrite_history - - 1 -- - repository_check - - 1 -- - repository_cleanup - - 1 -- - repository_fork - - 1 -- - repository_import - - 1 -- - repository_update_mirror - - 1 -- - repository_update_remote_mirror - - 1 -- - requirements_management_import_requirements_csv - - 1 -- - requirements_management_process_requirements_reports - - 1 -- - sbom_create_occurrences_vulnerabilities - - 1 -- - sbom_graphs - - 1 -- - sbom_process_transfer_events - - 1 -- - sbom_process_vulnerabilities - - 1 -- - sbom_reports - - 1 -- - sbom_sync_archived_status - - 1 -- - sbom_sync_project_traversal_ids - - 1 -- - search_elastic_commit_indexer - - 1 -- - search_elastic_default_branch_changed - - 1 -- - search_elastic_delete - - 1 -- - search_elastic_group_association_deletion - - 1 -- - search_elastic_trigger_indexing - - 1 -- - search_namespace_index_integrity - - 1 -- - search_project_index_integrity - - 1 -- - search_wiki_elastic_delete_group_wiki - - 1 -- - search_zoekt_default_branch_changed - - 1 -- - search_zoekt_delete_project_event - - 1 -- - search_zoekt_force_update_overprovisioned_index_event - - 1 -- - search_zoekt_index_mark_as_pending_eviction_event - - 1 -- - search_zoekt_index_marked_as_ready_event - - 1 -- - search_zoekt_index_marked_as_to_delete_event - - 1 -- - search_zoekt_index_to_evict_event - - 1 -- - search_zoekt_indexing_task - - 1 -- - search_zoekt_initial_indexing_event - - 1 -- - search_zoekt_lost_node_event - - 1 -- - search_zoekt_node_with_negative_unclaimed_storage_event - - 1 -- - search_zoekt_orphaned_index_event - - 1 -- - search_zoekt_orphaned_repo_event - - 1 -- - search_zoekt_project_features_changed_event - - 1 -- - search_zoekt_project_marked_as_archived_event - - 1 -- - search_zoekt_project_transfer - - 1 -- - search_zoekt_project_visibility_changed_event - - 1 -- - search_zoekt_repo_marked_as_to_delete_event - - 1 -- - search_zoekt_repo_to_index_event - - 1 -- - search_zoekt_repo_to_reindex_event - - 1 -- - search_zoekt_saas_rollout_event - - 1 -- - search_zoekt_task_failed_event - - 1 -- - search_zoekt_update_index_used_storage_bytes_event - - 1 -- - secrets_management_provision_project_secrets_manager - - 1 -- - security_analyzer_namespace_statuses_adjustment - - 1 -- - security_analyzer_namespace_statuses_process_group_deleted_events - - 1 -- - security_analyzers_status_process_archived_events - - 1 -- - security_analyzers_status_process_deleted_events - - 1 -- - security_analyzers_status_process_group_transfer_events - - 1 -- - security_analyzers_status_process_project_transfer_events - - 1 -- - security_analyzers_status_schedule_setting_changed_update - - 1 -- - security_analyzers_status_setting_changed_update - - 1 -- - security_collect_policies_limit_audit_events - - 1 -- - security_configuration_set_group_secret_push_protection - - 1 -- - security_create_security_policy_project - - 1 -- - security_delete_approval_policy_rules - - 1 -- - security_delete_orchestration_configuration - - 1 -- - security_delete_security_policy - - 1 -- - security_generate_policy_violation_comment - - 1 -- - security_orchestration_configuration_create_bot - - 1 -- - security_orchestration_configuration_create_bot_for_namespace - - 1 -- - security_orchestration_configuration_remove_bot - - 1 -- - security_orchestration_configuration_remove_bot_for_namespace - - 1 -- - security_orchestration_policy_rule_schedule_namespace - - 1 -- - security_persist_security_policies - - 1 -- - security_pipeline_analyzers_status_update - - 1 -- - security_pipeline_execution_policies_run_schedule - - 1 -- - security_policies_failed_pipelines_audit - - 1 -- - security_policies_group_project_transfer - - 1 -- - security_policies_group_transfer - - 1 -- - security_policies_project_transfer - - 1 -- - security_policies_skip_pipelines_audit - - 1 -- - security_process_scan_result_policy - - 1 -- - security_recreate_orchestration_configuration - - 1 -- - security_refresh_project_policies - - 1 -- - security_scan_execution_policies_create_pipeline - - 1 -- - security_scan_execution_policies_rule_schedule - - 1 -- - security_scan_result_policies_add_approvers_to_rules - - 1 -- - security_scan_result_policies_cleanup_merge_request_violations - - 1 -- - security_scan_result_policies_delete_scan_result_policy_reads - - 1 -- - security_scan_result_policies_fallback_behavior_tracking - - 1 -- - security_scan_result_policies_sync_any_merge_request_approval_rules - - 1 -- - security_scan_result_policies_sync_merge_request_approvals - - 1 -- - security_scan_result_policies_sync_project - - 1 -- - security_scan_result_policies_unblock_fail_open_approval_rules - - 1 -- - security_scan_result_policies_unblock_pending_merge_request_violations - - 1 -- - security_scans - - 2 -- - security_scans_ingest_reports - - 1 -- - security_scans_purge_by_job_id - - 1 -- - security_secret_detection_gitlab_token_verification - - 1 -- - security_secret_detection_partner_token_verification - - 1 -- - security_sync_linked_pipeline_execution_policy_configs - - 1 -- - security_sync_pipeline_execution_policy_metadata - - 1 -- - security_sync_policy - - 1 -- - security_sync_policy_event - - 1 -- - security_sync_policy_violation_comment - - 1 -- - security_sync_project_policies - - 1 -- - security_sync_project_policy - - 1 -- - security_sync_scan_policies - - 1 -- - security_unassign_redundant_policy_configurations - - 1 -- - security_unenforceable_policy_rules_notification - - 1 -- - security_unenforceable_policy_rules_pipeline_notification - - 1 -- - security_vulnerability_scanning_process_sbom_scan - - 1 -- - service_desk_email_receiver - - 2 -- - set_user_status_based_on_user_cap_setting - - 1 -- - snippets_schedule_bulk_repository_shard_moves - - 1 -- - snippets_update_repository_storage - - 1 -- - ssh_keys_update_last_used_at - - 1 -- - status_page_publish - - 1 -- - sync_seat_link_request - - 1 -- - system_access_group_saml_microsoft_group_sync - - 1 -- - system_access_saml_microsoft_group_sync - - 1 -- - system_hook_push - - 1 -- - terraform - - 1 -- - todos_destroyer - - 1 -- - unassign_issuables - - 1 -- - update_external_pull_requests - - 3 -- - update_highest_role - - 2 -- - update_merge_requests - - 3 -- - update_namespace_statistics - - 1 -- - update_project_statistics - - 1 -- - upload_checksum - - 1 -- - users_experimental_communication_opt_in - - 1 -- - users_track_namespace_visits - - 1 -- - vulnerabilities_archival_archive - - 1 -- - vulnerabilities_archival_export_export - - 1 -- - vulnerabilities_archival_export_purge - - 1 -- - vulnerabilities_mark_dropped_as_resolved - - 1 -- - vulnerabilities_namespace_historical_statistics_process_transfer_events - - 1 -- - vulnerabilities_namespace_historical_statistics_update_traversal_ids - - 1 -- - vulnerabilities_namespace_statistics_adjustment - - 1 -- - vulnerabilities_namespace_statistics_process_group_delete_events - - 1 -- - vulnerabilities_namespace_statistics_process_group_transfer_events - - 1 -- - vulnerabilities_namespace_statistics_process_project_delete_events - - 1 -- - vulnerabilities_namespace_statistics_process_project_transfer_events - - 1 -- - vulnerabilities_process_archived_events - - 1 -- - vulnerabilities_process_bulk_dismissed_events - - 1 -- - vulnerabilities_process_bulk_redetected_events - - 1 -- - vulnerabilities_process_transfer_events - - 1 -- - vulnerabilities_remove_all_vulnerabilities - - 1 -- - vulnerabilities_statistics_adjustment - - 1 -- - vulnerabilities_update_archived_attribute_of_vulnerability_reads - - 1 -- - vulnerabilities_update_namespace_ids_of_vulnerability_reads - - 1 -- - vulnerabilities_update_traversal_ids_of_vulnerability_statistic - - 1 -- - vulnerability_exports_export - - 1 -- - vulnerability_exports_export_deletion - - 1 -- - vulnerability_external_issue_links_update_vulnerability_read - - 1 -- - web_hook - - 1 -- - web_hooks_log_destroy - - 1 -- - web_hooks_log_execution - - 1 -- - wikis_git_garbage_collect - - 1 -- - work_items_copy_timelogs - - 1 -- - work_items_import_work_items_csv - - 1 -- - work_items_rolledup_dates_bulk_update_handler - - 1 -- - work_items_rolledup_dates_update_milestone_related_work_item_dates_event_handler - - 1 -- - work_items_rolledup_dates_update_multiple_rolledup_dates - - 1 -- - work_items_rolledup_dates_update_rolledup_dates - - 1 -- - work_items_rolledup_dates_update_rolledup_dates_event_handler - - 1 -- - work_items_update_parent_objectives_progress - - 1 -- - work_items_user_preferences_destroy - - 1 -- - work_items_weights_update_rolled_up_weights_event_handler - - 1 -- - work_items_weights_update_weights - - 1 -- - x509_certificate_revoke - - 1 diff --git a/ee/app/services/ee/merge_requests/refresh/reviewer_service.rb b/ee/app/services/ee/merge_requests/refresh/reviewer_service.rb new file mode 100644 index 00000000000000..86295d983860df --- /dev/null +++ b/ee/app/services/ee/merge_requests/refresh/reviewer_service.rb @@ -0,0 +1,41 @@ +# frozen_string_literal: true + +module EE + module MergeRequests + module Refresh + module ReviewerService + extend ::Gitlab::Utils::Override + + private + + override :schedule_duo_code_review + def schedule_duo_code_review(merge_request) + return unless merge_request.project.auto_duo_code_review_enabled + return if merge_request.draft? + + previous_diff = merge_request.previous_diff + + return unless previous_diff && previous_diff.empty? + return unless merge_request.reviewers.duo_code_review_bot.any? + + request_duo_code_review(merge_request) + end + + override :remove_requested_changes + def remove_requested_changes + return unless @project.feature_available?(:requested_changes_block_merge_request) + + update_reviewer_service = ::MergeRequests::UpdateReviewerStateService + .new(project: @project, current_user: @current_user) + + merge_requests_for_source_branch + .select(&:merge_requests_disable_committers_approval?) + .each do |merge_request| + merge_request.destroy_requested_changes(@current_user) + update_reviewer_service.execute(merge_request, 'unreviewed') + end + end + end + end + end +end -- GitLab From 2247c32826be0e32859b4fc58fd6af30a3eb97f8 Mon Sep 17 00:00:00 2001 From: Marc Shaw Date: Tue, 2 Sep 2025 10:45:23 +0200 Subject: [PATCH 2/6] Update refresh service to integrate reviewer worker with feature flag --- app/services/merge_requests/refresh_service.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/app/services/merge_requests/refresh_service.rb b/app/services/merge_requests/refresh_service.rb index ff53fc3ca5c9a3..4362056196093f 100644 --- a/app/services/merge_requests/refresh_service.rb +++ b/app/services/merge_requests/refresh_service.rb @@ -54,6 +54,16 @@ def refresh_merge_requests! merge_request_activity_counter.track_mr_including_ci_config(user: mr.author, merge_request: mr) end + if Feature.enabled?(:split_refresh_worker_reviewer, @current_user) + MergeRequests::Refresh::ReviewerWorker.perform_async( + @project.id, + @current_user.id, + @push.oldrev, + @push.newrev, + @push.ref + ) + end + true end @@ -154,7 +164,9 @@ def reload_merge_requests if branch_and_project_match?(merge_request) || @push.force_push? merge_request.reload_diff(current_user) - schedule_duo_code_review(merge_request) + if Feature.disabled?(:split_refresh_worker_reviewer, @current_user) + schedule_duo_code_review(merge_request) + end # Clear existing merge error if the push were directed at the # source branch. Clearing the error when the target branch # changes will hide the error from the user. -- GitLab From c2156cd5a2571e330b42371408ba0cd805522d05 Mon Sep 17 00:00:00 2001 From: Marc Shaw Date: Tue, 2 Sep 2025 10:46:05 +0200 Subject: [PATCH 3/6] Update EE refresh service to conditionally handle reviewer functionality --- ee/app/services/ee/merge_requests/refresh_service.rb | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/ee/app/services/ee/merge_requests/refresh_service.rb b/ee/app/services/ee/merge_requests/refresh_service.rb index c0f18a09796fc9..10f273b085cb22 100644 --- a/ee/app/services/ee/merge_requests/refresh_service.rb +++ b/ee/app/services/ee/merge_requests/refresh_service.rb @@ -13,7 +13,9 @@ def refresh_merge_requests! super - remove_requested_changes + if Feature.disabled?(:split_refresh_worker_reviewer, current_user) + remove_requested_changes + end update_approvers_for_source_branch_merge_requests -- GitLab From 01264516d699777c5ddba1ea0bc91c75cb8a936d Mon Sep 17 00:00:00 2001 From: Marc Shaw Date: Tue, 2 Sep 2025 10:46:36 +0200 Subject: [PATCH 4/6] Add reviewer service spec --- .../refresh/reviewer_service_spec.rb | 76 +++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 spec/services/merge_requests/refresh/reviewer_service_spec.rb diff --git a/spec/services/merge_requests/refresh/reviewer_service_spec.rb b/spec/services/merge_requests/refresh/reviewer_service_spec.rb new file mode 100644 index 00000000000000..cae04e03a1af1f --- /dev/null +++ b/spec/services/merge_requests/refresh/reviewer_service_spec.rb @@ -0,0 +1,76 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe MergeRequests::Refresh::ReviewerService, feature_category: :code_review_workflow do + include ProjectForksHelper + include UserHelpers + + let(:project) { create(:project, :repository) } + let(:user) { create(:user) } + let(:service) { described_class.new(project: project, current_user: user) } + + describe '#execute' do + let(:oldrev) { TestEnv::BRANCH_SHA['improve/awesome'] } + let(:newrev) { TestEnv::BRANCH_SHA['master'] } + let(:ref) { 'refs/heads/master' } + + let!(:merge_request) do + create( + :merge_request, + source_project: project, + source_branch: 'master', + target_branch: 'feature', + target_project: project + ) + end + + let!(:another_merge_request) do + create( + :merge_request, + source_project: project, + source_branch: 'master', + target_branch: 'test', + target_project: project + ) + end + + before do + project.add_developer(user) + end + + it 'creates a push object and calls process_reviewers' do + expect(Gitlab::Git::Push).to receive(:new).with(project, oldrev, newrev, ref).and_call_original + expect(service).to receive(:process_reviewers) + + service.execute(oldrev, newrev, ref) + end + + describe 'reviewer processing' do + it 'calls schedule_duo_code_review for each merge request' do + expect(service).to receive(:schedule_duo_code_review).with(merge_request) + expect(service).to receive(:schedule_duo_code_review).with(another_merge_request) + + service.execute(oldrev, newrev, ref) + end + + it 'calls remove_requested_changes' do + expect(service).to receive(:remove_requested_changes) + + service.execute(oldrev, newrev, ref) + end + end + + describe '#schedule_duo_code_review' do + it 'is a no-op in CE' do + expect { service.send(:schedule_duo_code_review, merge_request) }.not_to raise_error + end + end + + describe '#remove_requested_changes' do + it 'is a no-op in CE' do + expect { service.send(:remove_requested_changes) }.not_to raise_error + end + end + end +end -- GitLab From 8c4ae48c2eb187e27a2174a10bdbdf04c05c683e Mon Sep 17 00:00:00 2001 From: Marc Shaw Date: Tue, 2 Sep 2025 10:51:45 +0200 Subject: [PATCH 5/6] Add missing reviewer worker spec Following the same pattern as the notification worker spec, this adds comprehensive test coverage for the ReviewerWorker including: - Worker configuration validation - Service execution with correct parameters - Error handling for missing projects/users - Idempotent behavior testing - Git reference parameter passing --- .../refresh/reviewer_worker_spec.rb | 137 ++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 spec/workers/merge_requests/refresh/reviewer_worker_spec.rb diff --git a/spec/workers/merge_requests/refresh/reviewer_worker_spec.rb b/spec/workers/merge_requests/refresh/reviewer_worker_spec.rb new file mode 100644 index 00000000000000..d4e4fe0af9aca5 --- /dev/null +++ b/spec/workers/merge_requests/refresh/reviewer_worker_spec.rb @@ -0,0 +1,137 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe MergeRequests::Refresh::ReviewerWorker, feature_category: :code_review_workflow do + include AfterNextHelpers + + let_it_be(:project) { create(:project, :repository) } + let_it_be(:user) { create(:user) } + + let(:worker) { described_class.new } + let(:oldrev) { TestEnv::BRANCH_SHA['flatten-dir'] } + let(:newrev) { TestEnv::BRANCH_SHA['improve/awesome'] } + let(:ref) { 'refs/heads/master' } + + before_all do + project.add_developer(user) + end + + it_behaves_like 'an idempotent worker' do + let(:job_args) { [project.id, user.id, oldrev, newrev, ref] } + end + + describe 'worker configuration' do + it 'has the correct feature category' do + expect(described_class.get_feature_category).to eq(:code_review_workflow) + end + + it 'has the correct urgency' do + expect(described_class.get_urgency).to eq(:low) + end + + it 'has the correct resource boundary' do + expect(described_class.get_worker_resource_boundary).to eq(:cpu) + end + + it 'has the correct weight' do + expect(described_class.get_weight).to eq(2) + end + + it 'is configured as idempotent' do + expect(described_class.idempotent?).to be_truthy + end + + it 'has deduplication configured' do + expect(described_class.get_deduplicate_strategy).to eq(:until_executed) + end + end + + describe '#perform' do + it 'calls MergeRequests::Refresh::ReviewerService#execute' do + expect_next(MergeRequests::Refresh::ReviewerService, project: project, current_user: user) + .to receive(:execute).with(oldrev, newrev, ref) + + worker.perform(project.id, user.id, oldrev, newrev, ref) + end + + it 'creates the service with correct parameters' do + service_double = instance_double(MergeRequests::Refresh::ReviewerService) + expect(MergeRequests::Refresh::ReviewerService) + .to receive(:new) + .with(project: project, current_user: user) + .and_return(service_double) + expect(service_double).to receive(:execute).with(oldrev, newrev, ref) + + worker.perform(project.id, user.id, oldrev, newrev, ref) + end + + context 'with a non-existing project' do + it 'does nothing when project does not exist' do + expect(MergeRequests::Refresh::ReviewerService).not_to receive(:new) + + worker.perform(non_existing_record_id, user.id, oldrev, newrev, ref) + end + + it 'does not raise an exception' do + expect { worker.perform(non_existing_record_id, user.id, oldrev, newrev, ref) } + .not_to raise_exception + end + end + + context 'with a non-existing user' do + it 'does nothing when user does not exist' do + expect(MergeRequests::Refresh::ReviewerService).not_to receive(:new) + + worker.perform(project.id, non_existing_record_id, oldrev, newrev, ref) + end + + it 'does not raise an exception' do + expect { worker.perform(project.id, non_existing_record_id, oldrev, newrev, ref) } + .not_to raise_exception + end + end + + context 'when both project and user do not exist' do + it 'does nothing' do + expect(MergeRequests::Refresh::ReviewerService).not_to receive(:new) + + worker.perform(non_existing_record_id, non_existing_record_id, oldrev, newrev, ref) + end + + it 'does not raise an exception' do + expect { worker.perform(non_existing_record_id, non_existing_record_id, oldrev, newrev, ref) } + .not_to raise_exception + end + end + + context 'when project exists but user does not' do + it 'returns early without calling the service' do + expect(MergeRequests::Refresh::ReviewerService).not_to receive(:new) + + worker.perform(project.id, non_existing_record_id, oldrev, newrev, ref) + end + end + + context 'when user exists but project does not' do + it 'returns early without calling the service' do + expect(MergeRequests::Refresh::ReviewerService).not_to receive(:new) + + worker.perform(non_existing_record_id, user.id, oldrev, newrev, ref) + end + end + + context 'with valid git references' do + it 'passes through the git references correctly' do + custom_oldrev = 'abc123' + custom_newrev = 'def456' + custom_ref = 'refs/heads/feature' + + expect_next(MergeRequests::Refresh::ReviewerService, project: project, current_user: user) + .to receive(:execute).with(custom_oldrev, custom_newrev, custom_ref) + + worker.perform(project.id, user.id, custom_oldrev, custom_newrev, custom_ref) + end + end + end +end -- GitLab From 09e2bcd3fe2e9344b60626ce9b610ff844cca336 Mon Sep 17 00:00:00 2001 From: Marc Shaw Date: Tue, 2 Sep 2025 10:52:35 +0200 Subject: [PATCH 6/6] Add EE reviewer service spec This adds comprehensive test coverage for the EE-specific functionality in the ReviewerService including: - Duo Code Review scheduling with various conditions: - Auto duo code review enabled/disabled - Draft merge requests - Previous diff states - Duo Code Review bot assignment - AI review feature permissions - Requested changes removal with various conditions: - License availability - Project settings for committer approval - Reviewer state updates The spec follows the same patterns as the existing EE refresh service spec and covers all the EE-specific overrides. --- .../refresh/reviewer_service_spec.rb | 201 ++++++++++++++++++ 1 file changed, 201 insertions(+) create mode 100644 ee/spec/services/ee/merge_requests/refresh/reviewer_service_spec.rb diff --git a/ee/spec/services/ee/merge_requests/refresh/reviewer_service_spec.rb b/ee/spec/services/ee/merge_requests/refresh/reviewer_service_spec.rb new file mode 100644 index 00000000000000..1fa60c54ad99aa --- /dev/null +++ b/ee/spec/services/ee/merge_requests/refresh/reviewer_service_spec.rb @@ -0,0 +1,201 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe MergeRequests::Refresh::ReviewerService, feature_category: :code_review_workflow do + include ProjectForksHelper + include UserHelpers + + let(:project) { create(:project, :repository) } + let(:user) { create(:user) } + let(:service) { described_class.new(project: project, current_user: user) } + + describe '#execute' do + let(:oldrev) { TestEnv::BRANCH_SHA['improve/awesome'] } + let(:newrev) { TestEnv::BRANCH_SHA['master'] } + let(:ref) { 'refs/heads/master' } + + let!(:merge_request) do + create( + :merge_request, + source_project: project, + source_branch: 'master', + target_branch: 'feature', + target_project: project + ) + end + + let!(:another_merge_request) do + create( + :merge_request, + source_project: project, + source_branch: 'master', + target_branch: 'test', + target_project: project + ) + end + + before do + project.add_developer(user) + end + + describe 'schedule_duo_code_review' do + let(:ai_review_allowed) { true } + + before do + allow(project) + .to receive(:auto_duo_code_review_enabled) + .and_return(auto_duo_code_review) + + allow_next_found_instance_of(MergeRequest) do |mr| + allow(mr) + .to receive(:ai_review_merge_request_allowed?) + .and_return(ai_review_allowed) + end + end + + context 'when auto_duo_code_review_enabled is false' do + let(:auto_duo_code_review) { false } + + it 'does not call ::Llm::ReviewMergeRequestService' do + expect(Llm::ReviewMergeRequestService).not_to receive(:new) + + service.execute(oldrev, newrev, ref) + end + end + + context 'when auto_duo_code_review_enabled is true' do + let(:auto_duo_code_review) { true } + + before do + create(:merge_request_diff, merge_request: merge_request, state: :empty) + end + + context 'when merge request is a draft' do + let(:merge_request) do + create( + :merge_request, + :draft_merge_request, + source_project: project, + source_branch: 'master', + target_branch: 'feature', + target_project: project + ) + end + + it 'does not call ::Llm::ReviewMergeRequestService' do + expect(Llm::ReviewMergeRequestService).not_to receive(:new) + + service.execute(oldrev, newrev, ref) + end + end + + context 'when previous diff is not empty' do + before do + create(:merge_request_diff, merge_request: merge_request) + end + + it 'does not call ::Llm::ReviewMergeRequestService' do + expect(Llm::ReviewMergeRequestService).not_to receive(:new) + + service.execute(oldrev, newrev, ref) + end + end + + context 'when Duo Code Review bot is not assigned as a reviewer' do + it 'does not call ::Llm::ReviewMergeRequestService' do + expect(Llm::ReviewMergeRequestService).not_to receive(:new) + + service.execute(oldrev, newrev, ref) + end + end + + context 'when Duo Code Review bot is assigned as a reviewer' do + before do + merge_request.reviewers = [::Users::Internal.duo_code_review_bot] + end + + context 'when AI review feature is not allowed' do + let(:ai_review_allowed) { false } + + it 'does not call ::Llm::ReviewMergeRequestService' do + expect(Llm::ReviewMergeRequestService).not_to receive(:new) + + service.execute(oldrev, newrev, ref) + end + end + + context 'when AI review feature is allowed' do + let(:ai_review_allowed) { true } + + it 'calls ::Llm::ReviewMergeRequestService' do + expect_next_instance_of(Llm::ReviewMergeRequestService, user, merge_request) do |svc| + expect(svc).to receive(:execute) + end + + service.execute(oldrev, newrev, ref) + end + end + end + end + end + + describe 'remove_requested_changes' do + let(:current_user) { user } + + before do + create(:merge_request_requested_changes, merge_request: merge_request, project: merge_request.project, + user: current_user) + end + + context 'when project does not have the right license' do + before do + stub_licensed_features(requested_changes_block_merge_request: false) + end + + it 'does not call merge_request.destroy_requested_changes' do + expect { service.execute(oldrev, newrev, ref) }.not_to change { merge_request.requested_changes.count }.from(1) + end + end + + context 'when licensed feature is available' do + before do + stub_licensed_features(requested_changes_block_merge_request: true) + end + + context 'when merge_requests_disable_committers_approval is disabled' do + before do + project.update!(merge_requests_disable_committers_approval: false) + end + + it 'does not call merge_request.destroy_requested_changes' do + expect { service.execute(oldrev, newrev, ref) }.not_to change { merge_request.requested_changes.count }.from(1) + end + end + + context 'when merge_requests_disable_committers_approval is enabled' do + before do + project.update!(merge_requests_disable_committers_approval: true) + end + + it 'calls merge_request.destroy_requested_changes' do + expect { service.execute(oldrev, newrev, ref) }.to change { merge_request.requested_changes.count }.from(1).to(0) + end + + context 'when user is a reviewer' do + before do + create(:merge_request_reviewer, merge_request: merge_request, reviewer: current_user, state: 'reviewed') + project.add_developer(current_user) + end + + it 'updates reviewer state to unreviewed' do + service.execute(oldrev, newrev, ref) + + expect(merge_request.merge_request_reviewers.first).to be_unreviewed + end + end + end + end + end + end +end -- GitLab