diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-20 11:10:13 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-06-20 11:10:13 +0000 |
commit | 0ea3fcec397b69815975647f5e2aa5fe944a8486 (patch) | |
tree | 7979381b89d26011bcf9bdc989a40fcc2f1ed4ff /app/workers | |
parent | 72123183a20411a36d607d70b12d57c484394c8e (diff) | |
download | gitlab-ce-0ea3fcec397b69815975647f5e2aa5fe944a8486.tar.gz |
Add latest changes from gitlab-org/gitlab@15-1-stable-eev15.1.0-rc42
Diffstat (limited to 'app/workers')
48 files changed, 1198 insertions, 1291 deletions
diff --git a/app/workers/all_queues.yml b/app/workers/all_queues.yml index 8a525e455fd..ab75abff9ba 100644 --- a/app/workers/all_queues.yml +++ b/app/workers/all_queues.yml @@ -6,7 +6,7 @@ - :name: authorized_project_update:authorized_project_update_project_recalculate :worker_name: AuthorizedProjectUpdate::ProjectRecalculateWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 1 @@ -15,7 +15,7 @@ - :name: authorized_project_update:authorized_project_update_project_recalculate_per_user :worker_name: AuthorizedProjectUpdate::ProjectRecalculatePerUserWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 1 @@ -24,7 +24,7 @@ - :name: authorized_project_update:authorized_project_update_user_refresh_from_replica :worker_name: AuthorizedProjectUpdate::UserRefreshFromReplicaWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -33,7 +33,7 @@ - :name: authorized_project_update:authorized_project_update_user_refresh_over_user_range :worker_name: AuthorizedProjectUpdate::UserRefreshOverUserRangeWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -42,79 +42,79 @@ - :name: authorized_project_update:authorized_project_update_user_refresh_with_low_urgency :worker_name: AuthorizedProjectUpdate::UserRefreshWithLowUrgencyWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown - :weight: 1 + :weight: 2 :idempotent: true :tags: [] - :name: auto_devops:auto_devops_disable :worker_name: AutoDevops::DisableWorker :feature_category: :auto_devops - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: auto_merge:auto_merge_process :worker_name: AutoMergeProcessWorker :feature_category: :continuous_delivery - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 3 - :idempotent: + :idempotent: false :tags: [] - :name: chaos:chaos_cpu_spin :worker_name: Chaos::CpuSpinWorker :feature_category: :not_owned - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: chaos:chaos_db_spin :worker_name: Chaos::DbSpinWorker :feature_category: :not_owned - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: chaos:chaos_kill :worker_name: Chaos::KillWorker :feature_category: :not_owned - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: chaos:chaos_leak_mem :worker_name: Chaos::LeakMemWorker :feature_category: :not_owned - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: chaos:chaos_sleep :worker_name: Chaos::SleepWorker :feature_category: :not_owned - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: cluster_agent:clusters_agents_delete_expired_events :worker_name: Clusters::Agents::DeleteExpiredEventsWorker :feature_category: :kubernetes_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -123,7 +123,7 @@ - :name: container_repository:cleanup_container_repository :worker_name: CleanupContainerRepositoryWorker :feature_category: :container_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -132,7 +132,7 @@ - :name: container_repository:container_expiration_policies_cleanup_container_repository :worker_name: ContainerExpirationPolicies::CleanupContainerRepositoryWorker :feature_category: :container_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -141,25 +141,25 @@ - :name: container_repository:delete_container_repository :worker_name: DeleteContainerRepositoryWorker :feature_category: :container_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:admin_email :worker_name: AdminEmailWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:analytics_usage_trends_count_job_trigger :worker_name: Analytics::UsageTrends::CountJobTriggerWorker :feature_category: :devops_reports - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -168,7 +168,7 @@ - :name: cronjob:authorized_project_update_periodic_recalculate :worker_name: AuthorizedProjectUpdate::PeriodicRecalculateWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -177,7 +177,7 @@ - :name: cronjob:bulk_imports_stuck_import :worker_name: BulkImports::StuckImportWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -186,16 +186,16 @@ - :name: cronjob:ci_archive_traces_cron :worker_name: Ci::ArchiveTracesCronWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:ci_delete_unit_tests :worker_name: Ci::DeleteUnitTestsWorker :feature_category: :code_testing - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -204,7 +204,7 @@ - :name: cronjob:ci_pipeline_artifacts_expire_artifacts :worker_name: Ci::PipelineArtifacts::ExpireArtifactsWorker :feature_category: :build_artifacts - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -213,16 +213,16 @@ - :name: cronjob:ci_platform_metrics_update_cron :worker_name: CiPlatformMetricsUpdateCronWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:ci_schedule_delete_objects_cron :worker_name: Ci::ScheduleDeleteObjectsCronWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -231,7 +231,7 @@ - :name: cronjob:ci_stuck_builds_drop_running :worker_name: Ci::StuckBuilds::DropRunningWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -240,7 +240,7 @@ - :name: cronjob:ci_stuck_builds_drop_scheduled :worker_name: Ci::StuckBuilds::DropScheduledWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -249,11 +249,11 @@ - :name: cronjob:ci_update_locked_unknown_artifacts :worker_name: Ci::UpdateLockedUnknownArtifactsWorker :feature_category: :build_artifacts - :has_external_dependencies: + :has_external_dependencies: false :urgency: :throttled :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:clusters_integrations_check_prometheus_health :worker_name: Clusters::Integrations::CheckPrometheusHealthWorker @@ -267,16 +267,16 @@ - :name: cronjob:container_expiration_policy :worker_name: ContainerExpirationPolicyWorker :feature_category: :container_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:container_registry_migration_enqueuer :worker_name: ContainerRegistry::Migration::EnqueuerWorker :feature_category: :container_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -285,7 +285,7 @@ - :name: cronjob:container_registry_migration_guard :worker_name: ContainerRegistry::Migration::GuardWorker :feature_category: :container_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -294,7 +294,7 @@ - :name: cronjob:container_registry_migration_observer :worker_name: ContainerRegistry::Migration::ObserverWorker :feature_category: :container_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -303,7 +303,7 @@ - :name: cronjob:database_batched_background_migration :worker_name: Database::BatchedBackgroundMigrationWorker :feature_category: :database - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -312,7 +312,7 @@ - :name: cronjob:database_batched_background_migration_ci_database :worker_name: Database::BatchedBackgroundMigration::CiDatabaseWorker :feature_category: :database - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -320,8 +320,8 @@ :tags: [] - :name: cronjob:database_ci_namespace_mirrors_consistency_check :worker_name: Database::CiNamespaceMirrorsConsistencyCheckWorker - :feature_category: :sharding - :has_external_dependencies: + :feature_category: :pods + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -329,8 +329,8 @@ :tags: [] - :name: cronjob:database_ci_project_mirrors_consistency_check :worker_name: Database::CiProjectMirrorsConsistencyCheckWorker - :feature_category: :sharding - :has_external_dependencies: + :feature_category: :pods + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -339,7 +339,7 @@ - :name: cronjob:database_drop_detached_partitions :worker_name: Database::DropDetachedPartitionsWorker :feature_category: :database - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -348,7 +348,7 @@ - :name: cronjob:database_partition_management :worker_name: Database::PartitionManagementWorker :feature_category: :database - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -357,7 +357,7 @@ - :name: cronjob:dependency_proxy_cleanup_dependency_proxy :worker_name: DependencyProxy::CleanupDependencyProxyWorker :feature_category: :dependency_proxy - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -366,16 +366,16 @@ - :name: cronjob:dependency_proxy_image_ttl_group_policy :worker_name: DependencyProxy::ImageTtlGroupPolicyWorker :feature_category: :dependency_proxy - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:environments_auto_delete_cron :worker_name: Environments::AutoDeleteCronWorker :feature_category: :continuous_delivery - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -384,61 +384,61 @@ - :name: cronjob:environments_auto_stop_cron :worker_name: Environments::AutoStopCronWorker :feature_category: :continuous_delivery - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:expire_build_artifacts :worker_name: ExpireBuildArtifactsWorker :feature_category: :build_artifacts - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:gitlab_service_ping :worker_name: GitlabServicePingWorker :feature_category: :service_ping - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:import_export_project_cleanup :worker_name: ImportExportProjectCleanupWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:import_stuck_project_import_jobs :worker_name: Gitlab::Import::StuckProjectImportJobsWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:issue_due_scheduler :worker_name: IssueDueSchedulerWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:issues_reschedule_stuck_issue_rebalances :worker_name: Issues::RescheduleStuckIssueRebalancesWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -447,16 +447,16 @@ - :name: cronjob:jira_import_stuck_jira_import_jobs :worker_name: Gitlab::JiraImport::StuckJiraImportJobsWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:loose_foreign_keys_cleanup :worker_name: LooseForeignKeys::CleanupWorker - :feature_category: :sharding - :has_external_dependencies: + :feature_category: :pods + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -465,16 +465,16 @@ - :name: cronjob:member_invitation_reminder_emails :worker_name: MemberInvitationReminderEmailsWorker :feature_category: :subgroups - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:metrics_dashboard_schedule_annotations_prune :worker_name: Metrics::Dashboard::ScheduleAnnotationsPruneWorker :feature_category: :metrics - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -483,25 +483,25 @@ - :name: cronjob:namespaces_in_product_marketing_emails :worker_name: Namespaces::InProductMarketingEmailsWorker :feature_category: :experimentation_activation - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:namespaces_prune_aggregation_schedules :worker_name: Namespaces::PruneAggregationSchedulesWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:packages_cleanup_package_registry :worker_name: Packages::CleanupPackageRegistryWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -510,7 +510,7 @@ - :name: cronjob:packages_composer_cache_cleanup :worker_name: Packages::Composer::CacheCleanupWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -519,34 +519,34 @@ - :name: cronjob:pages_domain_removal_cron :worker_name: PagesDomainRemovalCronWorker :feature_category: :pages - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:pages_domain_ssl_renewal_cron :worker_name: PagesDomainSslRenewalCronWorker :feature_category: :pages - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:pages_domain_verification_cron :worker_name: PagesDomainVerificationCronWorker :feature_category: :pages - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:partition_creation :worker_name: PartitionCreationWorker :feature_category: :database - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -555,34 +555,34 @@ - :name: cronjob:personal_access_tokens_expired_notification :worker_name: PersonalAccessTokens::ExpiredNotificationWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:personal_access_tokens_expiring :worker_name: PersonalAccessTokens::ExpiringWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:pipeline_schedule :worker_name: PipelineScheduleWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:projects_inactive_projects_deletion_cron :worker_name: Projects::InactiveProjectsDeletionCronWorker :feature_category: :compliance_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -591,7 +591,7 @@ - :name: cronjob:projects_schedule_refresh_build_artifacts_size_statistics :worker_name: Projects::ScheduleRefreshBuildArtifactsSizeStatisticsWorker :feature_category: :build_artifacts - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -600,43 +600,43 @@ - :name: cronjob:prune_old_events :worker_name: PruneOldEventsWorker :feature_category: :users - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:releases_manage_evidence :worker_name: Releases::ManageEvidenceWorker :feature_category: :release_evidence - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:remove_expired_group_links :worker_name: RemoveExpiredGroupLinksWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:remove_expired_members :worker_name: RemoveExpiredMembersWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:remove_unaccepted_member_invites :worker_name: RemoveUnacceptedMemberInvitesWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -645,7 +645,7 @@ - :name: cronjob:remove_unreferenced_lfs_objects :worker_name: RemoveUnreferencedLfsObjectsWorker :feature_category: :git_lfs - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -654,25 +654,25 @@ - :name: cronjob:repository_archive_cache :worker_name: RepositoryArchiveCacheWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:repository_check_dispatch :worker_name: RepositoryCheck::DispatchWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:schedule_merge_request_cleanup_refs :worker_name: ScheduleMergeRequestCleanupRefsWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -681,16 +681,16 @@ - :name: cronjob:schedule_migrate_external_diffs :worker_name: ScheduleMigrateExternalDiffsWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:ssh_keys_expired_notification :worker_name: SshKeys::ExpiredNotificationWorker :feature_category: :compliance_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -699,7 +699,7 @@ - :name: cronjob:ssh_keys_expiring_soon_notification :worker_name: SshKeys::ExpiringSoonNotificationWorker :feature_category: :compliance_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -708,43 +708,43 @@ - :name: cronjob:stuck_ci_jobs :worker_name: StuckCiJobsWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:stuck_export_jobs :worker_name: StuckExportJobsWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:stuck_merge_jobs :worker_name: StuckMergeJobsWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:trending_projects :worker_name: TrendingProjectsWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:update_container_registry_info :worker_name: UpdateContainerRegistryInfoWorker :feature_category: :container_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -753,7 +753,7 @@ - :name: cronjob:user_status_cleanup_batch :worker_name: UserStatusCleanup::BatchWorker :feature_category: :users - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -762,20 +762,20 @@ - :name: cronjob:users_create_statistics :worker_name: Users::CreateStatisticsWorker :feature_category: :users - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:users_deactivate_dormant_users :worker_name: Users::DeactivateDormantUsersWorker :feature_category: :utilization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: cronjob:x509_issuer_crl_check :worker_name: X509IssuerCrlCheckWorker @@ -789,7 +789,7 @@ - :name: dependency_proxy:purge_dependency_proxy_cache :worker_name: PurgeDependencyProxyCacheWorker :feature_category: :dependency_proxy - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -798,7 +798,7 @@ - :name: dependency_proxy_blob:dependency_proxy_cleanup_blob :worker_name: DependencyProxy::CleanupBlobWorker :feature_category: :dependency_proxy - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -807,7 +807,7 @@ - :name: dependency_proxy_manifest:dependency_proxy_cleanup_manifest :worker_name: DependencyProxy::CleanupManifestWorker :feature_category: :dependency_proxy - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -816,7 +816,7 @@ - :name: deployment:deployments_archive_in_project :worker_name: Deployments::ArchiveInProjectWorker :feature_category: :continuous_delivery - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 3 @@ -825,25 +825,25 @@ - :name: deployment:deployments_drop_older_deployments :worker_name: Deployments::DropOlderDeploymentsWorker :feature_category: :continuous_delivery - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 3 - :idempotent: + :idempotent: false :tags: [] - :name: deployment:deployments_hooks :worker_name: Deployments::HooksWorker :feature_category: :continuous_delivery - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 3 - :idempotent: + :idempotent: false :tags: [] - :name: deployment:deployments_link_merge_request :worker_name: Deployments::LinkMergeRequestWorker :feature_category: :continuous_delivery - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 3 @@ -852,7 +852,7 @@ - :name: deployment:deployments_update_environment :worker_name: Deployments::UpdateEnvironmentWorker :feature_category: :continuous_delivery - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 3 @@ -865,7 +865,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:cluster_install_app :worker_name: ClusterInstallAppWorker @@ -874,7 +874,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:cluster_patch_app :worker_name: ClusterPatchAppWorker @@ -883,7 +883,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:cluster_provision :worker_name: ClusterProvisionWorker @@ -892,16 +892,16 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:cluster_update_app :worker_name: ClusterUpdateAppWorker :feature_category: :kubernetes_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:cluster_upgrade_app :worker_name: ClusterUpgradeAppWorker @@ -910,7 +910,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:cluster_wait_for_app_installation :worker_name: ClusterWaitForAppInstallationWorker @@ -919,16 +919,16 @@ :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:cluster_wait_for_app_update :worker_name: ClusterWaitForAppUpdateWorker :feature_category: :kubernetes_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:cluster_wait_for_ingress_ip_address :worker_name: ClusterWaitForIngressIpAddressWorker @@ -937,25 +937,43 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false + :tags: [] +- :name: gcp_cluster:clusters_applications_activate_integration + :worker_name: Clusters::Applications::ActivateIntegrationWorker + :feature_category: :kubernetes_management + :has_external_dependencies: false + :urgency: :low + :resource_boundary: :unknown + :weight: 1 + :idempotent: false :tags: [] - :name: gcp_cluster:clusters_applications_activate_service :worker_name: Clusters::Applications::ActivateServiceWorker :feature_category: :kubernetes_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false + :tags: [] +- :name: gcp_cluster:clusters_applications_deactivate_integration + :worker_name: Clusters::Applications::DeactivateIntegrationWorker + :feature_category: :kubernetes_management + :has_external_dependencies: false + :urgency: :low + :resource_boundary: :unknown + :weight: 1 + :idempotent: false :tags: [] - :name: gcp_cluster:clusters_applications_deactivate_service :worker_name: Clusters::Applications::DeactivateServiceWorker :feature_category: :kubernetes_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:clusters_applications_uninstall :worker_name: Clusters::Applications::UninstallWorker @@ -964,7 +982,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:clusters_applications_wait_for_uninstall_app :worker_name: Clusters::Applications::WaitForUninstallAppWorker @@ -973,7 +991,7 @@ :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:clusters_cleanup_project_namespace :worker_name: Clusters::Cleanup::ProjectNamespaceWorker @@ -982,7 +1000,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:clusters_cleanup_service_account :worker_name: Clusters::Cleanup::ServiceAccountWorker @@ -991,7 +1009,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gcp_cluster:wait_for_cluster_creation :worker_name: WaitForClusterCreationWorker @@ -1000,7 +1018,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_import_diff_note :worker_name: Gitlab::GithubImport::ImportDiffNoteWorker @@ -1009,7 +1027,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_import_issue :worker_name: Gitlab::GithubImport::ImportIssueWorker @@ -1018,7 +1036,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_import_lfs_object :worker_name: Gitlab::GithubImport::ImportLfsObjectWorker @@ -1027,7 +1045,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_import_note :worker_name: Gitlab::GithubImport::ImportNoteWorker @@ -1036,7 +1054,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_import_pull_request :worker_name: Gitlab::GithubImport::ImportPullRequestWorker @@ -1045,7 +1063,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_import_pull_request_merged_by :worker_name: Gitlab::GithubImport::ImportPullRequestMergedByWorker @@ -1054,7 +1072,7 @@ :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_import_pull_request_review :worker_name: Gitlab::GithubImport::ImportPullRequestReviewWorker @@ -1063,156 +1081,156 @@ :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_refresh_import_jid :worker_name: Gitlab::GithubImport::RefreshImportJidWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_stage_finish_import :worker_name: Gitlab::GithubImport::Stage::FinishImportWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_stage_import_base_data :worker_name: Gitlab::GithubImport::Stage::ImportBaseDataWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_stage_import_issues_and_diff_notes :worker_name: Gitlab::GithubImport::Stage::ImportIssuesAndDiffNotesWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_stage_import_lfs_objects :worker_name: Gitlab::GithubImport::Stage::ImportLfsObjectsWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_stage_import_notes :worker_name: Gitlab::GithubImport::Stage::ImportNotesWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_stage_import_pull_requests :worker_name: Gitlab::GithubImport::Stage::ImportPullRequestsWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_stage_import_pull_requests_merged_by :worker_name: Gitlab::GithubImport::Stage::ImportPullRequestsMergedByWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_stage_import_pull_requests_reviews :worker_name: Gitlab::GithubImport::Stage::ImportPullRequestsReviewsWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: github_importer:github_import_stage_import_repository :worker_name: Gitlab::GithubImport::Stage::ImportRepositoryWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: hashed_storage:hashed_storage_migrator :worker_name: HashedStorage::MigratorWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: hashed_storage:hashed_storage_project_migrate :worker_name: HashedStorage::ProjectMigrateWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: hashed_storage:hashed_storage_project_rollback :worker_name: HashedStorage::ProjectRollbackWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: hashed_storage:hashed_storage_rollbacker :worker_name: HashedStorage::RollbackerWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: incident_management:incident_management_add_severity_system_note :worker_name: IncidentManagement::AddSeveritySystemNoteWorker :feature_category: :incident_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: incident_management:incident_management_pager_duty_process_incident :worker_name: IncidentManagement::PagerDuty::ProcessIncidentWorker :feature_category: :incident_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: incident_management:incident_management_process_alert_worker_v2 :worker_name: IncidentManagement::ProcessAlertWorkerV2 :feature_category: :incident_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 2 @@ -1225,7 +1243,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_connect:jira_connect_retry_request :worker_name: JiraConnect::RetryRequestWorker @@ -1234,7 +1252,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_connect:jira_connect_sync_branch :worker_name: JiraConnect::SyncBranchWorker @@ -1243,7 +1261,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_connect:jira_connect_sync_builds :worker_name: JiraConnect::SyncBuildsWorker @@ -1252,7 +1270,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_connect:jira_connect_sync_deployments :worker_name: JiraConnect::SyncDeploymentsWorker @@ -1261,7 +1279,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_connect:jira_connect_sync_feature_flags :worker_name: JiraConnect::SyncFeatureFlagsWorker @@ -1270,7 +1288,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_connect:jira_connect_sync_merge_request :worker_name: JiraConnect::SyncMergeRequestWorker @@ -1279,7 +1297,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_connect:jira_connect_sync_project :worker_name: JiraConnect::SyncProjectWorker @@ -1288,156 +1306,156 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_importer:jira_import_advance_stage :worker_name: Gitlab::JiraImport::AdvanceStageWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_importer:jira_import_import_issue :worker_name: Gitlab::JiraImport::ImportIssueWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_importer:jira_import_stage_finish_import :worker_name: Gitlab::JiraImport::Stage::FinishImportWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_importer:jira_import_stage_import_attachments :worker_name: Gitlab::JiraImport::Stage::ImportAttachmentsWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_importer:jira_import_stage_import_issues :worker_name: Gitlab::JiraImport::Stage::ImportIssuesWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_importer:jira_import_stage_import_labels :worker_name: Gitlab::JiraImport::Stage::ImportLabelsWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_importer:jira_import_stage_import_notes :worker_name: Gitlab::JiraImport::Stage::ImportNotesWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: jira_importer:jira_import_stage_start_import :worker_name: Gitlab::JiraImport::Stage::StartImportWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: mail_scheduler:mail_scheduler_issue_due :worker_name: MailScheduler::IssueDueWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: mail_scheduler:mail_scheduler_notification_service :worker_name: MailScheduler::NotificationServiceWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: object_pool:object_pool_create :worker_name: ObjectPool::CreateWorker :feature_category: :gitaly - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: object_pool:object_pool_destroy :worker_name: ObjectPool::DestroyWorker :feature_category: :gitaly - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: object_pool:object_pool_join :worker_name: ObjectPool::JoinWorker :feature_category: :gitaly - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: object_pool:object_pool_schedule_join :worker_name: ObjectPool::ScheduleJoinWorker :feature_category: :gitaly - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: object_storage:object_storage_background_move :worker_name: ObjectStorage::BackgroundMoveWorker :feature_category: :not_owned - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: object_storage:object_storage_migrate_uploads :worker_name: ObjectStorage::MigrateUploadsWorker :feature_category: :not_owned - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: package_cleanup:packages_cleanup_package_file :worker_name: Packages::CleanupPackageFileWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1446,7 +1464,7 @@ - :name: package_cleanup:packages_mark_package_files_for_destruction :worker_name: Packages::MarkPackageFilesForDestructionWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1455,7 +1473,7 @@ - :name: package_repositories:packages_debian_generate_distribution :worker_name: Packages::Debian::GenerateDistributionWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1464,7 +1482,7 @@ - :name: package_repositories:packages_debian_process_changes :worker_name: Packages::Debian::ProcessChangesWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1473,7 +1491,7 @@ - :name: package_repositories:packages_go_sync_packages :worker_name: Packages::Go::SyncPackagesWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1482,7 +1500,7 @@ - :name: package_repositories:packages_helm_extraction :worker_name: Packages::Helm::ExtractionWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1491,7 +1509,7 @@ - :name: package_repositories:packages_maven_metadata_sync :worker_name: Packages::Maven::Metadata::SyncWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1500,43 +1518,43 @@ - :name: package_repositories:packages_nuget_extraction :worker_name: Packages::Nuget::ExtractionWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: package_repositories:packages_rubygems_extraction :worker_name: Packages::Rubygems::ExtractionWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_background:archive_trace :worker_name: ArchiveTraceWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_background:ci_archive_trace :worker_name: Ci::ArchiveTraceWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_background:ci_build_trace_chunk_flush :worker_name: Ci::BuildTraceChunkFlushWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1545,7 +1563,7 @@ - :name: pipeline_background:ci_daily_build_group_report_results :worker_name: Ci::DailyBuildGroupReportResultsWorker :feature_category: :code_testing - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1554,7 +1572,7 @@ - :name: pipeline_background:ci_pending_builds_update_group :worker_name: Ci::PendingBuilds::UpdateGroupWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1563,7 +1581,7 @@ - :name: pipeline_background:ci_pending_builds_update_project :worker_name: Ci::PendingBuilds::UpdateProjectWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1572,7 +1590,7 @@ - :name: pipeline_background:ci_pipeline_artifacts_coverage_report :worker_name: Ci::PipelineArtifacts::CoverageReportWorker :feature_category: :code_testing - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1581,7 +1599,7 @@ - :name: pipeline_background:ci_pipeline_artifacts_create_quality_report :worker_name: Ci::PipelineArtifacts::CreateQualityReportWorker :feature_category: :code_quality - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1590,7 +1608,7 @@ - :name: pipeline_background:ci_pipeline_success_unlock_artifacts :worker_name: Ci::PipelineSuccessUnlockArtifactsWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1599,7 +1617,7 @@ - :name: pipeline_background:ci_ref_delete_unlock_artifacts :worker_name: Ci::RefDeleteUnlockArtifactsWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1608,52 +1626,34 @@ - :name: pipeline_background:ci_test_failure_history :worker_name: Ci::TestFailureHistoryWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 :idempotent: true :tags: [] -- :name: pipeline_cache:expire_job_cache - :worker_name: ExpireJobCacheWorker - :feature_category: :continuous_integration - :has_external_dependencies: - :urgency: :high - :resource_boundary: :unknown - :weight: 3 - :idempotent: true - :tags: [] -- :name: pipeline_cache:expire_pipeline_cache - :worker_name: ExpirePipelineCacheWorker - :feature_category: :continuous_integration - :has_external_dependencies: - :urgency: :high - :resource_boundary: :cpu - :weight: 3 - :idempotent: - :tags: [] - :name: pipeline_creation:ci_external_pull_requests_create_pipeline :worker_name: Ci::ExternalPullRequests::CreatePipelineWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 4 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_creation:create_pipeline :worker_name: CreatePipelineWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 4 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_creation:merge_requests_create_pipeline :worker_name: MergeRequests::CreatePipelineWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 4 @@ -1662,34 +1662,34 @@ - :name: pipeline_creation:run_pipeline_schedule :worker_name: RunPipelineScheduleWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 4 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_default:ci_create_cross_project_pipeline :worker_name: Ci::CreateCrossProjectPipelineWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 3 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_default:ci_create_downstream_pipeline :worker_name: Ci::CreateDownstreamPipelineWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 3 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_default:ci_drop_pipeline :worker_name: Ci::DropPipelineWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 3 @@ -1698,7 +1698,7 @@ - :name: pipeline_default:ci_merge_requests_add_todo_when_build_fails :worker_name: Ci::MergeRequests::AddTodoWhenBuildFailsWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 3 @@ -1707,115 +1707,115 @@ - :name: pipeline_default:ci_pipeline_bridge_status :worker_name: Ci::PipelineBridgeStatusWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 3 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_default:ci_retry_pipeline :worker_name: Ci::RetryPipelineWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 3 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_default:pipeline_metrics :worker_name: PipelineMetricsWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 3 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_default:pipeline_notification :worker_name: PipelineNotificationWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 3 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_hooks:build_hooks :worker_name: BuildHooksWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_hooks:pipeline_hooks :worker_name: PipelineHooksWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_processing:build_finished :worker_name: BuildFinishedWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 5 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_processing:build_queue :worker_name: BuildQueueWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 5 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_processing:build_success :worker_name: BuildSuccessWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 5 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_processing:ci_build_finished :worker_name: Ci::BuildFinishedWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 5 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_processing:ci_build_prepare :worker_name: Ci::BuildPrepareWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 5 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_processing:ci_build_schedule :worker_name: Ci::BuildScheduleWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 5 - :idempotent: + :idempotent: false :tags: [] - :name: pipeline_processing:ci_initial_pipeline_process :worker_name: Ci::InitialPipelineProcessWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 5 @@ -1824,7 +1824,7 @@ - :name: pipeline_processing:ci_resource_groups_assign_resource_from_resource_group :worker_name: Ci::ResourceGroups::AssignResourceFromResourceGroupWorker :feature_category: :continuous_delivery - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 5 @@ -1833,7 +1833,7 @@ - :name: pipeline_processing:pipeline_process :worker_name: PipelineProcessWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 5 @@ -1842,7 +1842,7 @@ - :name: pipeline_processing:stage_update :worker_name: StageUpdateWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 5 @@ -1851,7 +1851,7 @@ - :name: pipeline_processing:update_head_pipeline_for_merge_request :worker_name: UpdateHeadPipelineForMergeRequestWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 5 @@ -1860,43 +1860,52 @@ - :name: repository_check:repository_check_batch :worker_name: RepositoryCheck::BatchWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: repository_check:repository_check_clear :worker_name: RepositoryCheck::ClearWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: repository_check:repository_check_single_repository :worker_name: RepositoryCheck::SingleRepositoryWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false + :tags: [] +- :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: [] - :name: todos_destroyer:todos_destroyer_confidential_issue :worker_name: TodosDestroyer::ConfidentialIssueWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: todos_destroyer:todos_destroyer_destroyed_designs :worker_name: TodosDestroyer::DestroyedDesignsWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1905,7 +1914,7 @@ - :name: todos_destroyer:todos_destroyer_destroyed_issuable :worker_name: TodosDestroyer::DestroyedIssuableWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1914,43 +1923,43 @@ - :name: todos_destroyer:todos_destroyer_entity_leave :worker_name: TodosDestroyer::EntityLeaveWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: todos_destroyer:todos_destroyer_group_private :worker_name: TodosDestroyer::GroupPrivateWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: todos_destroyer:todos_destroyer_private_features :worker_name: TodosDestroyer::PrivateFeaturesWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: todos_destroyer:todos_destroyer_project_private :worker_name: TodosDestroyer::ProjectPrivateWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: unassign_issuables:members_destroyer_unassign_issuables :worker_name: MembersDestroyer::UnassignIssuablesWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1959,7 +1968,7 @@ - :name: update_namespace_statistics:namespaces_root_statistics :worker_name: Namespaces::RootStatisticsWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1968,7 +1977,7 @@ - :name: update_namespace_statistics:namespaces_schedule_aggregation :worker_name: Namespaces::ScheduleAggregationWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1977,7 +1986,7 @@ - :name: analytics_usage_trends_counter_job :worker_name: Analytics::UsageTrends::CounterJobWorker :feature_category: :devops_reports - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1986,7 +1995,7 @@ - :name: approve_blocked_pending_approval_users :worker_name: ApproveBlockedPendingApprovalUsersWorker :feature_category: :users - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -1995,7 +2004,7 @@ - :name: authorized_keys :worker_name: AuthorizedKeysWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 2 @@ -2004,7 +2013,7 @@ - :name: authorized_projects :worker_name: AuthorizedProjectsWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 2 @@ -2013,29 +2022,29 @@ - :name: background_migration :worker_name: BackgroundMigrationWorker :feature_category: :database - :has_external_dependencies: + :has_external_dependencies: false :urgency: :throttled :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: background_migration_ci_database :worker_name: BackgroundMigration::CiDatabaseWorker :feature_category: :database - :has_external_dependencies: + :has_external_dependencies: false :urgency: :throttled :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: bulk_import :worker_name: BulkImportWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: bulk_imports_entity :worker_name: BulkImports::EntityWorker @@ -2062,12 +2071,12 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: bulk_imports_relation_export :worker_name: BulkImports::RelationExportWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2080,12 +2089,12 @@ :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: ci_delete_objects :worker_name: Ci::DeleteObjectsWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2094,7 +2103,7 @@ - :name: ci_job_artifacts_expire_project_build_artifacts :worker_name: Ci::JobArtifacts::ExpireProjectBuildArtifactsWorker :feature_category: :build_artifacts - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2103,7 +2112,7 @@ - :name: create_commit_signature :worker_name: CreateCommitSignatureWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 @@ -2112,11 +2121,11 @@ - :name: create_note_diff_file :worker_name: CreateNoteDiffFileWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: default :worker_name: @@ -2130,43 +2139,43 @@ - :name: delete_diff_files :worker_name: DeleteDiffFilesWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: delete_merged_branches :worker_name: DeleteMergedBranchesWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: delete_stored_files :worker_name: DeleteStoredFilesWorker :feature_category: :not_owned - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: delete_user :worker_name: DeleteUserWorker :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: design_management_copy_design_collection :worker_name: DesignManagement::CopyDesignCollectionWorker :feature_category: :design_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2175,16 +2184,16 @@ - :name: design_management_new_version :worker_name: DesignManagement::NewVersionWorker :feature_category: :design_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :memory :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: destroy_pages_deployments :worker_name: DestroyPagesDeploymentsWorker :feature_category: :pages - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2193,16 +2202,16 @@ - :name: detect_repository_languages :worker_name: DetectRepositoryLanguagesWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: disallow_two_factor_for_group :worker_name: DisallowTwoFactorForGroupWorker :feature_category: :subgroups - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2211,7 +2220,7 @@ - :name: disallow_two_factor_for_subgroups :worker_name: DisallowTwoFactorForSubgroupsWorker :feature_category: :subgroups - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2220,26 +2229,26 @@ - :name: email_receiver :worker_name: EmailReceiverWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: - :needs_own_queue - :name: emails_on_push :worker_name: EmailsOnPushWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: environments_auto_stop :worker_name: Environments::AutoStopWorker :feature_category: :continuous_delivery - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2261,12 +2270,12 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: experiments_record_conversion_event :worker_name: Experiments::RecordConversionEventWorker :feature_category: :users - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2275,11 +2284,11 @@ - :name: export_csv :worker_name: ExportCsvWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: external_service_reactive_caching :worker_name: ExternalServiceReactiveCachingWorker @@ -2288,21 +2297,21 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: file_hook :worker_name: FileHookWorker :feature_category: :integrations - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: flush_counter_increments :worker_name: FlushCounterIncrementsWorker :feature_category: :not_owned - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2311,16 +2320,16 @@ - :name: github_import_advance_stage :worker_name: Gitlab::GithubImport::AdvanceStageWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: gitlab_performance_bar_stats :worker_name: GitlabPerformanceBarStatsWorker :feature_category: :metrics - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 @@ -2329,43 +2338,43 @@ - :name: gitlab_shell :worker_name: GitlabShellWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: group_destroy :worker_name: GroupDestroyWorker :feature_category: :subgroups - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: group_export :worker_name: GroupExportWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: group_import :worker_name: GroupImportWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: groups_update_statistics :worker_name: Groups::UpdateStatisticsWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 @@ -2374,7 +2383,7 @@ - :name: import_issues_csv :worker_name: ImportIssuesCsvWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 2 @@ -2383,43 +2392,61 @@ - :name: integrations_create_external_cross_reference :worker_name: Integrations::CreateExternalCrossReferenceWorker :feature_category: :integrations - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 :idempotent: true :tags: [] +- :name: integrations_execute + :worker_name: Integrations::ExecuteWorker + :feature_category: :integrations + :has_external_dependencies: true + :urgency: :low + :resource_boundary: :unknown + :weight: 1 + :idempotent: false + :tags: [] +- :name: integrations_irker + :worker_name: Integrations::IrkerWorker + :feature_category: :integrations + :has_external_dependencies: false + :urgency: :low + :resource_boundary: :unknown + :weight: 1 + :idempotent: false + :tags: [] - :name: invalid_gpg_signature_update :worker_name: InvalidGpgSignatureUpdateWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: irker :worker_name: IrkerWorker :feature_category: :integrations - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: issuable_export_csv :worker_name: IssuableExportCsvWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: issuable_label_links_destroy :worker_name: Issuable::LabelLinksDestroyWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2428,25 +2455,7 @@ - :name: issuables_clear_groups_issue_counter :worker_name: Issuables::ClearGroupsIssueCounterWorker :feature_category: :team_planning - :has_external_dependencies: - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] -- :name: issue_placement - :worker_name: IssuePlacementWorker - :feature_category: :team_planning - :has_external_dependencies: - :urgency: :high - :resource_boundary: :cpu - :weight: 2 - :idempotent: true - :tags: [] -- :name: issue_rebalancing - :worker_name: IssueRebalancingWorker - :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2455,7 +2464,7 @@ - :name: issues_placement :worker_name: Issues::PlacementWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 2 @@ -2464,7 +2473,7 @@ - :name: issues_rebalancing :worker_name: Issues::RebalancingWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2482,7 +2491,7 @@ - :name: merge :worker_name: MergeWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 5 @@ -2491,7 +2500,7 @@ - :name: merge_request_cleanup_refs :worker_name: MergeRequestCleanupRefsWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2500,7 +2509,7 @@ - :name: merge_request_mergeability_check :worker_name: MergeRequestMergeabilityCheckWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2518,7 +2527,7 @@ - :name: merge_requests_delete_source_branch :worker_name: MergeRequests::DeleteSourceBranchWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 1 @@ -2527,7 +2536,7 @@ - :name: merge_requests_handle_assignees_change :worker_name: MergeRequests::HandleAssigneesChangeWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 1 @@ -2536,7 +2545,7 @@ - :name: merge_requests_resolve_todos :worker_name: MergeRequests::ResolveTodosWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 1 @@ -2545,7 +2554,7 @@ - :name: merge_requests_update_head_pipeline :worker_name: MergeRequests::UpdateHeadPipelineWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 1 @@ -2554,7 +2563,7 @@ - :name: metrics_dashboard_prune_old_annotations :worker_name: Metrics::Dashboard::PruneOldAnnotationsWorker :feature_category: :metrics - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2563,7 +2572,7 @@ - :name: metrics_dashboard_sync_dashboards :worker_name: Metrics::Dashboard::SyncDashboardsWorker :feature_category: :metrics - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2572,25 +2581,16 @@ - :name: migrate_external_diffs :worker_name: MigrateExternalDiffsWorker :feature_category: :code_review - :has_external_dependencies: - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: - :tags: [] -- :name: namespaceless_project_destroy - :worker_name: NamespacelessProjectDestroyWorker - :feature_category: :authentication_and_authorization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: namespaces_onboarding_issue_created :worker_name: Namespaces::OnboardingIssueCreatedWorker :feature_category: :onboarding - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2599,7 +2599,7 @@ - :name: namespaces_onboarding_pipeline_created :worker_name: Namespaces::OnboardingPipelineCreatedWorker :feature_category: :onboarding - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2608,7 +2608,7 @@ - :name: namespaces_onboarding_progress :worker_name: Namespaces::OnboardingProgressWorker :feature_category: :onboarding - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 @@ -2617,7 +2617,7 @@ - :name: namespaces_onboarding_user_added :worker_name: Namespaces::OnboardingUserAddedWorker :feature_category: :onboarding - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2625,8 +2625,8 @@ :tags: [] - :name: namespaces_process_sync_events :worker_name: Namespaces::ProcessSyncEventsWorker - :feature_category: :sharding - :has_external_dependencies: + :feature_category: :pods + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 1 @@ -2635,7 +2635,7 @@ - :name: namespaces_update_root_statistics :worker_name: Namespaces::UpdateRootStatisticsWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2644,34 +2644,34 @@ - :name: new_issue :worker_name: NewIssueWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: new_merge_request :worker_name: NewMergeRequestWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: new_note :worker_name: NewNoteWorker :feature_category: :team_planning - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: packages_composer_cache_update :worker_name: Packages::Composer::CacheUpdateWorker :feature_category: :package_registry - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2680,52 +2680,52 @@ - :name: pages :worker_name: PagesWorker :feature_category: :pages - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: pages_domain_ssl_renewal :worker_name: PagesDomainSslRenewalWorker :feature_category: :pages - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: pages_domain_verification :worker_name: PagesDomainVerificationWorker :feature_category: :pages - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: pages_transfer :worker_name: PagesTransferWorker :feature_category: :pages - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: phabricator_import_import_tasks :worker_name: Gitlab::PhabricatorImport::ImportTasksWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: post_receive :worker_name: PostReceive :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 5 @@ -2734,7 +2734,7 @@ - :name: process_commit :worker_name: ProcessCommitWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 3 @@ -2743,38 +2743,29 @@ - :name: project_cache :worker_name: ProjectCacheWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 1 :idempotent: true :tags: [] -- :name: project_daily_statistics - :worker_name: ProjectDailyStatisticsWorker - :feature_category: :source_code_management - :has_external_dependencies: - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: - :tags: [] - :name: project_destroy :worker_name: ProjectDestroyWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: project_export :worker_name: ProjectExportWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :memory :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: project_service :worker_name: ProjectServiceWorker @@ -2783,12 +2774,12 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: projects_after_import :worker_name: Projects::AfterImportWorker :feature_category: :importers - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2797,16 +2788,16 @@ - :name: projects_git_garbage_collect :worker_name: Projects::GitGarbageCollectWorker :feature_category: :gitaly - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: projects_inactive_projects_deletion_notification :worker_name: Projects::InactiveProjectsDeletionNotificationWorker :feature_category: :compliance_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2815,7 +2806,7 @@ - :name: projects_post_creation :worker_name: Projects::PostCreationWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2823,8 +2814,8 @@ :tags: [] - :name: projects_process_sync_events :worker_name: Projects::ProcessSyncEventsWorker - :feature_category: :sharding - :has_external_dependencies: + :feature_category: :pods + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 1 @@ -2833,7 +2824,7 @@ - :name: projects_record_target_platforms :worker_name: Projects::RecordTargetPlatformsWorker :feature_category: :experimentation_activation - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2842,7 +2833,7 @@ - :name: projects_refresh_build_artifacts_size_statistics :worker_name: Projects::RefreshBuildArtifactsSizeStatisticsWorker :feature_category: :build_artifacts - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2851,7 +2842,7 @@ - :name: projects_schedule_bulk_repository_shard_moves :worker_name: Projects::ScheduleBulkRepositoryShardMovesWorker :feature_category: :gitaly - :has_external_dependencies: + :has_external_dependencies: false :urgency: :throttled :resource_boundary: :unknown :weight: 1 @@ -2860,25 +2851,16 @@ - :name: projects_update_repository_storage :worker_name: Projects::UpdateRepositoryStorageWorker :feature_category: :gitaly - :has_external_dependencies: + :has_external_dependencies: false :urgency: :throttled :resource_boundary: :unknown :weight: 1 :idempotent: true :tags: [] -- :name: prometheus_create_default_alerts - :worker_name: Prometheus::CreateDefaultAlertsWorker - :feature_category: :incident_management - :has_external_dependencies: - :urgency: :high - :resource_boundary: :unknown - :weight: 1 - :idempotent: true - :tags: [] - :name: propagate_integration :worker_name: PropagateIntegrationWorker :feature_category: :integrations - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2887,7 +2869,7 @@ - :name: propagate_integration_group :worker_name: PropagateIntegrationGroupWorker :feature_category: :integrations - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2896,7 +2878,7 @@ - :name: propagate_integration_inherit :worker_name: PropagateIntegrationInheritWorker :feature_category: :integrations - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2905,7 +2887,7 @@ - :name: propagate_integration_inherit_descendant :worker_name: PropagateIntegrationInheritDescendantWorker :feature_category: :integrations - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2914,7 +2896,7 @@ - :name: propagate_integration_project :worker_name: PropagateIntegrationProjectWorker :feature_category: :integrations - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -2923,56 +2905,56 @@ - :name: reactive_caching :worker_name: ReactiveCachingWorker :feature_category: :not_owned - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: rebase :worker_name: RebaseWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: releases_create_evidence :worker_name: Releases::CreateEvidenceWorker :feature_category: :release_evidence - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: remote_mirror_notification :worker_name: RemoteMirrorNotificationWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: repository_cleanup :worker_name: RepositoryCleanupWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: repository_fork :worker_name: RepositoryForkWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: repository_import :worker_name: RepositoryImportWorker @@ -2981,16 +2963,7 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: - :tags: [] -- :name: repository_remove_remote - :worker_name: RepositoryRemoveRemoteWorker - :feature_category: :source_code_management - :has_external_dependencies: - :urgency: :low - :resource_boundary: :unknown - :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: repository_update_remote_mirror :worker_name: RepositoryUpdateRemoteMirrorWorker @@ -3004,35 +2977,35 @@ - :name: self_monitoring_project_create :worker_name: SelfMonitoringProjectCreateWorker :feature_category: :metrics - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: self_monitoring_project_delete :worker_name: SelfMonitoringProjectDeleteWorker :feature_category: :metrics - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 2 - :idempotent: + :idempotent: false :tags: [] - :name: service_desk_email_receiver :worker_name: ServiceDeskEmailReceiverWorker :feature_category: :service_desk - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown - :weight: 1 - :idempotent: + :weight: 2 + :idempotent: false :tags: - :needs_own_queue - :name: snippets_schedule_bulk_repository_shard_moves :worker_name: Snippets::ScheduleBulkRepositoryShardMovesWorker :feature_category: :gitaly - :has_external_dependencies: + :has_external_dependencies: false :urgency: :throttled :resource_boundary: :unknown :weight: 1 @@ -3041,7 +3014,7 @@ - :name: snippets_update_repository_storage :worker_name: Snippets::UpdateRepositoryStorageWorker :feature_category: :gitaly - :has_external_dependencies: + :has_external_dependencies: false :urgency: :throttled :resource_boundary: :unknown :weight: 1 @@ -3050,16 +3023,16 @@ - :name: system_hook_push :worker_name: SystemHookPushWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: tasks_to_be_done_create :worker_name: TasksToBeDone::CreateWorker :feature_category: :onboarding - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :cpu :weight: 1 @@ -3068,16 +3041,16 @@ - :name: update_external_pull_requests :worker_name: UpdateExternalPullRequestsWorker :feature_category: :continuous_integration - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 3 - :idempotent: + :idempotent: false :tags: [] - :name: update_highest_role :worker_name: UpdateHighestRoleWorker :feature_category: :utilization - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 2 @@ -3086,29 +3059,29 @@ - :name: update_merge_requests :worker_name: UpdateMergeRequestsWorker :feature_category: :code_review - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :cpu :weight: 3 - :idempotent: + :idempotent: false :tags: [] - :name: update_project_statistics :worker_name: UpdateProjectStatisticsWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: upload_checksum :worker_name: UploadChecksumWorker :feature_category: :geo_replication - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: web_hook :worker_name: WebHookWorker @@ -3117,21 +3090,30 @@ :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: web_hooks_destroy :worker_name: WebHooks::DestroyWorker :feature_category: :integrations - :has_external_dependencies: + :has_external_dependencies: false :urgency: :high :resource_boundary: :unknown :weight: 1 :idempotent: true :tags: [] +- :name: web_hooks_log_destroy + :worker_name: WebHooks::LogDestroyWorker + :feature_category: :integrations + :has_external_dependencies: false + :urgency: :low + :resource_boundary: :unknown + :weight: 1 + :idempotent: true + :tags: [] - :name: web_hooks_log_execution :worker_name: WebHooks::LogExecutionWorker :feature_category: :integrations - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 @@ -3140,16 +3122,16 @@ - :name: wikis_git_garbage_collect :worker_name: Wikis::GitGarbageCollectWorker :feature_category: :gitaly - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 - :idempotent: + :idempotent: false :tags: [] - :name: x509_certificate_revoke :worker_name: X509CertificateRevokeWorker :feature_category: :source_code_management - :has_external_dependencies: + :has_external_dependencies: false :urgency: :low :resource_boundary: :unknown :weight: 1 diff --git a/app/workers/background_migration/single_database_worker.rb b/app/workers/background_migration/single_database_worker.rb index f3a2165c41e..2f797a24468 100644 --- a/app/workers/background_migration/single_database_worker.rb +++ b/app/workers/background_migration/single_database_worker.rb @@ -7,6 +7,7 @@ module BackgroundMigration include ApplicationWorker MAX_LEASE_ATTEMPTS = 5 + BACKGROUND_MIGRATIONS_DELAY = 4.hours.freeze included do data_consistency :always @@ -44,6 +45,18 @@ module BackgroundMigration # lease on the class before giving up. See MR for more discussion. # https://gitlab.com/gitlab-org/gitlab/-/merge_requests/45298#note_434304956 def perform(class_name, arguments = [], lease_attempts = MAX_LEASE_ATTEMPTS) + unless Feature.enabled?(:execute_background_migrations, type: :ops) + # Delay execution of background migrations + self.class.perform_in(BACKGROUND_MIGRATIONS_DELAY, class_name, arguments, lease_attempts) + + Sidekiq.logger.info( + class: self.class.name, + database: self.class.tracking_database, + message: 'skipping execution, migration rescheduled') + + return + end + job_coordinator.with_shared_connection do perform_with_connection(class_name, arguments, lease_attempts) end diff --git a/app/workers/build_success_worker.rb b/app/workers/build_success_worker.rb index 114bced0b22..247105d2a1a 100644 --- a/app/workers/build_success_worker.rb +++ b/app/workers/build_success_worker.rb @@ -13,13 +13,13 @@ class BuildSuccessWorker # rubocop:disable Scalability/IdempotentWorker def perform(build_id) Ci::Build.find_by_id(build_id).try do |build| - stop_environment(build) if build.stops_environment? + stop_environment(build) if build.stops_environment? && build.stop_action_successful? end end private def stop_environment(build) - build.persisted_environment.fire_state_event(:stop) + build.persisted_environment.fire_state_event(:stop_complete) end end diff --git a/app/workers/bulk_import_worker.rb b/app/workers/bulk_import_worker.rb index 157586ca397..c7efc92b25e 100644 --- a/app/workers/bulk_import_worker.rb +++ b/app/workers/bulk_import_worker.rb @@ -20,7 +20,7 @@ class BulkImportWorker # rubocop:disable Scalability/IdempotentWorker @bulk_import.start! if @bulk_import.created? created_entities.find_each do |entity| - entity.create_pipeline_trackers! + BulkImports::CreatePipelineTrackersService.new(entity).execute! BulkImports::ExportRequestWorker.perform_async(entity.id) BulkImports::EntityWorker.perform_async(entity.id) diff --git a/app/workers/bulk_imports/pipeline_worker.rb b/app/workers/bulk_imports/pipeline_worker.rb index b515f0fa202..9c95e25e2e8 100644 --- a/app/workers/bulk_imports/pipeline_worker.rb +++ b/app/workers/bulk_imports/pipeline_worker.rb @@ -12,7 +12,7 @@ module BulkImports worker_has_external_dependencies! def perform(pipeline_tracker_id, stage, entity_id) - pipeline_tracker = ::BulkImports::Tracker + @pipeline_tracker = ::BulkImports::Tracker .with_status(:enqueued) .find_by_id(pipeline_tracker_id) @@ -24,7 +24,7 @@ module BulkImports ) ) - run(pipeline_tracker) + run else logger.error( structured_payload( @@ -41,48 +41,29 @@ module BulkImports private - def run(pipeline_tracker) - if pipeline_tracker.entity.failed? - raise(Entity::FailedError, 'Failed entity status') - end - - if file_extraction_pipeline?(pipeline_tracker) - export_status = ExportStatus.new(pipeline_tracker, pipeline_tracker.pipeline_class.relation) + attr_reader :pipeline_tracker - raise(Pipeline::ExpiredError, 'Pipeline timeout') if job_timeout?(pipeline_tracker) - raise(Pipeline::FailedError, export_status.error) if export_status.failed? + def run + raise(Entity::FailedError, 'Failed entity status') if pipeline_tracker.entity.failed? + raise(Pipeline::ExpiredError, 'Pipeline timeout') if job_timeout? + raise(Pipeline::FailedError, export_status.error) if export_failed? - return reenqueue(pipeline_tracker) if export_status.started? - end + return re_enqueue if export_empty? || export_started? pipeline_tracker.update!(status_event: 'start', jid: jid) - - context = ::BulkImports::Pipeline::Context.new(pipeline_tracker) - pipeline_tracker.pipeline_class.new(context).run - pipeline_tracker.finish! rescue BulkImports::NetworkError => e if e.retriable?(pipeline_tracker) - logger.error( - structured_payload( - entity_id: pipeline_tracker.entity.id, - pipeline_name: pipeline_tracker.pipeline_name, - message: "Retrying error: #{e.message}" - ) - ) - - pipeline_tracker.update!(status_event: 'retry', jid: jid) - - reenqueue(pipeline_tracker, delay: e.retry_delay) + retry_tracker(e) else - fail_tracker(pipeline_tracker, e) + fail_tracker(e) end rescue StandardError => e - fail_tracker(pipeline_tracker, e) + fail_tracker(e) end - def fail_tracker(pipeline_tracker, exception) + def fail_tracker(exception) pipeline_tracker.update!(status_event: 'fail_op', jid: jid) logger.error( @@ -98,21 +79,22 @@ module BulkImports entity_id: pipeline_tracker.entity.id, pipeline_name: pipeline_tracker.pipeline_name ) + + BulkImports::Failure.create( + bulk_import_entity_id: context.entity.id, + pipeline_class: pipeline_tracker.pipeline_name, + pipeline_step: 'pipeline_worker_run', + exception_class: exception.class.to_s, + exception_message: exception.message.truncate(255), + correlation_id_value: Labkit::Correlation::CorrelationId.current_or_new_id + ) end def logger @logger ||= Gitlab::Import::Logger.build end - def file_extraction_pipeline?(pipeline_tracker) - pipeline_tracker.pipeline_class.file_extraction_pipeline? - end - - def job_timeout?(pipeline_tracker) - (Time.zone.now - pipeline_tracker.entity.created_at) > Pipeline::NDJSON_EXPORT_TIMEOUT - end - - def reenqueue(pipeline_tracker, delay: FILE_EXTRACTION_PIPELINE_PERFORM_DELAY) + def re_enqueue(delay = FILE_EXTRACTION_PIPELINE_PERFORM_DELAY) self.class.perform_in( delay, pipeline_tracker.id, @@ -120,5 +102,55 @@ module BulkImports pipeline_tracker.entity.id ) end + + def context + @context ||= ::BulkImports::Pipeline::Context.new(pipeline_tracker) + end + + def export_status + @export_status ||= ExportStatus.new(pipeline_tracker, pipeline_tracker.pipeline_class.relation) + end + + def file_extraction_pipeline? + pipeline_tracker.file_extraction_pipeline? + end + + def job_timeout? + return false unless file_extraction_pipeline? + + (Time.zone.now - pipeline_tracker.entity.created_at) > Pipeline::NDJSON_EXPORT_TIMEOUT + end + + def export_failed? + return false unless file_extraction_pipeline? + + export_status.failed? + end + + def export_started? + return false unless file_extraction_pipeline? + + export_status.started? + end + + def export_empty? + return false unless file_extraction_pipeline? + + export_status.empty? + end + + def retry_tracker(exception) + logger.error( + structured_payload( + entity_id: pipeline_tracker.entity.id, + pipeline_name: pipeline_tracker.pipeline_name, + message: "Retrying error: #{exception.message}" + ) + ) + + pipeline_tracker.update!(status_event: 'retry', jid: jid) + + re_enqueue(exception.retry_delay) + end end end diff --git a/app/workers/ci/archive_trace_worker.rb b/app/workers/ci/archive_trace_worker.rb index 5a22a5c74ee..47d77c15b4a 100644 --- a/app/workers/ci/archive_trace_worker.rb +++ b/app/workers/ci/archive_trace_worker.rb @@ -4,13 +4,19 @@ module Ci class ArchiveTraceWorker # rubocop:disable Scalability/IdempotentWorker include ApplicationWorker - data_consistency :always + data_consistency :sticky, feature_flag: :sticky_ci_archive_trace_worker sidekiq_options retry: 3 include PipelineBackgroundQueue def perform(job_id) - Ci::Build.without_archived_trace.find_by_id(job_id).try do |job| + archivable_jobs = Ci::Build.without_archived_trace + + if Feature.enabled?(:sticky_ci_archive_trace_worker) + archivable_jobs = archivable_jobs.eager_load_for_archiving_trace + end + + archivable_jobs.find_by_id(job_id).try do |job| Ci::ArchiveTraceService.new.execute(job, worker_name: self.class.name) end end diff --git a/app/workers/ci/pipeline_artifacts/coverage_report_worker.rb b/app/workers/ci/pipeline_artifacts/coverage_report_worker.rb index 16c4744eae1..8ee518e3ae6 100644 --- a/app/workers/ci/pipeline_artifacts/coverage_report_worker.rb +++ b/app/workers/ci/pipeline_artifacts/coverage_report_worker.rb @@ -16,7 +16,7 @@ module Ci def perform(pipeline_id) Ci::Pipeline.find_by_id(pipeline_id).try do |pipeline| - Ci::PipelineArtifacts::CoverageReportService.new.execute(pipeline) + Ci::PipelineArtifacts::CoverageReportService.new(pipeline).execute end end end diff --git a/app/workers/clusters/applications/activate_integration_worker.rb b/app/workers/clusters/applications/activate_integration_worker.rb new file mode 100644 index 00000000000..29813afd168 --- /dev/null +++ b/app/workers/clusters/applications/activate_integration_worker.rb @@ -0,0 +1,25 @@ +# frozen_string_literal: true + +module Clusters + module Applications + class ActivateIntegrationWorker # rubocop:disable Scalability/IdempotentWorker + include ApplicationWorker + + data_consistency :always + + sidekiq_options retry: 3 + include ClusterQueue + + loggable_arguments 1 + + def perform(cluster_id, integration_name) + cluster = Clusters::Cluster.find_by_id(cluster_id) + return unless cluster + + cluster.all_projects.find_each do |project| + project.find_or_initialize_integration(integration_name).update!(active: true) + end + end + end + end +end diff --git a/app/workers/clusters/applications/activate_service_worker.rb b/app/workers/clusters/applications/activate_service_worker.rb index 55e224887f4..abc84bcd093 100644 --- a/app/workers/clusters/applications/activate_service_worker.rb +++ b/app/workers/clusters/applications/activate_service_worker.rb @@ -1,25 +1,12 @@ # frozen_string_literal: true +# This worker was renamed in 15.1, we can delete it in 15.2. +# See: https://gitlab.com/gitlab-org/gitlab/-/issues/364112 +# +# rubocop:disable Scalability/IdempotentWorker module Clusters module Applications - class ActivateServiceWorker # rubocop:disable Scalability/IdempotentWorker - include ApplicationWorker - - data_consistency :always - - sidekiq_options retry: 3 - include ClusterQueue - - loggable_arguments 1 - - def perform(cluster_id, service_name) - cluster = Clusters::Cluster.find_by_id(cluster_id) - return unless cluster - - cluster.all_projects.find_each do |project| - project.find_or_initialize_integration(service_name).update!(active: true) - end - end + class ActivateServiceWorker < ActivateIntegrationWorker end end end diff --git a/app/workers/clusters/applications/deactivate_integration_worker.rb b/app/workers/clusters/applications/deactivate_integration_worker.rb new file mode 100644 index 00000000000..d1db99d21af --- /dev/null +++ b/app/workers/clusters/applications/deactivate_integration_worker.rb @@ -0,0 +1,39 @@ +# frozen_string_literal: true + +module Clusters + module Applications + class DeactivateIntegrationWorker # rubocop:disable Scalability/IdempotentWorker + include ApplicationWorker + + data_consistency :always + + sidekiq_options retry: 3 + include ClusterQueue + + loggable_arguments 1 + + def perform(cluster_id, integration_name) + cluster = Clusters::Cluster.find_by_id(cluster_id) + raise cluster_missing_error(integration_name) unless cluster + + integration_class = Integration.integration_name_to_model(integration_name) + integration_association_name = ::Project.integration_association_name(integration_name).to_sym + + projects = cluster.all_projects + .with_integration(integration_class) + .include_integration(integration_association_name) + + projects.find_each do |project| + project.public_send(integration_association_name).update!(active: false) # rubocop:disable GitlabSecurity/PublicSend + end + end + + def cluster_missing_error(integration_name) + ActiveRecord::RecordNotFound.new( + "Can't deactivate #{integration_name} integrations, host cluster not found! " \ + "Some inconsistent records may be left in database." + ) + end + end + end +end diff --git a/app/workers/clusters/applications/deactivate_service_worker.rb b/app/workers/clusters/applications/deactivate_service_worker.rb index 4c8d21a7c4d..88219b8b17e 100644 --- a/app/workers/clusters/applications/deactivate_service_worker.rb +++ b/app/workers/clusters/applications/deactivate_service_worker.rb @@ -1,32 +1,12 @@ # frozen_string_literal: true +# This worker was renamed in 15.1, we can delete it in 15.2. +# See: https://gitlab.com/gitlab-org/gitlab/-/issues/364112 +# +# rubocop:disable Scalability/IdempotentWorker module Clusters module Applications - class DeactivateServiceWorker # rubocop:disable Scalability/IdempotentWorker - include ApplicationWorker - - data_consistency :always - - sidekiq_options retry: 3 - include ClusterQueue - - loggable_arguments 1 - - def perform(cluster_id, integration_name) - cluster = Clusters::Cluster.find_by_id(cluster_id) - raise cluster_missing_error(integration_name) unless cluster - - integration_class = Integration.integration_name_to_model(integration_name) - integration_association_name = ::Project.integration_association_name(integration_name).to_sym - - cluster.all_projects.with_integration(integration_class).include_integration(integration_association_name).find_each do |project| - project.public_send(integration_association_name).update!(active: false) # rubocop:disable GitlabSecurity/PublicSend - end - end - - def cluster_missing_error(integration_name) - ActiveRecord::RecordNotFound.new("Can't deactivate #{integration_name} integrations, host cluster not found! Some inconsistent records may be left in database.") - end + class DeactivateServiceWorker < DeactivateIntegrationWorker end end end diff --git a/app/workers/concerns/limited_capacity/job_tracker.rb b/app/workers/concerns/limited_capacity/job_tracker.rb index 47b13cd5bf6..a1eb4e45027 100644 --- a/app/workers/concerns/limited_capacity/job_tracker.rb +++ b/app/workers/concerns/limited_capacity/job_tracker.rb @@ -62,7 +62,7 @@ module LimitedCapacity end def with_redis(&block) - Gitlab::Redis::Queues.with(&block) # rubocop: disable CodeReuse/ActiveRecord + Gitlab::Redis::SharedState.with(&block) # rubocop: disable CodeReuse/ActiveRecord end end end diff --git a/app/workers/concerns/worker_attributes.rb b/app/workers/concerns/worker_attributes.rb index 5d7251e9a98..8a135bc1853 100644 --- a/app/workers/concerns/worker_attributes.rb +++ b/app/workers/concerns/worker_attributes.rb @@ -67,7 +67,7 @@ module WorkerAttributes end def get_urgency - class_attributes[:urgency] || :low + get_class_attribute(:urgency) || :low end # Allows configuring worker's data_consistency. @@ -98,13 +98,13 @@ module WorkerAttributes end def get_data_consistency - class_attributes[:data_consistency] || DEFAULT_DATA_CONSISTENCY + get_class_attribute(:data_consistency) || DEFAULT_DATA_CONSISTENCY end def get_data_consistency_feature_flag_enabled? - return true unless class_attributes[:data_consistency_feature_flag] + return true unless get_class_attribute(:data_consistency_feature_flag) - Feature.enabled?(class_attributes[:data_consistency_feature_flag]) + Feature.enabled?(get_class_attribute(:data_consistency_feature_flag)) end # Set this attribute on a job when it will call to services outside of the @@ -115,11 +115,11 @@ module WorkerAttributes set_class_attribute(:external_dependencies, true) end - # Returns a truthy value if the worker has external dependencies. + # Returns true if the worker has external dependencies. # See doc/development/sidekiq_style_guide.md#jobs-with-external-dependencies # for details def worker_has_external_dependencies? - class_attributes[:external_dependencies] + !!get_class_attribute(:external_dependencies) end def worker_resource_boundary(boundary) @@ -129,7 +129,7 @@ module WorkerAttributes end def get_worker_resource_boundary - class_attributes[:resource_boundary] || :unknown + get_class_attribute(:resource_boundary) || :unknown end def idempotent! @@ -137,7 +137,7 @@ module WorkerAttributes end def idempotent? - class_attributes[:idempotent] + !!get_class_attribute(:idempotent) end def weight(value) @@ -145,7 +145,7 @@ module WorkerAttributes end def get_weight - class_attributes[:weight] || + get_class_attribute(:weight) || NAMESPACE_WEIGHTS[queue_namespace] || 1 end @@ -155,7 +155,7 @@ module WorkerAttributes end def get_tags - Array(class_attributes[:tags]) + Array(get_class_attribute(:tags)) end def deduplicate(strategy, options = {}) @@ -164,12 +164,12 @@ module WorkerAttributes end def get_deduplicate_strategy - class_attributes[:deduplication_strategy] || + get_class_attribute(:deduplication_strategy) || Gitlab::SidekiqMiddleware::DuplicateJobs::DuplicateJob::DEFAULT_STRATEGY end def get_deduplication_options - class_attributes[:deduplication_options] || {} + get_class_attribute(:deduplication_options) || {} end def deduplication_enabled? @@ -183,7 +183,7 @@ module WorkerAttributes end def big_payload? - class_attributes[:big_payload] + !!get_class_attribute(:big_payload) end end end diff --git a/app/workers/container_registry/migration/enqueuer_worker.rb b/app/workers/container_registry/migration/enqueuer_worker.rb index a0babb98e82..f3c8dfa63ad 100644 --- a/app/workers/container_registry/migration/enqueuer_worker.rb +++ b/app/workers/container_registry/migration/enqueuer_worker.rb @@ -17,19 +17,8 @@ module ContainerRegistry idempotent! def perform - migration.enqueuer_loop? ? perform_with_loop : perform_without_loop - end - - def self.enqueue_a_job - perform_async - perform_in(7.seconds) if ::ContainerRegistry::Migration.enqueue_twice? - end - - private - - def perform_with_loop try_obtain_lease do - while runnable? && Time.zone.now < loop_deadline && migration.enqueuer_loop? + while runnable? && Time.zone.now < loop_deadline repository_handled = handle_aborted_migration || handle_next_migration # no repository was found: stop the loop @@ -43,40 +32,29 @@ module ContainerRegistry end end - def perform_without_loop - re_enqueue = false - try_obtain_lease do - break unless runnable? - - re_enqueue = handle_aborted_migration || handle_next_migration - end - re_enqueue_if_capacity if re_enqueue + def self.enqueue_a_job + perform_async end + private + def handle_aborted_migration return unless next_aborted_repository - log_on_done(:import_type, 'retry') - log_repository(next_aborted_repository) - next_aborted_repository.retry_aborted_migration true rescue StandardError => e Gitlab::ErrorTracking.log_exception(e, next_aborted_repository_id: next_aborted_repository&.id) - migration.enqueuer_loop? ? false : true + false ensure - log_repository_migration_state(next_aborted_repository) log_repository_info(next_aborted_repository, import_type: 'retry') end def handle_next_migration return unless next_repository - log_on_done(:import_type, 'next') - log_repository(next_repository) - # We return true because the repository was successfully processed (migration_state is changed) return true if tag_count_too_high? return unless next_repository.start_pre_import @@ -88,7 +66,6 @@ module ContainerRegistry false ensure - log_repository_migration_state(next_repository) log_repository_info(next_repository, import_type: 'next') end @@ -97,8 +74,6 @@ module ContainerRegistry return false unless next_repository.tags_count > migration.max_tags_count next_repository.skip_import(reason: :too_many_tags) - log_on_done(:tags_count_too_high, true) - log_on_done(:max_tags_count_setting, migration.max_tags_count) true end @@ -160,7 +135,7 @@ module ContainerRegistry def next_aborted_repository strong_memoize(:next_aborted_repository) do - ContainerRepository.with_migration_state('import_aborted').take # rubocop:disable CodeReuse/ActiveRecord + ContainerRepository.with_migration_state('import_aborted').limit(2)[0] # rubocop:disable CodeReuse/ActiveRecord end end @@ -180,29 +155,11 @@ module ContainerRegistry self.class.enqueue_a_job end - def log_repository(repository) - log_on_done(:container_repository_id, repository&.id) - log_on_done(:container_repository_path, repository&.path) - end - - def log_repository_migration_state(repository) - return unless repository - - log_on_done(:container_repository_migration_state, repository.migration_state) - end - - def log_on_done(key, value) - return if migration.enqueuer_loop? - - log_extra_metadata_on_done(key, value) - end - def log_info(extras) logger.info(structured_payload(extras)) end def log_repository_info(repository, extras = {}) - return unless migration.enqueuer_loop? return unless repository repository_info = { diff --git a/app/workers/container_registry/migration/guard_worker.rb b/app/workers/container_registry/migration/guard_worker.rb index 1111061a89b..ae29106b502 100644 --- a/app/workers/container_registry/migration/guard_worker.rb +++ b/app/workers/container_registry/migration/guard_worker.rb @@ -22,7 +22,7 @@ module ContainerRegistry repositories = ::ContainerRepository.with_stale_migration(step_before_timestamp) .limit(max_capacity) aborts_count = 0 - long_running_migration_ids = [] + long_running_migrations = [] # the #to_a is safe as the amount of entries is limited. # In addition, we're calling #each in the next line and we don't want two different SQL queries for these two lines @@ -32,7 +32,7 @@ module ContainerRegistry if actively_importing?(repository) # if a repository is actively importing but not yet long_running, do nothing if long_running_migration?(repository) - long_running_migration_ids << repository.id + long_running_migrations << repository cancel_long_running_migration(repository) aborts_count += 1 end @@ -44,8 +44,9 @@ module ContainerRegistry log_extra_metadata_on_done(:aborted_stale_migrations_count, aborts_count) - if long_running_migration_ids.any? - log_extra_metadata_on_done(:aborted_long_running_migration_ids, long_running_migration_ids) + if long_running_migrations.any? + log_extra_metadata_on_done(:aborted_long_running_migration_ids, long_running_migrations.map(&:id)) + log_extra_metadata_on_done(:aborted_long_running_migration_paths, long_running_migrations.map(&:path)) end end @@ -64,14 +65,16 @@ module ContainerRegistry end def long_running_migration?(repository) - timeout = long_running_migration_threshold - - if Feature.enabled?(:registry_migration_guard_thresholds) - timeout = if repository.migration_state == 'pre_importing' - migration.pre_import_timeout.seconds - else - migration.import_timeout.seconds - end + timeout = if repository.migration_state == 'pre_importing' + migration.pre_import_timeout.seconds + else + migration.import_timeout.seconds + end + + if repository.migration_state == 'pre_importing' && + Feature.enabled?(:registry_migration_guard_dynamic_pre_import_timeout) && + migration_start_timestamp(repository).before?(timeout.ago) + timeout = migration.dynamic_pre_import_timeout_for(repository) end migration_start_timestamp(repository).before?(timeout.ago) @@ -106,10 +109,6 @@ module ContainerRegistry ::ContainerRegistry::Migration end - def long_running_migration_threshold - @threshold ||= 10.minutes - end - def cancel_long_running_migration(repository) result = repository.migration_cancel diff --git a/app/workers/database/batched_background_migration/ci_database_worker.rb b/app/workers/database/batched_background_migration/ci_database_worker.rb index ee9cbba7076..b04db87631a 100644 --- a/app/workers/database/batched_background_migration/ci_database_worker.rb +++ b/app/workers/database/batched_background_migration/ci_database_worker.rb @@ -4,12 +4,8 @@ module Database class CiDatabaseWorker # rubocop:disable Scalability/IdempotentWorker include SingleDatabaseWorker - def self.enabled? - Feature.enabled?(:execute_batched_migrations_on_schedule_ci_database, type: :ops) - end - def self.tracking_database - @tracking_database ||= Gitlab::Database::CI_DATABASE_NAME + @tracking_database ||= Gitlab::Database::CI_DATABASE_NAME.to_sym end end end diff --git a/app/workers/database/batched_background_migration/single_database_worker.rb b/app/workers/database/batched_background_migration/single_database_worker.rb index aeadda4b8e1..cfbd44ba397 100644 --- a/app/workers/database/batched_background_migration/single_database_worker.rb +++ b/app/workers/database/batched_background_migration/single_database_worker.rb @@ -7,6 +7,7 @@ module Database include ApplicationWorker include CronjobQueue # rubocop:disable Scalability/CronWorkerContext + include Gitlab::Utils::StrongMemoize LEASE_TIMEOUT_MULTIPLIER = 3 MINIMUM_LEASE_TIMEOUT = 10.minutes.freeze @@ -23,11 +24,11 @@ module Database def tracking_database raise NotImplementedError, "#{self.name} does not implement #{__method__}" end + # :nocov: def enabled? - raise NotImplementedError, "#{self.name} does not implement #{__method__}" + Feature.enabled?(:execute_batched_migrations_on_schedule, type: :ops) end - # :nocov: def lease_key name.demodulize.underscore @@ -44,6 +45,15 @@ module Database return end + if shares_db_config? + Sidekiq.logger.info( + class: self.class.name, + database: self.class.tracking_database, + message: 'skipping migration execution for database that shares database configuration with another database') + + return + end + Gitlab::Database::SharedModel.using_connection(base_model.connection) do break unless self.class.enabled? && active_migration @@ -63,7 +73,7 @@ module Database private def active_migration - @active_migration ||= Gitlab::Database::BackgroundMigration::BatchedMigration.active_migration + @active_migration ||= Gitlab::Database::BackgroundMigration::BatchedMigration.active_migration(connection: base_model.connection) end def run_active_migration @@ -71,7 +81,13 @@ module Database end def base_model - @base_model ||= Gitlab::Database.database_base_models[self.class.tracking_database] + strong_memoize(:base_model) do + Gitlab::Database.database_base_models[self.class.tracking_database] + end + end + + def shares_db_config? + base_model && Gitlab::Database.db_config_share_with(base_model.connection_db_config).present? end def with_exclusive_lease(interval) diff --git a/app/workers/database/batched_background_migration_worker.rb b/app/workers/database/batched_background_migration_worker.rb index 31208d7a473..29804be832d 100644 --- a/app/workers/database/batched_background_migration_worker.rb +++ b/app/workers/database/batched_background_migration_worker.rb @@ -4,10 +4,6 @@ module Database class BatchedBackgroundMigrationWorker # rubocop:disable Scalability/IdempotentWorker include BatchedBackgroundMigration::SingleDatabaseWorker - def self.enabled? - Feature.enabled?(:execute_batched_migrations_on_schedule, type: :ops) - end - def self.tracking_database @tracking_database ||= Gitlab::Database::MAIN_DATABASE_NAME.to_sym end diff --git a/app/workers/database/ci_namespace_mirrors_consistency_check_worker.rb b/app/workers/database/ci_namespace_mirrors_consistency_check_worker.rb index b2174be1402..8918dca372d 100644 --- a/app/workers/database/ci_namespace_mirrors_consistency_check_worker.rb +++ b/app/workers/database/ci_namespace_mirrors_consistency_check_worker.rb @@ -6,15 +6,13 @@ module Database include CronjobQueue # rubocop: disable Scalability/CronWorkerContext sidekiq_options retry: false - feature_category :sharding + feature_category :pods data_consistency :sticky idempotent! version 1 def perform - return if Feature.disabled?(:ci_namespace_mirrors_consistency_check) - results = ConsistencyCheckService.new( source_model: Namespace, target_model: Ci::NamespaceMirror, diff --git a/app/workers/database/ci_project_mirrors_consistency_check_worker.rb b/app/workers/database/ci_project_mirrors_consistency_check_worker.rb index 84052ab238b..5f10310f8d6 100644 --- a/app/workers/database/ci_project_mirrors_consistency_check_worker.rb +++ b/app/workers/database/ci_project_mirrors_consistency_check_worker.rb @@ -6,15 +6,13 @@ module Database include CronjobQueue # rubocop: disable Scalability/CronWorkerContext sidekiq_options retry: false - feature_category :sharding + feature_category :pods data_consistency :sticky idempotent! version 1 def perform - return if Feature.disabled?(:ci_project_mirrors_consistency_check) - results = ConsistencyCheckService.new( source_model: Project, target_model: Ci::ProjectMirror, diff --git a/app/workers/delete_container_repository_worker.rb b/app/workers/delete_container_repository_worker.rb index a4d6adc2195..73e6843fdd0 100644 --- a/app/workers/delete_container_repository_worker.rb +++ b/app/workers/delete_container_repository_worker.rb @@ -2,16 +2,17 @@ class DeleteContainerRepositoryWorker # rubocop:disable Scalability/IdempotentWorker include ApplicationWorker + include ExclusiveLeaseGuard data_consistency :always sidekiq_options retry: 3 - include ExclusiveLeaseGuard queue_namespace :container_repository feature_category :container_registry - LEASE_TIMEOUT = 1.hour + LEASE_TIMEOUT = 1.hour.freeze + FIXED_DELAY = 10.seconds.freeze attr_reader :container_repository @@ -22,6 +23,16 @@ class DeleteContainerRepositoryWorker # rubocop:disable Scalability/IdempotentWo return unless current_user && container_repository && project + if migration.delete_container_repository_worker_support? && migrating? + delay = migration_duration + + self.class.perform_in(delay.from_now) + + log_extra_metadata_on_done(:delete_postponed, delay) + + return + end + # If a user accidentally attempts to delete the same container registry in quick succession, # this can lead to orphaned tags. try_obtain_lease do @@ -29,6 +40,28 @@ class DeleteContainerRepositoryWorker # rubocop:disable Scalability/IdempotentWo end end + private + + def migrating? + !(container_repository.default? || + container_repository.import_done? || + container_repository.import_skipped?) + end + + def migration_duration + duration = migration.import_timeout.seconds + FIXED_DELAY + + if container_repository.pre_importing? + duration += migration.dynamic_pre_import_timeout_for(container_repository) + end + + duration + end + + def migration + ContainerRegistry::Migration + end + # For ExclusiveLeaseGuard concern def lease_key @lease_key ||= "container_repository:delete:#{container_repository.id}" diff --git a/app/workers/expire_job_cache_worker.rb b/app/workers/expire_job_cache_worker.rb deleted file mode 100644 index eaa8810a78e..00000000000 --- a/app/workers/expire_job_cache_worker.rb +++ /dev/null @@ -1,22 +0,0 @@ -# frozen_string_literal: true - -class ExpireJobCacheWorker # rubocop:disable Scalability/IdempotentWorker - include ApplicationWorker - - data_consistency :delayed - - sidekiq_options retry: 3 - include PipelineQueue - - queue_namespace :pipeline_cache - urgency :high - idempotent! - - def perform(job_id) - job = CommitStatus.find_by_id(job_id) - return unless job - - job.expire_etag_cache! - ExpirePipelineCacheWorker.perform_async(job.pipeline_id) - end -end diff --git a/app/workers/expire_pipeline_cache_worker.rb b/app/workers/expire_pipeline_cache_worker.rb deleted file mode 100644 index 9a0c617da57..00000000000 --- a/app/workers/expire_pipeline_cache_worker.rb +++ /dev/null @@ -1,27 +0,0 @@ -# frozen_string_literal: true - -# rubocop: disable Scalability/IdempotentWorker -class ExpirePipelineCacheWorker - include ApplicationWorker - - sidekiq_options retry: 3 - include PipelineQueue - - queue_namespace :pipeline_cache - urgency :high - worker_resource_boundary :cpu - data_consistency :delayed - - # This worker _should_ be idempotent, but due to us moving this to data_consistency :delayed - # and an ongoing incompatibility between the two switches, we need to disable this. - # Uncomment once https://gitlab.com/gitlab-org/gitlab/-/issues/325291 is resolved - # idempotent! - - def perform(pipeline_id) - pipeline = Ci::Pipeline.find_by_id(pipeline_id) - return unless pipeline - - Ci::ExpirePipelineCacheService.new.execute(pipeline) - end -end -# rubocop:enable Scalability/IdempotentWorker diff --git a/app/workers/gitlab_service_ping_worker.rb b/app/workers/gitlab_service_ping_worker.rb index 6cf46458b1e..0f7b3ba56a5 100644 --- a/app/workers/gitlab_service_ping_worker.rb +++ b/app/workers/gitlab_service_ping_worker.rb @@ -25,7 +25,25 @@ class GitlabServicePingWorker # rubocop:disable Scalability/IdempotentWorker # Splay the request over a minute to avoid thundering herd problems. sleep(rand(0.0..60.0).round(3)) - ServicePing::SubmitService.new.execute + ServicePing::SubmitService.new(payload: usage_data).execute end end + + def usage_data + return unless Feature.enabled?(:prerecord_service_ping_data) + + ServicePing::BuildPayload.new.execute.tap do |payload| + record = { + recorded_at: payload[:recorded_at], + payload: payload, + created_at: Time.current, + updated_at: Time.current + } + + RawUsageData.upsert(record, unique_by: :recorded_at) + end + rescue StandardError => err + Gitlab::ErrorTracking.track_and_raise_for_dev_exception(err) + nil + end end diff --git a/app/workers/integrations/execute_worker.rb b/app/workers/integrations/execute_worker.rb new file mode 100644 index 00000000000..443f1d9fe8e --- /dev/null +++ b/app/workers/integrations/execute_worker.rb @@ -0,0 +1,27 @@ +# frozen_string_literal: true + +module Integrations + class ExecuteWorker # rubocop:disable Scalability/IdempotentWorker + include ApplicationWorker + + data_consistency :always + sidekiq_options retry: 3 + sidekiq_options dead: false + feature_category :integrations + urgency :low + + worker_has_external_dependencies! + + def perform(hook_id, data) + data = data.with_indifferent_access + integration = Integration.find_by_id(hook_id) + return unless integration + + begin + integration.execute(data) + rescue StandardError => e + integration.log_exception(e) + end + end + end +end diff --git a/app/workers/integrations/irker_worker.rb b/app/workers/integrations/irker_worker.rb new file mode 100644 index 00000000000..3152d68b372 --- /dev/null +++ b/app/workers/integrations/irker_worker.rb @@ -0,0 +1,193 @@ +# frozen_string_literal: true + +require 'json' +require 'socket' +require 'resolv' + +module Integrations + class IrkerWorker # rubocop:disable Scalability/IdempotentWorker + include ApplicationWorker + + data_consistency :always + sidekiq_options retry: 3 + feature_category :integrations + urgency :low + + def perform(project_id, channels, colors, push_data, settings) + # Establish connection to irker server + return false unless start_connection( + settings['server_host'], + settings['server_port'] + ) + + @project = Project.find(project_id) + @colors = colors + @channels = channels + + @repo_path = @project.full_path + @repo_name = push_data['repository']['name'] + @committer = push_data['user_name'] + @branch = push_data['ref'].gsub(%r{refs/[^/]*/}, '') + + if @colors + @repo_name = "\x0304#{@repo_name}\x0f" + @branch = "\x0305#{@branch}\x0f" + end + + # First messages are for branch creation/deletion + send_branch_updates(push_data) + + # Next messages are for commits + send_commits(push_data) + + close_connection + true + end + + private + + def start_connection(irker_server, irker_port) + ip_address = Resolv.getaddress(irker_server) + # handle IP6 addresses + domain = Resolv::IPv6::Regex.match?(ip_address) ? "[#{ip_address}]" : ip_address + + begin + Gitlab::UrlBlocker.validate!( + "irc://#{domain}", + allow_localhost: allow_local_requests?, + allow_local_network: allow_local_requests?, + schemes: ['irc']) + @socket = TCPSocket.new ip_address, irker_port + rescue Errno::ECONNREFUSED, Gitlab::UrlBlocker::BlockedUrlError => e + logger.fatal "Can't connect to Irker daemon: #{e}" + return false + end + + true + end + + def allow_local_requests? + Gitlab::CurrentSettings.allow_local_requests_from_web_hooks_and_services? + end + + def send_to_irker(privmsg) + to_send = { to: @channels, privmsg: privmsg } + + @socket.puts Gitlab::Json.dump(to_send) + end + + def close_connection + @socket.close + end + + def send_branch_updates(push_data) + message = + if Gitlab::Git.blank_ref?(push_data['before']) + new_branch_message + elsif Gitlab::Git.blank_ref?(push_data['after']) + delete_branch_message + end + + send_to_irker(message) + end + + def new_branch_message + newbranch = "#{Gitlab.config.gitlab.url}/#{@repo_path}/-/branches" + newbranch = "\x0302\x1f#{newbranch}\x0f" if @colors + + "[#{@repo_name}] #{@committer} has created a new branch #{@branch}: #{newbranch}" + end + + def delete_branch_message + "[#{@repo_name}] #{@committer} has deleted the branch #{@branch}" + end + + def send_commits(push_data) + return if push_data['total_commits_count'] == 0 + + # Next message is for number of commit pushed, if any + if Gitlab::Git.blank_ref?(push_data['before']) + # Tweak on push_data["before"] in order to have a nice compare URL + push_data['before'] = before_on_new_branch(push_data) + end + + send_commits_count(push_data) + + # One message per commit, limited by 3 messages (same limit as the + # github irc hook) + commits = push_data['commits'].first(3) + commits.each do |commit_attrs| + send_one_commit(commit_attrs) + end + end + + def before_on_new_branch(push_data) + commit = commit_from_id(push_data['commits'][0]['id']) + parents = commit.parents + + # Return old value if there's no new one + return push_data['before'] if parents.empty? + + # Or return the first parent-commit + parents[0].id + end + + def send_commits_count(push_data) + url = compare_url(push_data['before'], push_data['after']) + commits = colorize_commits(push_data['total_commits_count']) + new_commits = 'new commit'.pluralize(push_data['total_commits_count']) + + send_to_irker("[#{@repo_name}] #{@committer} pushed #{commits} #{new_commits} " \ + "to #{@branch}: #{url}") + end + + def compare_url(sha_before, sha_after) + sha1 = Commit.truncate_sha(sha_before) + sha2 = Commit.truncate_sha(sha_after) + compare_url = "#{Gitlab.config.gitlab.url}/#{@repo_path}/-/compare" \ + "/#{sha1}...#{sha2}" + + colorize_url(compare_url) + end + + def send_one_commit(commit_attrs) + commit = commit_from_id(commit_attrs['id']) + sha = colorize_sha(Commit.truncate_sha(commit_attrs['id'])) + author = commit_attrs['author']['name'] + files = colorize_nb_files(files_count(commit)) + title = commit.title + + send_to_irker("#{@repo_name}/#{@branch} #{sha} #{author} (#{files}): #{title}") + end + + def commit_from_id(id) + @project.commit(id) + end + + def files_count(commit) + diff_size = commit.raw_deltas.size + + "#{diff_size} file".pluralize(diff_size) + end + + def colorize_sha(sha) + sha = "\x0314#{sha}\x0f" if @colors + sha + end + + def colorize_nb_files(nb_files) + nb_files = "\x0312#{nb_files}\x0f" if @colors + nb_files + end + + def colorize_url(url) + url = "\x0302\x1f#{url}\x0f" if @colors + url + end + + def colorize_commits(commits) + commits = "\x02#{commits}\x0f" if @colors + commits + end + end +end diff --git a/app/workers/irker_worker.rb b/app/workers/irker_worker.rb index 4f51bb69b8c..a054021e418 100644 --- a/app/workers/irker_worker.rb +++ b/app/workers/irker_worker.rb @@ -1,189 +1,9 @@ # frozen_string_literal: true -require 'json' -require 'socket' -require 'resolv' - -class IrkerWorker # rubocop:disable Scalability/IdempotentWorker - include ApplicationWorker - - data_consistency :always - sidekiq_options retry: 3 - feature_category :integrations - urgency :low - - def perform(project_id, channels, colors, push_data, settings) - # Establish connection to irker server - return false unless start_connection(settings['server_host'], - settings['server_port']) - - @project = Project.find(project_id) - @colors = colors - @channels = channels - - @repo_path = @project.full_path - @repo_name = push_data['repository']['name'] - @committer = push_data['user_name'] - @branch = push_data['ref'].gsub(%r'refs/[^/]*/', '') - - if @colors - @repo_name = "\x0304#{@repo_name}\x0f" - @branch = "\x0305#{@branch}\x0f" - end - - # First messages are for branch creation/deletion - send_branch_updates(push_data) - - # Next messages are for commits - send_commits(push_data) - - close_connection - true - end - - private - - def start_connection(irker_server, irker_port) - ip_address = Resolv.getaddress(irker_server) - # handle IP6 addresses - domain = Resolv::IPv6::Regex.match?(ip_address) ? "[#{ip_address}]" : ip_address - - begin - Gitlab::UrlBlocker.validate!( - "irc://#{domain}", - allow_localhost: allow_local_requests?, - allow_local_network: allow_local_requests?, - schemes: ['irc']) - @socket = TCPSocket.new ip_address, irker_port - rescue Errno::ECONNREFUSED, Gitlab::UrlBlocker::BlockedUrlError => e - logger.fatal "Can't connect to Irker daemon: #{e}" - return false - end - - true - end - - def allow_local_requests? - Gitlab::CurrentSettings.allow_local_requests_from_web_hooks_and_services? - end - - def send_to_irker(privmsg) - to_send = { to: @channels, privmsg: privmsg } - - @socket.puts Gitlab::Json.dump(to_send) - end - - def close_connection - @socket.close - end - - def send_branch_updates(push_data) - message = - if Gitlab::Git.blank_ref?(push_data['before']) - new_branch_message - elsif Gitlab::Git.blank_ref?(push_data['after']) - delete_branch_message - end - - send_to_irker(message) - end - - def new_branch_message - newbranch = "#{Gitlab.config.gitlab.url}/#{@repo_path}/-/branches" - newbranch = "\x0302\x1f#{newbranch}\x0f" if @colors - - "[#{@repo_name}] #{@committer} has created a new branch #{@branch}: #{newbranch}" - end - - def delete_branch_message - "[#{@repo_name}] #{@committer} has deleted the branch #{@branch}" - end - - def send_commits(push_data) - return if push_data['total_commits_count'] == 0 - - # Next message is for number of commit pushed, if any - if Gitlab::Git.blank_ref?(push_data['before']) - # Tweak on push_data["before"] in order to have a nice compare URL - push_data['before'] = before_on_new_branch(push_data) - end - - send_commits_count(push_data) - - # One message per commit, limited by 3 messages (same limit as the - # github irc hook) - commits = push_data['commits'].first(3) - commits.each do |commit_attrs| - send_one_commit(commit_attrs) - end - end - - def before_on_new_branch(push_data) - commit = commit_from_id(push_data['commits'][0]['id']) - parents = commit.parents - - # Return old value if there's no new one - return push_data['before'] if parents.empty? - - # Or return the first parent-commit - parents[0].id - end - - def send_commits_count(push_data) - url = compare_url(push_data['before'], push_data['after']) - commits = colorize_commits(push_data['total_commits_count']) - new_commits = 'new commit'.pluralize(push_data['total_commits_count']) - - send_to_irker("[#{@repo_name}] #{@committer} pushed #{commits} #{new_commits} " \ - "to #{@branch}: #{url}") - end - - def compare_url(sha_before, sha_after) - sha1 = Commit.truncate_sha(sha_before) - sha2 = Commit.truncate_sha(sha_after) - compare_url = "#{Gitlab.config.gitlab.url}/#{@repo_path}/-/compare" \ - "/#{sha1}...#{sha2}" - - colorize_url(compare_url) - end - - def send_one_commit(commit_attrs) - commit = commit_from_id(commit_attrs['id']) - sha = colorize_sha(Commit.truncate_sha(commit_attrs['id'])) - author = commit_attrs['author']['name'] - files = colorize_nb_files(files_count(commit)) - title = commit.title - - send_to_irker("#{@repo_name}/#{@branch} #{sha} #{author} (#{files}): #{title}") - end - - def commit_from_id(id) - @project.commit(id) - end - - def files_count(commit) - diff_size = commit.raw_deltas.size - - "#{diff_size} file".pluralize(diff_size) - end - - def colorize_sha(sha) - sha = "\x0314#{sha}\x0f" if @colors - sha - end - - def colorize_nb_files(nb_files) - nb_files = "\x0312#{nb_files}\x0f" if @colors - nb_files - end - - def colorize_url(url) - url = "\x0302\x1f#{url}\x0f" if @colors - url - end - - def colorize_commits(commits) - commits = "\x02#{commits}\x0f" if @colors - commits - end +# This worker was renamed in 15.1, we can delete it in 15.2. +# See: https://gitlab.com/gitlab-org/gitlab/-/issues/364112 +# +# rubocop: disable Gitlab/NamespacedClass +# rubocop:disable Scalability/IdempotentWorker +class IrkerWorker < Integrations::IrkerWorker end diff --git a/app/workers/issue_placement_worker.rb b/app/workers/issue_placement_worker.rb deleted file mode 100644 index 26dec221f45..00000000000 --- a/app/workers/issue_placement_worker.rb +++ /dev/null @@ -1,71 +0,0 @@ -# frozen_string_literal: true - -# DEPRECATED. Will be removed in 14.7 https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72803 -# Please use Issues::PlacementWorker instead -# -# todo: remove this worker and it's queue definition from all_queues after Issues::PlacementWorker is deployed -# We want to keep it for one release in case some jobs are already scheduled in the old queue so we need the worker -# to be available to finish those. All new jobs will be queued into the new queue. -class IssuePlacementWorker - include ApplicationWorker - - data_consistency :always - - sidekiq_options retry: 3 - - idempotent! - deduplicate :until_executed, including_scheduled: true - feature_category :team_planning - urgency :high - worker_resource_boundary :cpu - weight 2 - - # Move at most the most recent 100 issues - QUERY_LIMIT = 100 - - # rubocop: disable CodeReuse/ActiveRecord - def perform(issue_id, project_id = nil) - issue = find_issue(issue_id, project_id) - return unless issue - - # Temporary disable moving null elements because of performance problems - # For more information check https://gitlab.com/gitlab-com/gl-infra/production/-/issues/4321 - return if issue.blocked_for_repositioning? - - # Move the oldest 100 unpositioned items to the end. - # This is to deal with out-of-order execution of the worker, - # while preserving creation order. - to_place = Issue - .relative_positioning_query_base(issue) - .with_null_relative_position - .order({ created_at: :asc }, { id: :asc }) - .limit(QUERY_LIMIT + 1) - .to_a - - leftover = to_place.pop if to_place.count > QUERY_LIMIT - - Issue.move_nulls_to_end(to_place) - Issues::BaseService.new(project: nil).rebalance_if_needed(to_place.max_by(&:relative_position)) - Issues::PlacementWorker.perform_async(nil, leftover.project_id) if leftover.present? - rescue RelativePositioning::NoSpaceLeft => e - Gitlab::ErrorTracking.log_exception(e, issue_id: issue_id, project_id: project_id) - Issues::RebalancingWorker.perform_async(nil, *root_namespace_id_to_rebalance(issue, project_id)) - end - - def find_issue(issue_id, project_id) - return Issue.id_in(issue_id).take if issue_id - - project = Project.id_in(project_id).take - return unless project - - project.issues.take - end - # rubocop: enable CodeReuse/ActiveRecord - - private - - def root_namespace_id_to_rebalance(issue, project_id) - project_id = project_id.presence || issue.project_id - Project.find(project_id)&.self_or_root_group_ids - end -end diff --git a/app/workers/issue_rebalancing_worker.rb b/app/workers/issue_rebalancing_worker.rb deleted file mode 100644 index 73edb2eb653..00000000000 --- a/app/workers/issue_rebalancing_worker.rb +++ /dev/null @@ -1,56 +0,0 @@ -# frozen_string_literal: true - -# DEPRECATED. Will be removed in 14.7 https://gitlab.com/gitlab-org/gitlab/-/merge_requests/72803 -# Please use Issues::RebalancingWorker instead -# -# todo: remove this worker and it's queue definition from all_queues after Issue::RebalancingWorker is released. -# We want to keep it for one release in case some jobs are already scheduled in the old queue so we need the worker -# to be available to finish those. All new jobs will be queued into the new queue. -class IssueRebalancingWorker - include ApplicationWorker - - data_consistency :always - - sidekiq_options retry: 3 - - idempotent! - urgency :low - feature_category :team_planning - deduplicate :until_executed, including_scheduled: true - - def perform(ignore = nil, project_id = nil, root_namespace_id = nil) - # we need to have exactly one of the project_id and root_namespace_id params be non-nil - raise ArgumentError, "Expected only one of the params project_id: #{project_id} and root_namespace_id: #{root_namespace_id}" if project_id && root_namespace_id - return if project_id.nil? && root_namespace_id.nil? - return if ::Gitlab::Issues::Rebalancing::State.rebalance_recently_finished?(project_id, root_namespace_id) - - # pull the projects collection to be rebalanced either the project if namespace is not a group(i.e. user namesapce) - # or the root namespace, this also makes the worker backward compatible with previous version where a project_id was - # passed as the param - projects_to_rebalance = projects_collection(project_id, root_namespace_id) - - # something might have happened with the namespace between scheduling the worker and actually running it, - # maybe it was removed. - if projects_to_rebalance.blank? - Gitlab::ErrorTracking.log_exception( - ArgumentError.new("Projects to be rebalanced not found for arguments: project_id #{project_id}, root_namespace_id: #{root_namespace_id}"), - { project_id: project_id, root_namespace_id: root_namespace_id }) - - return - end - - Issues::RelativePositionRebalancingService.new(projects_to_rebalance).execute - rescue Issues::RelativePositionRebalancingService::TooManyConcurrentRebalances => e - Gitlab::ErrorTracking.log_exception(e, root_namespace_id: root_namespace_id, project_id: project_id) - end - - private - - def projects_collection(project_id, root_namespace_id) - # we can have either project_id(older version) or project_id if project is part of a user namespace and not a group - # or root_namespace_id(newer version) never both. - return Project.id_in([project_id]) if project_id - - Namespace.find_by_id(root_namespace_id)&.all_projects - end -end diff --git a/app/workers/loose_foreign_keys/cleanup_worker.rb b/app/workers/loose_foreign_keys/cleanup_worker.rb index ecece92ec1b..0d04c503fbf 100644 --- a/app/workers/loose_foreign_keys/cleanup_worker.rb +++ b/app/workers/loose_foreign_keys/cleanup_worker.rb @@ -7,7 +7,7 @@ module LooseForeignKeys include CronjobQueue # rubocop: disable Scalability/CronWorkerContext sidekiq_options retry: false - feature_category :sharding + feature_category :pods data_consistency :always idempotent! diff --git a/app/workers/merge_requests/create_pipeline_worker.rb b/app/workers/merge_requests/create_pipeline_worker.rb index ee42a3dee08..b40408cf647 100644 --- a/app/workers/merge_requests/create_pipeline_worker.rb +++ b/app/workers/merge_requests/create_pipeline_worker.rb @@ -15,7 +15,7 @@ module MergeRequests worker_resource_boundary :cpu idempotent! - def perform(project_id, user_id, merge_request_id) + def perform(project_id, user_id, merge_request_id, params = {}) project = Project.find_by_id(project_id) return unless project @@ -25,7 +25,12 @@ module MergeRequests merge_request = MergeRequest.find_by_id(merge_request_id) return unless merge_request - MergeRequests::CreatePipelineService.new(project: project, current_user: user).execute(merge_request) + push_options = params.with_indifferent_access[:push_options] + + MergeRequests::CreatePipelineService + .new(project: project, current_user: user, params: { push_options: push_options }) + .execute(merge_request) + merge_request.update_head_pipeline end end diff --git a/app/workers/merge_requests/update_head_pipeline_worker.rb b/app/workers/merge_requests/update_head_pipeline_worker.rb index acebf5fc767..bc3a289c1e1 100644 --- a/app/workers/merge_requests/update_head_pipeline_worker.rb +++ b/app/workers/merge_requests/update_head_pipeline_worker.rb @@ -14,7 +14,7 @@ module MergeRequests def handle_event(event) Ci::Pipeline.find_by_id(event.data[:pipeline_id]).try do |pipeline| pipeline.all_merge_requests.opened.each do |merge_request| - UpdateHeadPipelineForMergeRequestWorker.perform_async(merge_request.id) + merge_request.update_head_pipeline end end end diff --git a/app/workers/namespaceless_project_destroy_worker.rb b/app/workers/namespaceless_project_destroy_worker.rb deleted file mode 100644 index c2ed379be48..00000000000 --- a/app/workers/namespaceless_project_destroy_worker.rb +++ /dev/null @@ -1,42 +0,0 @@ -# frozen_string_literal: true - -# Worker to destroy projects that do not have a namespace -# -# It destroys everything it can without having the info about the namespace it -# used to belong to. Projects in this state should be rare. -# The worker will reject doing anything for projects that *do* have a -# namespace. For those use ProjectDestroyWorker instead. -class NamespacelessProjectDestroyWorker # rubocop:disable Scalability/IdempotentWorker - include ApplicationWorker - - data_consistency :always - - sidekiq_options retry: 3 - include ExceptionBacktrace - - feature_category :authentication_and_authorization - - def perform(project_id) - begin - project = Project.unscoped.find(project_id) - rescue ActiveRecord::RecordNotFound - return - end - - return if project.namespace # Reject doing anything for projects that *do* have a namespace - - project.team.truncate - - unlink_fork(project) if project.forked? - - project.destroy! - end - - private - - def unlink_fork(project) - merge_requests = project.forked_from_project.merge_requests.opened.from_project(project) - - merge_requests.update_all(state_id: MergeRequest.available_states[:closed]) - end -end diff --git a/app/workers/namespaces/process_sync_events_worker.rb b/app/workers/namespaces/process_sync_events_worker.rb index 269710dd804..36c4ab2058d 100644 --- a/app/workers/namespaces/process_sync_events_worker.rb +++ b/app/workers/namespaces/process_sync_events_worker.rb @@ -9,11 +9,11 @@ module Namespaces data_consistency :always - feature_category :sharding + feature_category :pods urgency :high idempotent! - deduplicate :until_executing + deduplicate :until_executed def perform results = ::Ci::ProcessSyncEventsService.new( diff --git a/app/workers/pages_transfer_worker.rb b/app/workers/pages_transfer_worker.rb index 404c79b9e89..6d3918e7ab6 100644 --- a/app/workers/pages_transfer_worker.rb +++ b/app/workers/pages_transfer_worker.rb @@ -13,12 +13,8 @@ class PagesTransferWorker # rubocop:disable Scalability/IdempotentWorker loggable_arguments 0, 1 def perform(method, args) - return unless Gitlab::PagesTransfer::METHODS.include?(method) - - result = Gitlab::PagesTransfer.new.public_send(method, *args) # rubocop:disable GitlabSecurity/PublicSend - - # If result isn't truthy, the move failed. Promote this to an - # exception so that it will be logged and retried appropriately - raise TransferFailedError unless result + # noop + # This worker is not necessary anymore and will be removed + # https://gitlab.com/gitlab-org/gitlab/-/issues/340616 end end diff --git a/app/workers/pipeline_hooks_worker.rb b/app/workers/pipeline_hooks_worker.rb index eb5d0086592..800cf50e732 100644 --- a/app/workers/pipeline_hooks_worker.rb +++ b/app/workers/pipeline_hooks_worker.rb @@ -13,6 +13,7 @@ class PipelineHooksWorker # rubocop:disable Scalability/IdempotentWorker def perform(pipeline_id) pipeline = Ci::Pipeline.find_by_id(pipeline_id) return unless pipeline + return if pipeline.user&.blocked? Ci::Pipelines::HookService.new(pipeline).execute end diff --git a/app/workers/pipeline_notification_worker.rb b/app/workers/pipeline_notification_worker.rb index 640f3494d58..2ed2e2ff1d0 100644 --- a/app/workers/pipeline_notification_worker.rb +++ b/app/workers/pipeline_notification_worker.rb @@ -23,6 +23,7 @@ class PipelineNotificationWorker # rubocop:disable Scalability/IdempotentWorker pipeline = Ci::Pipeline.find_by_id(pipeline_id) return unless pipeline + return if pipeline.user&.blocked? NotificationService.new.pipeline_finished(pipeline, ref_status: ref_status, recipients: recipients) end diff --git a/app/workers/project_daily_statistics_worker.rb b/app/workers/project_daily_statistics_worker.rb deleted file mode 100644 index 02f8958f82a..00000000000 --- a/app/workers/project_daily_statistics_worker.rb +++ /dev/null @@ -1,20 +0,0 @@ -# frozen_string_literal: true - -# Deprecated: https://gitlab.com/gitlab-org/gitlab/-/issues/214585 -class ProjectDailyStatisticsWorker # rubocop:disable Scalability/IdempotentWorker - include ApplicationWorker - - data_consistency :always - - sidekiq_options retry: 3 - - feature_category :source_code_management - - def perform(project_id) - project = Project.find_by_id(project_id) - - return unless project&.repository&.exists? - - Projects::FetchStatisticsIncrementService.new(project).execute - end -end diff --git a/app/workers/project_service_worker.rb b/app/workers/project_service_worker.rb index f73958a6ef9..56ac4bc046a 100644 --- a/app/workers/project_service_worker.rb +++ b/app/workers/project_service_worker.rb @@ -1,8 +1,11 @@ # frozen_string_literal: true -class ProjectServiceWorker # rubocop:disable Scalability/IdempotentWorker - include ApplicationWorker - +# This worker was renamed in 15.1, we can delete it in 15.2. +# See: https://gitlab.com/gitlab-org/gitlab/-/issues/364112 +# +# rubocop: disable Gitlab/NamespacedClass +# rubocop: disable Scalability/IdempotentWorker +class ProjectServiceWorker < Integrations::ExecuteWorker data_consistency :always sidekiq_options retry: 3 sidekiq_options dead: false @@ -10,16 +13,4 @@ class ProjectServiceWorker # rubocop:disable Scalability/IdempotentWorker urgency :low worker_has_external_dependencies! - - def perform(hook_id, data) - data = data.with_indifferent_access - integration = Integration.find_by_id(hook_id) - return unless integration - - begin - integration.execute(data) - rescue StandardError => error - integration.log_exception(error) - end - end end diff --git a/app/workers/projects/inactive_projects_deletion_cron_worker.rb b/app/workers/projects/inactive_projects_deletion_cron_worker.rb index 2c3f4191502..a280c9203d6 100644 --- a/app/workers/projects/inactive_projects_deletion_cron_worker.rb +++ b/app/workers/projects/inactive_projects_deletion_cron_worker.rb @@ -9,34 +9,53 @@ module Projects idempotent! data_consistency :always feature_category :compliance_management + urgency :low - INTERVAL = 2.seconds.to_i + # This cron worker is executed at an interval of 10 minutes. + # Maximum run time is kept as 4 minutes to avoid breaching maximum allowed execution latency of 5 minutes. + MAX_RUN_TIME = 4.minutes + LAST_PROCESSED_INACTIVE_PROJECT_REDIS_KEY = 'last_processed_inactive_project_id' + + TimeoutError = Class.new(StandardError) def perform return unless ::Gitlab::CurrentSettings.delete_inactive_projects? + @start_time ||= ::Gitlab::Metrics::System.monotonic_time admin_user = User.admins.active.first return unless admin_user notified_inactive_projects = Gitlab::InactiveProjectsDeletionWarningTracker.notified_projects - Project.inactive.without_deleted.find_each(batch_size: 100).with_index do |project, index| # rubocop: disable CodeReuse/ActiveRecord - next unless Feature.enabled?(:inactive_projects_deletion, project.root_namespace) + project_id = last_processed_project_id + + Project.where('projects.id > ?', project_id).each_batch(of: 100) do |batch| # rubocop: disable CodeReuse/ActiveRecord + inactive_projects = batch.inactive.without_deleted + + inactive_projects.each do |project| + if over_time? + save_last_processed_project_id(project.id) + raise TimeoutError + end - delay = index * INTERVAL + next unless Feature.enabled?(:inactive_projects_deletion, project.root_namespace) - with_context(project: project, user: admin_user) do - deletion_warning_email_sent_on = notified_inactive_projects["project:#{project.id}"] + with_context(project: project, user: admin_user) do + deletion_warning_email_sent_on = notified_inactive_projects["project:#{project.id}"] - if send_deletion_warning_email?(deletion_warning_email_sent_on, project) - send_notification(delay, project, admin_user) - elsif deletion_warning_email_sent_on && delete_due_to_inactivity?(deletion_warning_email_sent_on) - Gitlab::InactiveProjectsDeletionWarningTracker.new(project.id).reset - delete_project(project, admin_user) + if send_deletion_warning_email?(deletion_warning_email_sent_on, project) + send_notification(project, admin_user) + elsif deletion_warning_email_sent_on && delete_due_to_inactivity?(deletion_warning_email_sent_on) + Gitlab::InactiveProjectsDeletionWarningTracker.new(project.id).reset + delete_project(project, admin_user) + end end end end + reset_last_processed_project_id + rescue TimeoutError + # no-op end private @@ -64,8 +83,30 @@ module Projects ::Projects::DestroyService.new(project, user, {}).async_execute end - def send_notification(delay, project, user) - ::Projects::InactiveProjectsDeletionNotificationWorker.perform_in(delay, project.id, deletion_date) + def send_notification(project, user) + ::Projects::InactiveProjectsDeletionNotificationWorker.perform_async(project.id, deletion_date) + end + + def over_time? + (::Gitlab::Metrics::System.monotonic_time - @start_time) > MAX_RUN_TIME + end + + def save_last_processed_project_id(project_id) + Gitlab::Redis::Cache.with do |redis| + redis.set(LAST_PROCESSED_INACTIVE_PROJECT_REDIS_KEY, project_id) + end + end + + def last_processed_project_id + Gitlab::Redis::Cache.with do |redis| + redis.get(LAST_PROCESSED_INACTIVE_PROJECT_REDIS_KEY).to_i + end + end + + def reset_last_processed_project_id + Gitlab::Redis::Cache.with do |redis| + redis.del(LAST_PROCESSED_INACTIVE_PROJECT_REDIS_KEY) + end end end end diff --git a/app/workers/projects/process_sync_events_worker.rb b/app/workers/projects/process_sync_events_worker.rb index 1330ae47a68..92322a9ea99 100644 --- a/app/workers/projects/process_sync_events_worker.rb +++ b/app/workers/projects/process_sync_events_worker.rb @@ -9,11 +9,11 @@ module Projects data_consistency :always - feature_category :sharding + feature_category :pods urgency :high idempotent! - deduplicate :until_executing + deduplicate :until_executed def perform results = ::Ci::ProcessSyncEventsService.new( diff --git a/app/workers/prometheus/create_default_alerts_worker.rb b/app/workers/prometheus/create_default_alerts_worker.rb deleted file mode 100644 index 1a0fe7e8d56..00000000000 --- a/app/workers/prometheus/create_default_alerts_worker.rb +++ /dev/null @@ -1,19 +0,0 @@ -# frozen_string_literal: true - -module Prometheus - class CreateDefaultAlertsWorker - include ApplicationWorker - - data_consistency :always - - sidekiq_options retry: 3 - - feature_category :incident_management - urgency :high - idempotent! - - def perform(project_id) - # No-op Will be removed in https://gitlab.com/gitlab-org/gitlab/-/issues/360756 - end - end -end diff --git a/app/workers/repository_remove_remote_worker.rb b/app/workers/repository_remove_remote_worker.rb deleted file mode 100644 index c95393e7d21..00000000000 --- a/app/workers/repository_remove_remote_worker.rb +++ /dev/null @@ -1,35 +0,0 @@ -# frozen_string_literal: true - -class RepositoryRemoveRemoteWorker # rubocop:disable Scalability/IdempotentWorker - include ApplicationWorker - - data_consistency :always - - sidekiq_options retry: 3 - include ExclusiveLeaseGuard - - feature_category :source_code_management - loggable_arguments 1 - - LEASE_TIMEOUT = 1.hour - - attr_reader :project, :remote_name - - def perform(project_id, remote_name) - # On-disk remotes are slated for removal, and GitLab doesn't create any of - # them anymore. For backwards compatibility, we need to keep the worker - # though such that we can be sure to drain all jobs on an update. Making - # this a no-op is fine though: the worst that can happen is that we still - # have old remotes lingering in the repository's config, but Gitaly will - # start to clean these up in repository maintenance. - # https://gitlab.com/gitlab-org/gitlab/-/issues/336745 - end - - def lease_timeout - LEASE_TIMEOUT - end - - def lease_key - "remove_remote_#{project.id}_#{remote_name}" - end -end diff --git a/app/workers/schedule_merge_request_cleanup_refs_worker.rb b/app/workers/schedule_merge_request_cleanup_refs_worker.rb index b3d0067471a..8099c3d56b6 100644 --- a/app/workers/schedule_merge_request_cleanup_refs_worker.rb +++ b/app/workers/schedule_merge_request_cleanup_refs_worker.rb @@ -14,6 +14,7 @@ class ScheduleMergeRequestCleanupRefsWorker return if Gitlab::Database.read_only? return unless Feature.enabled?(:merge_request_refs_cleanup) + MergeRequest::CleanupSchedule.stuck_retry! MergeRequestCleanupRefsWorker.perform_with_capacity end end diff --git a/app/workers/terraform/states/destroy_worker.rb b/app/workers/terraform/states/destroy_worker.rb new file mode 100644 index 00000000000..48abf0f22b8 --- /dev/null +++ b/app/workers/terraform/states/destroy_worker.rb @@ -0,0 +1,23 @@ +# frozen_string_literal: true + +module Terraform + module States + class DestroyWorker + include ApplicationWorker + + queue_namespace :terraform + feature_category :infrastructure_as_code + + deduplicate :until_executed + idempotent! + urgency :low + data_consistency :always + + def perform(terraform_state_id) + if state = Terraform::State.find_by_id(terraform_state_id) + Terraform::States::DestroyService.new(state).execute + end + end + end + end +end diff --git a/app/workers/update_merge_requests_worker.rb b/app/workers/update_merge_requests_worker.rb index 5c96257cb63..eb69c0eaba6 100644 --- a/app/workers/update_merge_requests_worker.rb +++ b/app/workers/update_merge_requests_worker.rb @@ -13,13 +13,17 @@ class UpdateMergeRequestsWorker # rubocop:disable Scalability/IdempotentWorker weight 3 loggable_arguments 2, 3, 4 - def perform(project_id, user_id, oldrev, newrev, ref) + def perform(project_id, user_id, oldrev, newrev, ref, params = {}) project = Project.find_by_id(project_id) return unless project user = User.find_by_id(user_id) return unless user - MergeRequests::RefreshService.new(project: project, current_user: user).execute(oldrev, newrev, ref) + push_options = params.with_indifferent_access[:push_options] + + MergeRequests::RefreshService + .new(project: project, current_user: user, params: { push_options: push_options }) + .execute(oldrev, newrev, ref) end end diff --git a/app/workers/web_hooks/destroy_worker.rb b/app/workers/web_hooks/destroy_worker.rb index 822a1e770d7..8f9b194f88a 100644 --- a/app/workers/web_hooks/destroy_worker.rb +++ b/app/workers/web_hooks/destroy_worker.rb @@ -4,6 +4,8 @@ module WebHooks class DestroyWorker include ApplicationWorker + DestroyError = Class.new(StandardError) + data_consistency :always sidekiq_options retry: 3 feature_category :integrations @@ -19,12 +21,7 @@ module WebHooks result = ::WebHooks::DestroyService.new(user).sync_destroy(hook) - return result if result[:status] == :success - - e = ::WebHooks::DestroyService::DestroyError.new(result[:message]) - Gitlab::ErrorTracking.track_exception(e, web_hook_id: hook.id) - - raise e + result.track_and_raise_exception(as: DestroyError, web_hook_id: hook.id) end end end diff --git a/app/workers/web_hooks/log_destroy_worker.rb b/app/workers/web_hooks/log_destroy_worker.rb new file mode 100644 index 00000000000..9ea5c70e416 --- /dev/null +++ b/app/workers/web_hooks/log_destroy_worker.rb @@ -0,0 +1,24 @@ +# frozen_string_literal: true + +module WebHooks + class LogDestroyWorker + include ApplicationWorker + + DestroyError = Class.new(StandardError) + + data_consistency :always + feature_category :integrations + urgency :low + + idempotent! + + def perform(params = {}) + hook_id = params['hook_id'] + return unless hook_id + + result = ::WebHooks::LogDestroyService.new(hook_id).execute + + result.track_and_raise_exception(as: DestroyError, web_hook_id: hook_id) + end + end +end |