Commit f78af0fc authored by Oswaldo Ferreira's avatar Oswaldo Ferreira

Add cop to encourage idempotent Sidekiq workers

This commit's goal is to add a cop (Scalability::IdempotentWorker)
that will catch all workers that don't call idempotent! in its scope.

Calling it will label the worker as idempotent, which will end up in
our Sidekiq logs for further visibility.

This also introduces a shared example and a perform_multiple helper
method for executing jobs multiple times through unit tests.

Also in this commit we set an example in an already idempotent worker
ExpireJobCacheWorker. For this worker we call idempotent! in its
scope and add tests with the new test helpers.
parent f378b397
# frozen_string_literal: true # frozen_string_literal: true
class AdminEmailWorker class AdminEmailWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
...@@ -9,1077 +9,1257 @@ ...@@ -9,1077 +9,1257 @@
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: auto_merge:auto_merge_process - :name: auto_merge:auto_merge_process
:feature_category: :continuous_delivery :feature_category: :continuous_delivery
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 3 :weight: 3
:idempotent:
- :name: chaos:chaos_cpu_spin - :name: chaos:chaos_cpu_spin
:feature_category: :chaos_engineering :feature_category: :chaos_engineering
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: chaos:chaos_db_spin - :name: chaos:chaos_db_spin
:feature_category: :chaos_engineering :feature_category: :chaos_engineering
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: chaos:chaos_kill - :name: chaos:chaos_kill
:feature_category: :chaos_engineering :feature_category: :chaos_engineering
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: chaos:chaos_leak_mem - :name: chaos:chaos_leak_mem
:feature_category: :chaos_engineering :feature_category: :chaos_engineering
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: chaos:chaos_sleep - :name: chaos:chaos_sleep
:feature_category: :chaos_engineering :feature_category: :chaos_engineering
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: container_repository:cleanup_container_repository - :name: container_repository:cleanup_container_repository
:feature_category: :container_registry :feature_category: :container_registry
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: container_repository:delete_container_repository - :name: container_repository:delete_container_repository
:feature_category: :container_registry :feature_category: :container_registry
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:admin_email - :name: cronjob:admin_email
:feature_category: :not_owned :feature_category: :not_owned
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:ci_archive_traces_cron - :name: cronjob:ci_archive_traces_cron
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:container_expiration_policy - :name: cronjob:container_expiration_policy
:feature_category: :container_registry :feature_category: :container_registry
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:environments_auto_stop_cron - :name: cronjob:environments_auto_stop_cron
:feature_category: :continuous_delivery :feature_category: :continuous_delivery
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:expire_build_artifacts - :name: cronjob:expire_build_artifacts
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:gitlab_usage_ping - :name: cronjob:gitlab_usage_ping
:feature_category: :not_owned :feature_category: :not_owned
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:import_export_project_cleanup - :name: cronjob:import_export_project_cleanup
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:issue_due_scheduler - :name: cronjob:issue_due_scheduler
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:namespaces_prune_aggregation_schedules - :name: cronjob:namespaces_prune_aggregation_schedules
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:pages_domain_removal_cron - :name: cronjob:pages_domain_removal_cron
:feature_category: :pages :feature_category: :pages
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:pages_domain_ssl_renewal_cron - :name: cronjob:pages_domain_ssl_renewal_cron
:feature_category: :pages :feature_category: :pages
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:pages_domain_verification_cron - :name: cronjob:pages_domain_verification_cron
:feature_category: :pages :feature_category: :pages
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:personal_access_tokens_expiring - :name: cronjob:personal_access_tokens_expiring
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:pipeline_schedule - :name: cronjob:pipeline_schedule
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:prune_old_events - :name: cronjob:prune_old_events
:feature_category: :not_owned :feature_category: :not_owned
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:prune_web_hook_logs - :name: cronjob:prune_web_hook_logs
:feature_category: :integrations :feature_category: :integrations
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:remove_expired_group_links - :name: cronjob:remove_expired_group_links
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:remove_expired_members - :name: cronjob:remove_expired_members
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:remove_unreferenced_lfs_objects - :name: cronjob:remove_unreferenced_lfs_objects
:feature_category: :git_lfs :feature_category: :git_lfs
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:repository_archive_cache - :name: cronjob:repository_archive_cache
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:repository_check_dispatch - :name: cronjob:repository_check_dispatch
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:requests_profiles - :name: cronjob:requests_profiles
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:schedule_migrate_external_diffs - :name: cronjob:schedule_migrate_external_diffs
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:stuck_ci_jobs - :name: cronjob:stuck_ci_jobs
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:stuck_import_jobs - :name: cronjob:stuck_import_jobs
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:stuck_merge_jobs - :name: cronjob:stuck_merge_jobs
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:trending_projects - :name: cronjob:trending_projects
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: deployment:deployments_finished - :name: deployment:deployments_finished
:feature_category: :continuous_delivery :feature_category: :continuous_delivery
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 3 :weight: 3
:idempotent:
- :name: deployment:deployments_forward_deployment - :name: deployment:deployments_forward_deployment
:feature_category: :continuous_delivery :feature_category: :continuous_delivery
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 3 :weight: 3
:idempotent:
- :name: deployment:deployments_success - :name: deployment:deployments_success
:feature_category: :continuous_delivery :feature_category: :continuous_delivery
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 3 :weight: 3
:idempotent:
- :name: gcp_cluster:cluster_configure - :name: gcp_cluster:cluster_configure
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:cluster_configure_istio - :name: gcp_cluster:cluster_configure_istio
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:cluster_install_app - :name: gcp_cluster:cluster_install_app
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:cluster_patch_app - :name: gcp_cluster:cluster_patch_app
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:cluster_project_configure - :name: gcp_cluster:cluster_project_configure
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:cluster_provision - :name: gcp_cluster:cluster_provision
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:cluster_upgrade_app - :name: gcp_cluster:cluster_upgrade_app
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:cluster_wait_for_app_installation - :name: gcp_cluster:cluster_wait_for_app_installation
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:cluster_wait_for_ingress_ip_address - :name: gcp_cluster:cluster_wait_for_ingress_ip_address
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:clusters_applications_activate_service - :name: gcp_cluster:clusters_applications_activate_service
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:clusters_applications_deactivate_service - :name: gcp_cluster:clusters_applications_deactivate_service
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:clusters_applications_uninstall - :name: gcp_cluster:clusters_applications_uninstall
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:clusters_applications_wait_for_uninstall_app - :name: gcp_cluster:clusters_applications_wait_for_uninstall_app
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:clusters_cleanup_app - :name: gcp_cluster:clusters_cleanup_app
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:clusters_cleanup_project_namespace - :name: gcp_cluster:clusters_cleanup_project_namespace
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:clusters_cleanup_service_account - :name: gcp_cluster:clusters_cleanup_service_account
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:wait_for_cluster_creation - :name: gcp_cluster:wait_for_cluster_creation
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_import_diff_note - :name: github_importer:github_import_import_diff_note
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_import_issue - :name: github_importer:github_import_import_issue
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_import_lfs_object - :name: github_importer:github_import_import_lfs_object
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_import_note - :name: github_importer:github_import_import_note
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_import_pull_request - :name: github_importer:github_import_import_pull_request
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_refresh_import_jid - :name: github_importer:github_import_refresh_import_jid
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_stage_finish_import - :name: github_importer:github_import_stage_finish_import
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_stage_import_base_data - :name: github_importer:github_import_stage_import_base_data
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_stage_import_issues_and_diff_notes - :name: github_importer:github_import_stage_import_issues_and_diff_notes
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_stage_import_lfs_objects - :name: github_importer:github_import_stage_import_lfs_objects
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_stage_import_notes - :name: github_importer:github_import_stage_import_notes
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_stage_import_pull_requests - :name: github_importer:github_import_stage_import_pull_requests
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_importer:github_import_stage_import_repository - :name: github_importer:github_import_stage_import_repository
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: hashed_storage:hashed_storage_migrator - :name: hashed_storage:hashed_storage_migrator
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: hashed_storage:hashed_storage_project_migrate - :name: hashed_storage:hashed_storage_project_migrate
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: hashed_storage:hashed_storage_project_rollback - :name: hashed_storage:hashed_storage_project_rollback
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: hashed_storage:hashed_storage_rollbacker - :name: hashed_storage:hashed_storage_rollbacker
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: incident_management:incident_management_process_alert - :name: incident_management:incident_management_process_alert
:feature_category: :incident_management :feature_category: :incident_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: mail_scheduler:mail_scheduler_issue_due - :name: mail_scheduler:mail_scheduler_issue_due
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: mail_scheduler:mail_scheduler_notification_service - :name: mail_scheduler:mail_scheduler_notification_service
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 2 :weight: 2
:idempotent:
- :name: notifications:new_release - :name: notifications:new_release
:feature_category: :release_orchestration :feature_category: :release_orchestration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: object_pool:object_pool_create - :name: object_pool:object_pool_create
:feature_category: :gitaly :feature_category: :gitaly
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: object_pool:object_pool_destroy - :name: object_pool:object_pool_destroy
:feature_category: :gitaly :feature_category: :gitaly
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: object_pool:object_pool_join - :name: object_pool:object_pool_join
:feature_category: :gitaly :feature_category: :gitaly
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 1 :weight: 1
:idempotent:
- :name: object_pool:object_pool_schedule_join - :name: object_pool:object_pool_schedule_join
:feature_category: :gitaly :feature_category: :gitaly
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: object_storage:object_storage_background_move - :name: object_storage:object_storage_background_move
:feature_category: :not_owned :feature_category: :not_owned
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: object_storage:object_storage_migrate_uploads - :name: object_storage:object_storage_migrate_uploads
:feature_category: :not_owned :feature_category: :not_owned
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: pipeline_background:archive_trace - :name: pipeline_background:archive_trace
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: pipeline_background:ci_build_trace_chunk_flush - :name: pipeline_background:ci_build_trace_chunk_flush
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: pipeline_cache:expire_job_cache - :name: pipeline_cache:expire_job_cache
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 3 :weight: 3
:idempotent: true
- :name: pipeline_cache:expire_pipeline_cache - :name: pipeline_cache:expire_pipeline_cache
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 3 :weight: 3
:idempotent:
- :name: pipeline_creation:create_pipeline - :name: pipeline_creation:create_pipeline
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 4 :weight: 4
:idempotent:
- :name: pipeline_creation:run_pipeline_schedule - :name: pipeline_creation:run_pipeline_schedule
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 4 :weight: 4
:idempotent:
- :name: pipeline_default:build_coverage - :name: pipeline_default:build_coverage
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 3 :weight: 3
:idempotent:
- :name: pipeline_default:build_trace_sections - :name: pipeline_default:build_trace_sections
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 3 :weight: 3
:idempotent:
- :name: pipeline_default:ci_create_cross_project_pipeline - :name: pipeline_default:ci_create_cross_project_pipeline
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 3 :weight: 3
:idempotent:
- :name: pipeline_default:ci_pipeline_bridge_status - :name: pipeline_default:ci_pipeline_bridge_status
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 3 :weight: 3
:idempotent:
- :name: pipeline_default:pipeline_metrics - :name: pipeline_default:pipeline_metrics
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 3 :weight: 3
:idempotent:
- :name: pipeline_default:pipeline_notification - :name: pipeline_default:pipeline_notification
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 3 :weight: 3
:idempotent:
- :name: pipeline_hooks:build_hooks - :name: pipeline_hooks:build_hooks
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: pipeline_hooks:pipeline_hooks - :name: pipeline_hooks:pipeline_hooks
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 2 :weight: 2
:idempotent:
- :name: pipeline_processing:build_finished - :name: pipeline_processing:build_finished
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 5 :weight: 5
:idempotent:
- :name: pipeline_processing:build_queue - :name: pipeline_processing:build_queue
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 5 :weight: 5
:idempotent:
- :name: pipeline_processing:build_success - :name: pipeline_processing:build_success
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 5 :weight: 5
:idempotent:
- :name: pipeline_processing:ci_build_prepare - :name: pipeline_processing:ci_build_prepare
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 5 :weight: 5
:idempotent:
- :name: pipeline_processing:ci_build_schedule - :name: pipeline_processing:ci_build_schedule
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 5 :weight: 5
:idempotent:
- :name: pipeline_processing:ci_resource_groups_assign_resource_from_resource_group - :name: pipeline_processing:ci_resource_groups_assign_resource_from_resource_group
:feature_category: :continuous_delivery :feature_category: :continuous_delivery
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 5 :weight: 5
:idempotent:
- :name: pipeline_processing:pipeline_process - :name: pipeline_processing:pipeline_process
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 5 :weight: 5
:idempotent:
- :name: pipeline_processing:pipeline_success - :name: pipeline_processing:pipeline_success
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 5 :weight: 5
:idempotent:
- :name: pipeline_processing:pipeline_update - :name: pipeline_processing:pipeline_update
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 5 :weight: 5
:idempotent:
- :name: pipeline_processing:stage_update - :name: pipeline_processing:stage_update
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 5 :weight: 5
:idempotent:
- :name: pipeline_processing:update_head_pipeline_for_merge_request - :name: pipeline_processing:update_head_pipeline_for_merge_request
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 5 :weight: 5
:idempotent:
- :name: repository_check:repository_check_batch - :name: repository_check:repository_check_batch
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: repository_check:repository_check_clear - :name: repository_check:repository_check_clear
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: repository_check:repository_check_single_repository - :name: repository_check:repository_check_single_repository
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: todos_destroyer:todos_destroyer_confidential_issue - :name: todos_destroyer:todos_destroyer_confidential_issue
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: todos_destroyer:todos_destroyer_entity_leave - :name: todos_destroyer:todos_destroyer_entity_leave
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: todos_destroyer:todos_destroyer_group_private - :name: todos_destroyer:todos_destroyer_group_private
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: todos_destroyer:todos_destroyer_private_features - :name: todos_destroyer:todos_destroyer_private_features
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: todos_destroyer:todos_destroyer_project_private - :name: todos_destroyer:todos_destroyer_project_private
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: update_namespace_statistics:namespaces_root_statistics - :name: update_namespace_statistics:namespaces_root_statistics
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: update_namespace_statistics:namespaces_schedule_aggregation - :name: update_namespace_statistics:namespaces_schedule_aggregation
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: authorized_projects - :name: authorized_projects
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: background_migration - :name: background_migration
:feature_category: :not_owned :feature_category: :not_owned
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: chat_notification - :name: chat_notification
:feature_category: :chatops :feature_category: :chatops
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: create_commit_signature - :name: create_commit_signature
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: create_evidence - :name: create_evidence
:feature_category: :release_governance :feature_category: :release_governance
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: create_note_diff_file - :name: create_note_diff_file
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: default - :name: default
:feature_category: :feature_category:
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :resource_boundary:
:weight: 1 :weight: 1
:idempotent:
- :name: delete_diff_files - :name: delete_diff_files
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: delete_merged_branches - :name: delete_merged_branches
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: delete_stored_files - :name: delete_stored_files
:feature_category: :not_owned :feature_category: :not_owned
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: delete_user - :name: delete_user
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: detect_repository_languages - :name: detect_repository_languages
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: email_receiver - :name: email_receiver
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: emails_on_push - :name: emails_on_push
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 2 :weight: 2
:idempotent:
- :name: error_tracking_issue_link - :name: error_tracking_issue_link
:feature_category: :error_tracking :feature_category: :error_tracking
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: expire_build_instance_artifacts - :name: expire_build_instance_artifacts
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: file_hook - :name: file_hook
:feature_category: :integrations :feature_category: :integrations
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: git_garbage_collect - :name: git_garbage_collect
:feature_category: :gitaly :feature_category: :gitaly
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: github_import_advance_stage - :name: github_import_advance_stage
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gitlab_shell - :name: gitlab_shell
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: group_destroy - :name: group_destroy
:feature_category: :subgroups :feature_category: :subgroups
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: group_export - :name: group_export
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: group_import - :name: group_import
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: import_issues_csv - :name: import_issues_csv
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 2 :weight: 2
:idempotent:
- :name: invalid_gpg_signature_update - :name: invalid_gpg_signature_update
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: irker - :name: irker
:feature_category: :integrations :feature_category: :integrations
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: mailers - :name: mailers
:feature_category: :feature_category:
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :resource_boundary:
:weight: 2 :weight: 2
:idempotent:
- :name: merge - :name: merge
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 5 :weight: 5
:idempotent:
- :name: merge_request_mergeability_check - :name: merge_request_mergeability_check
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: migrate_external_diffs - :name: migrate_external_diffs
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: namespaceless_project_destroy - :name: namespaceless_project_destroy
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: new_issue - :name: new_issue
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 2 :weight: 2
:idempotent:
- :name: new_merge_request - :name: new_merge_request
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 2 :weight: 2
:idempotent:
- :name: new_note - :name: new_note
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 2 :weight: 2
:idempotent:
- :name: pages - :name: pages
:feature_category: :pages :feature_category: :pages
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: pages_domain_ssl_renewal - :name: pages_domain_ssl_renewal
:feature_category: :pages :feature_category: :pages
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: pages_domain_verification - :name: pages_domain_verification
:feature_category: :pages :feature_category: :pages
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: phabricator_import_import_tasks - :name: phabricator_import_import_tasks
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: post_receive - :name: post_receive
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 5 :weight: 5
:idempotent:
- :name: process_commit - :name: process_commit
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 3 :weight: 3
:idempotent:
- :name: project_cache - :name: project_cache
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: project_daily_statistics - :name: project_daily_statistics
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: project_destroy - :name: project_destroy
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: project_export - :name: project_export
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :memory :resource_boundary: :memory
:weight: 1 :weight: 1
:idempotent:
- :name: project_service - :name: project_service
:feature_category: :integrations :feature_category: :integrations
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: propagate_service_template - :name: propagate_service_template
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: reactive_caching - :name: reactive_caching
:feature_category: :not_owned :feature_category: :not_owned
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 1 :weight: 1
:idempotent:
- :name: rebase - :name: rebase
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: remote_mirror_notification - :name: remote_mirror_notification
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: repository_cleanup - :name: repository_cleanup
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: repository_fork - :name: repository_fork
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: repository_import - :name: repository_import
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: repository_remove_remote - :name: repository_remove_remote
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: repository_update_remote_mirror - :name: repository_update_remote_mirror
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: self_monitoring_project_create - :name: self_monitoring_project_create
:feature_category: :metrics :feature_category: :metrics
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: self_monitoring_project_delete - :name: self_monitoring_project_delete
:feature_category: :metrics :feature_category: :metrics
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: system_hook_push - :name: system_hook_push
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: update_external_pull_requests - :name: update_external_pull_requests
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 3 :weight: 3
:idempotent:
- :name: update_merge_requests - :name: update_merge_requests
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 3 :weight: 3
:idempotent:
- :name: update_project_statistics - :name: update_project_statistics
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: upload_checksum - :name: upload_checksum
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: web_hook - :name: web_hook
:feature_category: :integrations :feature_category: :integrations
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
# frozen_string_literal: true # frozen_string_literal: true
class ArchiveTraceWorker class ArchiveTraceWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineBackgroundQueue include PipelineBackgroundQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class AuthorizedProjectsWorker class AuthorizedProjectsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
prepend WaitableWorker prepend WaitableWorker
......
# frozen_string_literal: true # frozen_string_literal: true
module AutoDevops module AutoDevops
class DisableWorker class DisableWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include AutoDevopsQueue include AutoDevopsQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class AutoMergeProcessWorker class AutoMergeProcessWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :auto_merge queue_namespace :auto_merge
......
# frozen_string_literal: true # frozen_string_literal: true
class BackgroundMigrationWorker class BackgroundMigrationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category_not_owned! feature_category_not_owned!
......
# frozen_string_literal: true # frozen_string_literal: true
class BuildCoverageWorker class BuildCoverageWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class BuildFinishedWorker class BuildFinishedWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class BuildHooksWorker class BuildHooksWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class BuildQueueWorker class BuildQueueWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class BuildSuccessWorker class BuildSuccessWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class BuildTraceSectionsWorker class BuildTraceSectionsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Chaos module Chaos
class CpuSpinWorker class CpuSpinWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ChaosQueue include ChaosQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Chaos module Chaos
class DbSpinWorker class DbSpinWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ChaosQueue include ChaosQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Chaos module Chaos
class KillWorker class KillWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ChaosQueue include ChaosQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Chaos module Chaos
class LeakMemWorker class LeakMemWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ChaosQueue include ChaosQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Chaos module Chaos
class SleepWorker class SleepWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ChaosQueue include ChaosQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class ChatNotificationWorker class ChatNotificationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
TimeoutExceeded = Class.new(StandardError) TimeoutExceeded = Class.new(StandardError)
......
# frozen_string_literal: true # frozen_string_literal: true
module Ci module Ci
class ArchiveTracesCronWorker class ArchiveTracesCronWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
# frozen_string_literal: true # frozen_string_literal: true
module Ci module Ci
class BuildPrepareWorker class BuildPrepareWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Ci module Ci
class BuildScheduleWorker class BuildScheduleWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Ci module Ci
class BuildTraceChunkFlushWorker class BuildTraceChunkFlushWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineBackgroundQueue include PipelineBackgroundQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Ci module Ci
class CreateCrossProjectPipelineWorker class CreateCrossProjectPipelineWorker # rubocop:disable Scalability/IdempotentWorker
include ::ApplicationWorker include ::ApplicationWorker
include ::PipelineQueue include ::PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Ci module Ci
class PipelineBridgeStatusWorker class PipelineBridgeStatusWorker # rubocop:disable Scalability/IdempotentWorker
include ::ApplicationWorker include ::ApplicationWorker
include ::PipelineQueue include ::PipelineQueue
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Ci module Ci
module ResourceGroups module ResourceGroups
class AssignResourceFromResourceGroupWorker class AssignResourceFromResourceGroupWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class CleanupContainerRepositoryWorker class CleanupContainerRepositoryWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :container_repository queue_namespace :container_repository
......
# frozen_string_literal: true # frozen_string_literal: true
class ClusterConfigureIstioWorker class ClusterConfigureIstioWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class ClusterConfigureWorker class ClusterConfigureWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class ClusterInstallAppWorker class ClusterInstallAppWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
include ClusterApplications include ClusterApplications
......
# frozen_string_literal: true # frozen_string_literal: true
class ClusterPatchAppWorker class ClusterPatchAppWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
include ClusterApplications include ClusterApplications
......
# frozen_string_literal: true # frozen_string_literal: true
class ClusterProjectConfigureWorker class ClusterProjectConfigureWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class ClusterProvisionWorker class ClusterProvisionWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class ClusterUpgradeAppWorker class ClusterUpgradeAppWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
include ClusterApplications include ClusterApplications
......
# frozen_string_literal: true # frozen_string_literal: true
class ClusterWaitForAppInstallationWorker class ClusterWaitForAppInstallationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
include ClusterApplications include ClusterApplications
......
# frozen_string_literal: true # frozen_string_literal: true
class ClusterWaitForIngressIpAddressWorker class ClusterWaitForIngressIpAddressWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
include ClusterApplications include ClusterApplications
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Clusters module Clusters
module Applications module Applications
class ActivateServiceWorker class ActivateServiceWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Clusters module Clusters
module Applications module Applications
class DeactivateServiceWorker class DeactivateServiceWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Clusters module Clusters
module Applications module Applications
class UninstallWorker class UninstallWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
include ClusterApplications include ClusterApplications
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Clusters module Clusters
module Applications module Applications
class WaitForUninstallAppWorker class WaitForUninstallAppWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
include ClusterApplications include ClusterApplications
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Clusters module Clusters
module Cleanup module Cleanup
class AppWorker class AppWorker # rubocop:disable Scalability/IdempotentWorker
include ClusterCleanupMethods include ClusterCleanupMethods
def perform(cluster_id, execution_count = 0) def perform(cluster_id, execution_count = 0)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Clusters module Clusters
module Cleanup module Cleanup
class ProjectNamespaceWorker class ProjectNamespaceWorker # rubocop:disable Scalability/IdempotentWorker
include ClusterCleanupMethods include ClusterCleanupMethods
def perform(cluster_id, execution_count = 0) def perform(cluster_id, execution_count = 0)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Clusters module Clusters
module Cleanup module Cleanup
class ServiceAccountWorker class ServiceAccountWorker # rubocop:disable Scalability/IdempotentWorker
include ClusterCleanupMethods include ClusterCleanupMethods
def perform(cluster_id) def perform(cluster_id)
......
...@@ -89,6 +89,14 @@ module WorkerAttributes ...@@ -89,6 +89,14 @@ module WorkerAttributes
worker_attributes[:resource_boundary] || :unknown worker_attributes[:resource_boundary] || :unknown
end end
def idempotent!
worker_attributes[:idempotent] = true
end
def idempotent?
worker_attributes[:idempotent]
end
def weight(value) def weight(value)
worker_attributes[:weight] = value worker_attributes[:weight] = value
end end
......
# frozen_string_literal: true # frozen_string_literal: true
class ContainerExpirationPolicyWorker class ContainerExpirationPolicyWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class CreateCommitSignatureWorker class CreateCommitSignatureWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class CreateEvidenceWorker class CreateEvidenceWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :release_governance feature_category :release_governance
......
# frozen_string_literal: true # frozen_string_literal: true
class CreateNoteDiffFileWorker class CreateNoteDiffFileWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class CreatePipelineWorker class CreatePipelineWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class DeleteContainerRepositoryWorker class DeleteContainerRepositoryWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
......
# frozen_string_literal: true # frozen_string_literal: true
class DeleteDiffFilesWorker class DeleteDiffFilesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class DeleteMergedBranchesWorker class DeleteMergedBranchesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class DeleteStoredFilesWorker class DeleteStoredFilesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category_not_owned! feature_category_not_owned!
......
# frozen_string_literal: true # frozen_string_literal: true
class DeleteUserWorker class DeleteUserWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :authentication_and_authorization feature_category :authentication_and_authorization
......
# frozen_string_literal: true # frozen_string_literal: true
module Deployments module Deployments
class FinishedWorker class FinishedWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :deployment queue_namespace :deployment
......
# frozen_string_literal: true # frozen_string_literal: true
module Deployments module Deployments
class ForwardDeploymentWorker class ForwardDeploymentWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :deployment queue_namespace :deployment
......
# frozen_string_literal: true # frozen_string_literal: true
module Deployments module Deployments
class SuccessWorker class SuccessWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :deployment queue_namespace :deployment
......
# frozen_string_literal: true # frozen_string_literal: true
class DetectRepositoryLanguagesWorker class DetectRepositoryLanguagesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExceptionBacktrace include ExceptionBacktrace
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
......
# frozen_string_literal: true # frozen_string_literal: true
class EmailReceiverWorker class EmailReceiverWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :issue_tracking feature_category :issue_tracking
......
# frozen_string_literal: true # frozen_string_literal: true
class EmailsOnPushWorker class EmailsOnPushWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
attr_reader :email, :skip_premailer attr_reader :email, :skip_premailer
......
# frozen_string_literal: true # frozen_string_literal: true
module Environments module Environments
class AutoStopCronWorker class AutoStopCronWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
# If a link to a different GitLab issue exists, a new link # If a link to a different GitLab issue exists, a new link
# will still be created, but will not be visible in Sentry # will still be created, but will not be visible in Sentry
# until the prior link is deleted. # until the prior link is deleted.
class ErrorTrackingIssueLinkWorker class ErrorTrackingIssueLinkWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
include Gitlab::Utils::StrongMemoize include Gitlab::Utils::StrongMemoize
......
# frozen_string_literal: true # frozen_string_literal: true
class ExpireBuildArtifactsWorker class ExpireBuildArtifactsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
class ExpireBuildInstanceArtifactsWorker class ExpireBuildInstanceArtifactsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :continuous_integration feature_category :continuous_integration
......
...@@ -6,6 +6,7 @@ class ExpireJobCacheWorker ...@@ -6,6 +6,7 @@ class ExpireJobCacheWorker
queue_namespace :pipeline_cache queue_namespace :pipeline_cache
latency_sensitive_worker! latency_sensitive_worker!
idempotent!
# rubocop: disable CodeReuse/ActiveRecord # rubocop: disable CodeReuse/ActiveRecord
def perform(job_id) def perform(job_id)
......
# frozen_string_literal: true # frozen_string_literal: true
class ExpirePipelineCacheWorker class ExpirePipelineCacheWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class FileHookWorker class FileHookWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
sidekiq_options retry: false sidekiq_options retry: false
......
# frozen_string_literal: true # frozen_string_literal: true
class GitGarbageCollectWorker class GitGarbageCollectWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
sidekiq_options retry: false sidekiq_options retry: false
......
...@@ -6,7 +6,7 @@ module Gitlab ...@@ -6,7 +6,7 @@ module Gitlab
# number of jobs to complete, without blocking a thread. Once all jobs have # number of jobs to complete, without blocking a thread. Once all jobs have
# been completed this worker will advance the import process to the next # been completed this worker will advance the import process to the next
# stage. # stage.
class AdvanceStageWorker class AdvanceStageWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
sidekiq_options dead: false sidekiq_options dead: false
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
class ImportDiffNoteWorker class ImportDiffNoteWorker # rubocop:disable Scalability/IdempotentWorker
include ObjectImporter include ObjectImporter
def representation_class def representation_class
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
class ImportIssueWorker class ImportIssueWorker # rubocop:disable Scalability/IdempotentWorker
include ObjectImporter include ObjectImporter
def representation_class def representation_class
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
class ImportLfsObjectWorker class ImportLfsObjectWorker # rubocop:disable Scalability/IdempotentWorker
include ObjectImporter include ObjectImporter
def representation_class def representation_class
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
class ImportNoteWorker class ImportNoteWorker # rubocop:disable Scalability/IdempotentWorker
include ObjectImporter include ObjectImporter
def representation_class def representation_class
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
class ImportPullRequestWorker class ImportPullRequestWorker # rubocop:disable Scalability/IdempotentWorker
include ObjectImporter include ObjectImporter
def representation_class def representation_class
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
class RefreshImportJidWorker class RefreshImportJidWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GithubImport::Queue include GithubImport::Queue
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
module Stage module Stage
class FinishImportWorker class FinishImportWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GithubImport::Queue include GithubImport::Queue
include StageMethods include StageMethods
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
module Stage module Stage
class ImportBaseDataWorker class ImportBaseDataWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GithubImport::Queue include GithubImport::Queue
include StageMethods include StageMethods
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
module Stage module Stage
class ImportIssuesAndDiffNotesWorker class ImportIssuesAndDiffNotesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GithubImport::Queue include GithubImport::Queue
include StageMethods include StageMethods
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
module Stage module Stage
class ImportLfsObjectsWorker class ImportLfsObjectsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GithubImport::Queue include GithubImport::Queue
include StageMethods include StageMethods
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
module Stage module Stage
class ImportNotesWorker class ImportNotesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GithubImport::Queue include GithubImport::Queue
include StageMethods include StageMethods
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
module Stage module Stage
class ImportPullRequestsWorker class ImportPullRequestsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GithubImport::Queue include GithubImport::Queue
include StageMethods include StageMethods
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Gitlab module Gitlab
module GithubImport module GithubImport
module Stage module Stage
class ImportRepositoryWorker class ImportRepositoryWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GithubImport::Queue include GithubImport::Queue
include StageMethods include StageMethods
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
# - It marks the import as finished when all remaining jobs are done # - It marks the import as finished when all remaining jobs are done
module Gitlab module Gitlab
module PhabricatorImport module PhabricatorImport
class BaseWorker class BaseWorker # rubocop:disable Scalability/IdempotentWorker
include WorkerAttributes include WorkerAttributes
include Gitlab::ExclusiveLeaseHelpers include Gitlab::ExclusiveLeaseHelpers
......
# frozen_string_literal: true # frozen_string_literal: true
module Gitlab module Gitlab
module PhabricatorImport module PhabricatorImport
class ImportTasksWorker < BaseWorker class ImportTasksWorker < BaseWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ProjectImportOptions # This marks the project as failed after too many tries include ProjectImportOptions # This marks the project as failed after too many tries
......
# frozen_string_literal: true # frozen_string_literal: true
class GitlabShellWorker class GitlabShellWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include Gitlab::ShellAdapter include Gitlab::ShellAdapter
......
# frozen_string_literal: true # frozen_string_literal: true
class GitlabUsagePingWorker class GitlabUsagePingWorker # rubocop:disable Scalability/IdempotentWorker
LEASE_TIMEOUT = 86400 LEASE_TIMEOUT = 86400
include ApplicationWorker include ApplicationWorker
......
# frozen_string_literal: true # frozen_string_literal: true
class GroupDestroyWorker class GroupDestroyWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExceptionBacktrace include ExceptionBacktrace
......
# frozen_string_literal: true # frozen_string_literal: true
class GroupExportWorker class GroupExportWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExceptionBacktrace include ExceptionBacktrace
......
# frozen_string_literal: true # frozen_string_literal: true
class GroupImportWorker class GroupImportWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExceptionBacktrace include ExceptionBacktrace
......
# frozen_string_literal: true # frozen_string_literal: true
module HashedStorage module HashedStorage
class BaseWorker class BaseWorker # rubocop:disable Scalability/IdempotentWorker
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
include WorkerAttributes include WorkerAttributes
......
# frozen_string_literal: true # frozen_string_literal: true
module HashedStorage module HashedStorage
class MigratorWorker class MigratorWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :hashed_storage queue_namespace :hashed_storage
......
# frozen_string_literal: true # frozen_string_literal: true
module HashedStorage module HashedStorage
class ProjectMigrateWorker < BaseWorker class ProjectMigrateWorker < BaseWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :hashed_storage queue_namespace :hashed_storage
......
# frozen_string_literal: true # frozen_string_literal: true
module HashedStorage module HashedStorage
class ProjectRollbackWorker < BaseWorker class ProjectRollbackWorker < BaseWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :hashed_storage queue_namespace :hashed_storage
......
# frozen_string_literal: true # frozen_string_literal: true
module HashedStorage module HashedStorage
class RollbackerWorker class RollbackerWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :hashed_storage queue_namespace :hashed_storage
......
# frozen_string_literal: true # frozen_string_literal: true
class ImportExportProjectCleanupWorker class ImportExportProjectCleanupWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
class ImportIssuesCsvWorker class ImportIssuesCsvWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :issue_tracking feature_category :issue_tracking
......
# frozen_string_literal: true # frozen_string_literal: true
module IncidentManagement module IncidentManagement
class ProcessAlertWorker class ProcessAlertWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :incident_management queue_namespace :incident_management
......
# frozen_string_literal: true # frozen_string_literal: true
class InvalidGpgSignatureUpdateWorker class InvalidGpgSignatureUpdateWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
require 'json' require 'json'
require 'socket' require 'socket'
class IrkerWorker class IrkerWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :integrations feature_category :integrations
......
# frozen_string_literal: true # frozen_string_literal: true
class IssueDueSchedulerWorker class IssueDueSchedulerWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
# frozen_string_literal: true # frozen_string_literal: true
module MailScheduler module MailScheduler
class IssueDueWorker class IssueDueWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include MailSchedulerQueue include MailSchedulerQueue
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
require 'active_job/arguments' require 'active_job/arguments'
module MailScheduler module MailScheduler
class NotificationServiceWorker class NotificationServiceWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include MailSchedulerQueue include MailSchedulerQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class MergeRequestMergeabilityCheckWorker class MergeRequestMergeabilityCheckWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class MergeWorker class MergeWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class MigrateExternalDiffsWorker class MigrateExternalDiffsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
# used to belong to. Projects in this state should be rare. # used to belong to. Projects in this state should be rare.
# The worker will reject doing anything for projects that *do* have a # The worker will reject doing anything for projects that *do* have a
# namespace. For those use ProjectDestroyWorker instead. # namespace. For those use ProjectDestroyWorker instead.
class NamespacelessProjectDestroyWorker class NamespacelessProjectDestroyWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExceptionBacktrace include ExceptionBacktrace
......
# frozen_string_literal: true # frozen_string_literal: true
module Namespaces module Namespaces
class PruneAggregationSchedulesWorker class PruneAggregationSchedulesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
# frozen_string_literal: true # frozen_string_literal: true
module Namespaces module Namespaces
class RootStatisticsWorker class RootStatisticsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :update_namespace_statistics queue_namespace :update_namespace_statistics
......
# frozen_string_literal: true # frozen_string_literal: true
module Namespaces module Namespaces
class ScheduleAggregationWorker class ScheduleAggregationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :update_namespace_statistics queue_namespace :update_namespace_statistics
......
# frozen_string_literal: true # frozen_string_literal: true
class NewIssueWorker class NewIssueWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include NewIssuable include NewIssuable
......
# frozen_string_literal: true # frozen_string_literal: true
class NewMergeRequestWorker class NewMergeRequestWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include NewIssuable include NewIssuable
......
# frozen_string_literal: true # frozen_string_literal: true
class NewNoteWorker class NewNoteWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :issue_tracking feature_category :issue_tracking
......
# frozen_string_literal: true # frozen_string_literal: true
class NewReleaseWorker class NewReleaseWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :notifications queue_namespace :notifications
......
# frozen_string_literal: true # frozen_string_literal: true
module ObjectPool module ObjectPool
class CreateWorker class CreateWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ObjectPoolQueue include ObjectPoolQueue
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
......
# frozen_string_literal: true # frozen_string_literal: true
module ObjectPool module ObjectPool
class DestroyWorker class DestroyWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ObjectPoolQueue include ObjectPoolQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module ObjectPool module ObjectPool
class JoinWorker class JoinWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ObjectPoolQueue include ObjectPoolQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module ObjectPool module ObjectPool
class ScheduleJoinWorker class ScheduleJoinWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ObjectPoolQueue include ObjectPoolQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module ObjectStorage module ObjectStorage
class BackgroundMoveWorker class BackgroundMoveWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ObjectStorageQueue include ObjectStorageQueue
......
# frozen_string_literal: true # frozen_string_literal: true
# rubocop:disable Scalability/IdempotentWorker
module ObjectStorage module ObjectStorage
class MigrateUploadsWorker class MigrateUploadsWorker
include ApplicationWorker include ApplicationWorker
...@@ -137,3 +138,4 @@ module ObjectStorage ...@@ -137,3 +138,4 @@ module ObjectStorage
end end
end end
end end
# rubocop:enable Scalability/IdempotentWorker
# frozen_string_literal: true # frozen_string_literal: true
class PagesDomainRemovalCronWorker class PagesDomainRemovalCronWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class PagesDomainSslRenewalCronWorker class PagesDomainSslRenewalCronWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class PagesDomainSslRenewalWorker class PagesDomainSslRenewalWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :pages feature_category :pages
......
# frozen_string_literal: true # frozen_string_literal: true
class PagesDomainVerificationCronWorker class PagesDomainVerificationCronWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class PagesDomainVerificationWorker class PagesDomainVerificationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :pages feature_category :pages
......
# frozen_string_literal: true # frozen_string_literal: true
class PagesWorker class PagesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
sidekiq_options retry: 3 sidekiq_options retry: 3
......
# frozen_string_literal: true # frozen_string_literal: true
module PersonalAccessTokens module PersonalAccessTokens
class ExpiringWorker class ExpiringWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class PipelineHooksWorker class PipelineHooksWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class PipelineMetricsWorker class PipelineMetricsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class PipelineNotificationWorker class PipelineNotificationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class PipelineProcessWorker class PipelineProcessWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class PipelineScheduleWorker class PipelineScheduleWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class PipelineSuccessWorker class PipelineSuccessWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class PipelineUpdateWorker class PipelineUpdateWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class PostReceive class PostReceive # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
# result of this the workload of this worker should be kept to a bare minimum. # result of this the workload of this worker should be kept to a bare minimum.
# Consider using an extra worker if you need to add any extra (and potentially # Consider using an extra worker if you need to add any extra (and potentially
# slow) processing of commits. # slow) processing of commits.
class ProcessCommitWorker class ProcessCommitWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
# Worker for updating any project specific caches. # Worker for updating any project specific caches.
class ProjectCacheWorker class ProjectCacheWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
latency_sensitive_worker! latency_sensitive_worker!
......
# frozen_string_literal: true # frozen_string_literal: true
class ProjectDailyStatisticsWorker class ProjectDailyStatisticsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class ProjectDestroyWorker class ProjectDestroyWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExceptionBacktrace include ExceptionBacktrace
......
# frozen_string_literal: true # frozen_string_literal: true
class ProjectExportWorker class ProjectExportWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExceptionBacktrace include ExceptionBacktrace
......
# frozen_string_literal: true # frozen_string_literal: true
class ProjectServiceWorker class ProjectServiceWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
sidekiq_options dead: false sidekiq_options dead: false
......
# frozen_string_literal: true # frozen_string_literal: true
# Worker for updating any project specific caches. # Worker for updating any project specific caches.
class PropagateServiceTemplateWorker class PropagateServiceTemplateWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class PruneOldEventsWorker class PruneOldEventsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Worker that deletes a fixed number of outdated rows from the "web_hook_logs" # Worker that deletes a fixed number of outdated rows from the "web_hook_logs"
# table. # table.
class PruneWebHookLogsWorker class PruneWebHookLogsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
class ReactiveCachingWorker class ReactiveCachingWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category_not_owned! feature_category_not_owned!
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# The RebaseWorker must be wrapped in important concurrency code, so should only # The RebaseWorker must be wrapped in important concurrency code, so should only
# be scheduled via MergeRequest#rebase_async # be scheduled via MergeRequest#rebase_async
class RebaseWorker class RebaseWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class RemoteMirrorNotificationWorker class RemoteMirrorNotificationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class RemoveExpiredGroupLinksWorker class RemoveExpiredGroupLinksWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
# frozen_string_literal: true # frozen_string_literal: true
class RemoveExpiredMembersWorker class RemoveExpiredMembersWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
# frozen_string_literal: true # frozen_string_literal: true
class RemoveUnreferencedLfsObjectsWorker class RemoveUnreferencedLfsObjectsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
class RepositoryArchiveCacheWorker class RepositoryArchiveCacheWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
module RepositoryCheck module RepositoryCheck
class BatchWorker class BatchWorker # rubocop:disable Scalability/IdempotentWorker
prepend_if_ee('::EE::RepositoryCheck::BatchWorker') # rubocop: disable Cop/InjectEnterpriseEditionModule prepend_if_ee('::EE::RepositoryCheck::BatchWorker') # rubocop: disable Cop/InjectEnterpriseEditionModule
include ApplicationWorker include ApplicationWorker
......
# frozen_string_literal: true # frozen_string_literal: true
module RepositoryCheck module RepositoryCheck
class ClearWorker class ClearWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include RepositoryCheckQueue include RepositoryCheckQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module RepositoryCheck module RepositoryCheck
class DispatchWorker class DispatchWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
module RepositoryCheck module RepositoryCheck
class SingleRepositoryWorker class SingleRepositoryWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include RepositoryCheckQueue include RepositoryCheckQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class RepositoryCleanupWorker class RepositoryCleanupWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
sidekiq_options retry: 3 sidekiq_options retry: 3
......
# frozen_string_literal: true # frozen_string_literal: true
class RepositoryForkWorker class RepositoryForkWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include Gitlab::ShellAdapter include Gitlab::ShellAdapter
include ProjectStartImport include ProjectStartImport
......
# frozen_string_literal: true # frozen_string_literal: true
class RepositoryImportWorker class RepositoryImportWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExceptionBacktrace include ExceptionBacktrace
include ProjectStartImport include ProjectStartImport
......
# frozen_string_literal: true # frozen_string_literal: true
class RepositoryRemoveRemoteWorker class RepositoryRemoveRemoteWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
......
# frozen_string_literal: true # frozen_string_literal: true
class RepositoryUpdateRemoteMirrorWorker class RepositoryUpdateRemoteMirrorWorker # rubocop:disable Scalability/IdempotentWorker
UpdateError = Class.new(StandardError) UpdateError = Class.new(StandardError)
include ApplicationWorker include ApplicationWorker
......
# frozen_string_literal: true # frozen_string_literal: true
class RequestsProfilesWorker class RequestsProfilesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
class RunPipelineScheduleWorker class RunPipelineScheduleWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class ScheduleMigrateExternalDiffsWorker class ScheduleMigrateExternalDiffsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext: # rubocop:disable Scalability/CronWorkerContext:
# This schedules the `MigrateExternalDiffsWorker` # This schedules the `MigrateExternalDiffsWorker`
......
# frozen_string_literal: true # frozen_string_literal: true
class SelfMonitoringProjectCreateWorker class SelfMonitoringProjectCreateWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
include SelfMonitoringProjectWorker include SelfMonitoringProjectWorker
......
# frozen_string_literal: true # frozen_string_literal: true
class SelfMonitoringProjectDeleteWorker class SelfMonitoringProjectDeleteWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
include SelfMonitoringProjectWorker include SelfMonitoringProjectWorker
......
# frozen_string_literal: true # frozen_string_literal: true
class StageUpdateWorker class StageUpdateWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class StuckCiJobsWorker class StuckCiJobsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class StuckImportJobsWorker class StuckImportJobsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker updates several import states inline and does not schedule # This worker updates several import states inline and does not schedule
......
# frozen_string_literal: true # frozen_string_literal: true
class StuckMergeJobsWorker class StuckMergeJobsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
# frozen_string_literal: true # frozen_string_literal: true
class SystemHookPushWorker class SystemHookPushWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
module TodosDestroyer module TodosDestroyer
class ConfidentialIssueWorker class ConfidentialIssueWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include TodosDestroyerQueue include TodosDestroyerQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module TodosDestroyer module TodosDestroyer
class EntityLeaveWorker class EntityLeaveWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include TodosDestroyerQueue include TodosDestroyerQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module TodosDestroyer module TodosDestroyer
class GroupPrivateWorker class GroupPrivateWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include TodosDestroyerQueue include TodosDestroyerQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module TodosDestroyer module TodosDestroyer
class PrivateFeaturesWorker class PrivateFeaturesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include TodosDestroyerQueue include TodosDestroyerQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module TodosDestroyer module TodosDestroyer
class ProjectPrivateWorker class ProjectPrivateWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include TodosDestroyerQueue include TodosDestroyerQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class TrendingProjectsWorker class TrendingProjectsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
class UpdateExternalPullRequestsWorker class UpdateExternalPullRequestsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class UpdateHeadPipelineForMergeRequestWorker class UpdateHeadPipelineForMergeRequestWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include PipelineQueue include PipelineQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class UpdateMergeRequestsWorker class UpdateMergeRequestsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
# Worker for updating project statistics. # Worker for updating project statistics.
class UpdateProjectStatisticsWorker class UpdateProjectStatisticsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class UploadChecksumWorker class UploadChecksumWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :geo_replication feature_category :geo_replication
......
# frozen_string_literal: true # frozen_string_literal: true
class WaitForClusterCreationWorker class WaitForClusterCreationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class WebHookWorker class WebHookWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :integrations feature_category :integrations
......
# frozen_string_literal: true # frozen_string_literal: true
class AdjournedGroupDeletionWorker class AdjournedGroupDeletionWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class AdjournedProjectDeletionWorker class AdjournedProjectDeletionWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExceptionBacktrace include ExceptionBacktrace
......
# frozen_string_literal: true # frozen_string_literal: true
class AdjournedProjectsDeletionCronWorker class AdjournedProjectsDeletionCronWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class AdminEmailsWorker class AdminEmailsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category_not_owned! feature_category_not_owned!
......
...@@ -9,465 +9,543 @@ ...@@ -9,465 +9,543 @@
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:adjourned_projects_deletion_cron - :name: cronjob:adjourned_projects_deletion_cron
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:clear_shared_runners_minutes - :name: cronjob:clear_shared_runners_minutes
:feature_category: :continuous_integration :feature_category: :continuous_integration
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_container_repository_sync_dispatch - :name: cronjob:geo_container_repository_sync_dispatch
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_file_download_dispatch - :name: cronjob:geo_file_download_dispatch
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_metrics_update - :name: cronjob:geo_metrics_update
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_migrated_local_files_clean_up - :name: cronjob:geo_migrated_local_files_clean_up
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_prune_event_log - :name: cronjob:geo_prune_event_log
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_repository_sync - :name: cronjob:geo_repository_sync
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_repository_verification_primary_batch - :name: cronjob:geo_repository_verification_primary_batch
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_repository_verification_secondary_scheduler - :name: cronjob:geo_repository_verification_secondary_scheduler
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_repository_verification_secondary_shard - :name: cronjob:geo_repository_verification_secondary_shard
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_scheduler_per_shard_scheduler - :name: cronjob:geo_scheduler_per_shard_scheduler
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_scheduler_primary_per_shard_scheduler - :name: cronjob:geo_scheduler_primary_per_shard_scheduler
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_scheduler_secondary_per_shard_scheduler - :name: cronjob:geo_scheduler_secondary_per_shard_scheduler
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_secondary_registry_consistency - :name: cronjob:geo_secondary_registry_consistency
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:geo_sidekiq_cron_config - :name: cronjob:geo_sidekiq_cron_config
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:historical_data - :name: cronjob:historical_data
:feature_category: :license_compliance :feature_category: :license_compliance
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:import_software_licenses - :name: cronjob:import_software_licenses
:feature_category: :license_compliance :feature_category: :license_compliance
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:ldap_all_groups_sync - :name: cronjob:ldap_all_groups_sync
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:ldap_sync - :name: cronjob:ldap_sync
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:pseudonymizer - :name: cronjob:pseudonymizer
:feature_category: :integrations :feature_category: :integrations
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:update_all_mirrors - :name: cronjob:update_all_mirrors
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: cronjob:update_max_seats_used_for_gitlab_com_subscriptions - :name: cronjob:update_max_seats_used_for_gitlab_com_subscriptions
:feature_category: :license_compliance :feature_category: :license_compliance
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 1 :weight: 1
:idempotent:
- :name: epics:epics_update_epics_dates - :name: epics:epics_update_epics_dates
:feature_category: :epics :feature_category: :epics
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: gcp_cluster:cluster_update_app - :name: gcp_cluster:cluster_update_app
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: gcp_cluster:cluster_wait_for_app_update - :name: gcp_cluster:cluster_wait_for_app_update
:feature_category: :kubernetes_management :feature_category: :kubernetes_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_batch_project_registry - :name: geo:geo_batch_project_registry
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_batch_project_registry_scheduler - :name: geo:geo_batch_project_registry_scheduler
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_container_repository_sync - :name: geo:geo_container_repository_sync
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_design_repository_shard_sync - :name: geo:geo_design_repository_shard_sync
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_design_repository_sync - :name: geo:geo_design_repository_sync
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_event - :name: geo:geo_event
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_file_download - :name: geo:geo_file_download
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_file_registry_removal - :name: geo:geo_file_registry_removal
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_file_removal - :name: geo:geo_file_removal
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_hashed_storage_attachments_migration - :name: geo:geo_hashed_storage_attachments_migration
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_hashed_storage_migration - :name: geo:geo_hashed_storage_migration
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_project_sync - :name: geo:geo_project_sync
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_rename_repository - :name: geo:geo_rename_repository
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_repositories_clean_up - :name: geo:geo_repositories_clean_up
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_repository_cleanup - :name: geo:geo_repository_cleanup
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_repository_destroy - :name: geo:geo_repository_destroy
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_repository_shard_sync - :name: geo:geo_repository_shard_sync
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_repository_verification_primary_shard - :name: geo:geo_repository_verification_primary_shard
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_repository_verification_primary_single - :name: geo:geo_repository_verification_primary_single
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_repository_verification_secondary_single - :name: geo:geo_repository_verification_secondary_single
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_scheduler_primary_scheduler - :name: geo:geo_scheduler_primary_scheduler
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_scheduler_scheduler - :name: geo:geo_scheduler_scheduler
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_scheduler_secondary_scheduler - :name: geo:geo_scheduler_secondary_scheduler
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: geo:geo_secondary_repository_backfill - :name: geo:geo_secondary_repository_backfill
:feature_category: :geo_replication :feature_category: :geo_replication
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: incident_management:incident_management_process_prometheus_alert - :name: incident_management:incident_management_process_prometheus_alert
:feature_category: :incident_management :feature_category: :incident_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 2 :weight: 2
:idempotent:
- :name: jira_connect:jira_connect_sync_branch - :name: jira_connect:jira_connect_sync_branch
:feature_category: :integrations :feature_category: :integrations
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: jira_connect:jira_connect_sync_merge_request - :name: jira_connect:jira_connect_sync_merge_request
:feature_category: :integrations :feature_category: :integrations
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: package_repositories:packages_nuget_extraction - :name: package_repositories:packages_nuget_extraction
:feature_category: :package_registry :feature_category: :package_registry
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: personal_access_tokens:personal_access_tokens_policy - :name: personal_access_tokens:personal_access_tokens_policy
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: security_scans:store_security_reports - :name: security_scans:store_security_reports
:feature_category: :static_application_security_testing :feature_category: :static_application_security_testing
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: security_scans:store_security_scans - :name: security_scans:store_security_scans
:feature_category: :static_application_security_testing :feature_category: :static_application_security_testing
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: security_scans:sync_security_reports_to_report_approval_rules - :name: security_scans:sync_security_reports_to_report_approval_rules
:feature_category: :static_application_security_testing :feature_category: :static_application_security_testing
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: true :latency_sensitive: true
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 2 :weight: 2
:idempotent:
- :name: adjourned_project_deletion - :name: adjourned_project_deletion
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: admin_emails - :name: admin_emails
:feature_category: :not_owned :feature_category: :not_owned
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: create_github_webhook - :name: create_github_webhook
:feature_category: :integrations :feature_category: :integrations
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 2 :weight: 2
:idempotent:
- :name: design_management_new_version - :name: design_management_new_version
:feature_category: :design_management :feature_category: :design_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: elastic_batch_project_indexer - :name: elastic_batch_project_indexer
:feature_category: :search :feature_category: :search
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: elastic_commit_indexer - :name: elastic_commit_indexer
:feature_category: :search :feature_category: :search
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: elastic_full_index - :name: elastic_full_index
:feature_category: :search :feature_category: :search
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: elastic_indexer - :name: elastic_indexer
:feature_category: :search :feature_category: :search
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: elastic_namespace_indexer - :name: elastic_namespace_indexer
:feature_category: :search :feature_category: :search
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: elastic_namespace_rollout - :name: elastic_namespace_rollout
:feature_category: :search :feature_category: :search
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: export_csv - :name: export_csv
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :memory :resource_boundary: :memory
:weight: 1 :weight: 1
:idempotent:
- :name: ldap_group_sync - :name: ldap_group_sync
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: true :has_external_dependencies: true
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: new_epic - :name: new_epic
:feature_category: :epics :feature_category: :epics
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :cpu :resource_boundary: :cpu
:weight: 2 :weight: 2
:idempotent:
- :name: project_import_schedule - :name: project_import_schedule
:feature_category: :importers :feature_category: :importers
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: project_update_repository_storage - :name: project_update_repository_storage
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: refresh_license_compliance_checks - :name: refresh_license_compliance_checks
:feature_category: :license_compliance :feature_category: :license_compliance
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 2 :weight: 2
:idempotent:
- :name: repository_push_audit_event - :name: repository_push_audit_event
:feature_category: :authentication_and_authorization :feature_category: :authentication_and_authorization
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: repository_update_mirror - :name: repository_update_mirror
:feature_category: :source_code_management :feature_category: :source_code_management
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
- :name: service_desk_email_receiver - :name: service_desk_email_receiver
:feature_category: :issue_tracking :feature_category: :issue_tracking
:has_external_dependencies: :has_external_dependencies:
:latency_sensitive: :latency_sensitive:
:resource_boundary: :unknown :resource_boundary: :unknown
:weight: 1 :weight: 1
:idempotent:
# frozen_string_literal: true # frozen_string_literal: true
class ClearSharedRunnersMinutesWorker class ClearSharedRunnersMinutesWorker # rubocop:disable Scalability/IdempotentWorker
LEASE_TIMEOUT = 3600 LEASE_TIMEOUT = 3600
include ApplicationWorker include ApplicationWorker
......
# frozen_string_literal: true # frozen_string_literal: true
class ClusterUpdateAppWorker class ClusterUpdateAppWorker # rubocop:disable Scalability/IdempotentWorker
UpdateAlreadyInProgressError = Class.new(StandardError) UpdateAlreadyInProgressError = Class.new(StandardError)
include ApplicationWorker include ApplicationWorker
......
# frozen_string_literal: true # frozen_string_literal: true
class ClusterWaitForAppUpdateWorker class ClusterWaitForAppUpdateWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ClusterQueue include ClusterQueue
include ClusterApplications include ClusterApplications
......
# frozen_string_literal: true # frozen_string_literal: true
class CreateGithubWebhookWorker class CreateGithubWebhookWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GrapePathHelpers::NamedRouteMatcher include GrapePathHelpers::NamedRouteMatcher
......
# frozen_string_literal: true # frozen_string_literal: true
module DesignManagement module DesignManagement
class NewVersionWorker class NewVersionWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :design_management feature_category :design_management
......
# frozen_string_literal: true # frozen_string_literal: true
class ElasticBatchProjectIndexerWorker class ElasticBatchProjectIndexerWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :search feature_category :search
......
# frozen_string_literal: true # frozen_string_literal: true
class ElasticCommitIndexerWorker class ElasticCommitIndexerWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :search feature_category :search
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
# indexing the repository, wiki and its nested models # indexing the repository, wiki and its nested models
# (e.g. )issues and notes etc.) # (e.g. )issues and notes etc.)
# Intended for full site indexing. # Intended for full site indexing.
class ElasticFullIndexWorker class ElasticFullIndexWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
sidekiq_options retry: 2 sidekiq_options retry: 2
......
# frozen_string_literal: true # frozen_string_literal: true
class ElasticIndexerWorker class ElasticIndexerWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include Elasticsearch::Model::Client::ClassMethods include Elasticsearch::Model::Client::ClassMethods
......
# frozen_string_literal: true # frozen_string_literal: true
class ElasticNamespaceIndexerWorker class ElasticNamespaceIndexerWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :search feature_category :search
......
# frozen_string_literal: true # frozen_string_literal: true
class ElasticNamespaceRolloutWorker class ElasticNamespaceRolloutWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :search feature_category :search
......
# frozen_string_literal: true # frozen_string_literal: true
module Epics module Epics
class UpdateEpicsDatesWorker class UpdateEpicsDatesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :epics queue_namespace :epics
......
# frozen_string_literal: true # frozen_string_literal: true
class ExportCsvWorker class ExportCsvWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :issue_tracking feature_category :issue_tracking
......
...@@ -6,7 +6,7 @@ module Geo ...@@ -6,7 +6,7 @@ module Geo
# #
# This class includes an Exclusive Lease guard and only one can be executed at the same time # This class includes an Exclusive Lease guard and only one can be executed at the same time
# If multiple jobs are scheduled, only one will run and the others will drop forever. # If multiple jobs are scheduled, only one will run and the others will drop forever.
class ProjectRegistrySchedulerWorker class ProjectRegistrySchedulerWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
......
...@@ -6,7 +6,7 @@ module Geo ...@@ -6,7 +6,7 @@ module Geo
# #
# This class includes an Exclusive Lease guard and only one can be executed at the same time # This class includes an Exclusive Lease guard and only one can be executed at the same time
# If multiple jobs are scheduled, only one will run and the others will drop forever. # If multiple jobs are scheduled, only one will run and the others will drop forever.
class ProjectRegistryWorker class ProjectRegistryWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
include ::Gitlab::Geo::LogHelpers include ::Gitlab::Geo::LogHelpers
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class ContainerRepositorySyncDispatchWorker < Geo::Scheduler::Secondary::SchedulerWorker class ContainerRepositorySyncDispatchWorker < Geo::Scheduler::Secondary::SchedulerWorker # rubocop:disable Scalability/IdempotentWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class ContainerRepositorySyncWorker class ContainerRepositorySyncWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
include Gitlab::Geo::LogHelpers include Gitlab::Geo::LogHelpers
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class DesignRepositoryShardSyncWorker < RepositoryShardSyncWorker class DesignRepositoryShardSyncWorker < RepositoryShardSyncWorker # rubocop:disable Scalability/IdempotentWorker
private private
def schedule_job(project_id) def schedule_job(project_id)
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class DesignRepositorySyncWorker class DesignRepositorySyncWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
include Gitlab::Geo::LogHelpers include Gitlab::Geo::LogHelpers
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class EventWorker class EventWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class FileDownloadDispatchWorker < Geo::Scheduler::Secondary::SchedulerWorker class FileDownloadDispatchWorker < Geo::Scheduler::Secondary::SchedulerWorker # rubocop:disable Scalability/IdempotentWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class FileDownloadDispatchWorker class FileDownloadDispatchWorker # rubocop:disable Scalability/IdempotentWorker
class AttachmentJobFinder < JobFinder class AttachmentJobFinder < JobFinder # rubocop:disable Scalability/IdempotentWorker
EXCEPT_RESOURCE_IDS_KEY = :except_file_ids EXCEPT_RESOURCE_IDS_KEY = :except_file_ids
def registry_finder def registry_finder
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class FileDownloadDispatchWorker class FileDownloadDispatchWorker # rubocop:disable Scalability/IdempotentWorker
class JobArtifactJobFinder < JobFinder class JobArtifactJobFinder < JobFinder # rubocop:disable Scalability/IdempotentWorker
RESOURCE_ID_KEY = :artifact_id RESOURCE_ID_KEY = :artifact_id
EXCEPT_RESOURCE_IDS_KEY = :except_artifact_ids EXCEPT_RESOURCE_IDS_KEY = :except_artifact_ids
FILE_SERVICE_OBJECT_TYPE = :job_artifact FILE_SERVICE_OBJECT_TYPE = :job_artifact
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class FileDownloadDispatchWorker class FileDownloadDispatchWorker # rubocop:disable Scalability/IdempotentWorker
# This class is meant to be inherited, and is responsible for generating # This class is meant to be inherited, and is responsible for generating
# batches of job arguments for FileDownloadWorker. # batches of job arguments for FileDownloadWorker.
# #
...@@ -12,7 +12,7 @@ module Geo ...@@ -12,7 +12,7 @@ module Geo
# * RESOURCE_ID_KEY # * RESOURCE_ID_KEY
# * FILE_SERVICE_OBJECT_TYPE # * FILE_SERVICE_OBJECT_TYPE
# #
class JobFinder class JobFinder # rubocop:disable Scalability/IdempotentWorker
include Gitlab::Utils::StrongMemoize include Gitlab::Utils::StrongMemoize
attr_reader :scheduled_file_ids attr_reader :scheduled_file_ids
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class FileDownloadDispatchWorker class FileDownloadDispatchWorker # rubocop:disable Scalability/IdempotentWorker
class LfsObjectJobFinder < JobFinder class LfsObjectJobFinder < JobFinder # rubocop:disable Scalability/IdempotentWorker
RESOURCE_ID_KEY = :lfs_object_id RESOURCE_ID_KEY = :lfs_object_id
EXCEPT_RESOURCE_IDS_KEY = :except_ids EXCEPT_RESOURCE_IDS_KEY = :except_ids
FILE_SERVICE_OBJECT_TYPE = :lfs FILE_SERVICE_OBJECT_TYPE = :lfs
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class FileDownloadWorker class FileDownloadWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class FileRegistryRemovalWorker class FileRegistryRemovalWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
include ::Gitlab::Geo::LogHelpers include ::Gitlab::Geo::LogHelpers
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class FileRemovalWorker class FileRemovalWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include Gitlab::Geo::LogHelpers include Gitlab::Geo::LogHelpers
include GeoQueue include GeoQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class HashedStorageAttachmentsMigrationWorker class HashedStorageAttachmentsMigrationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class HashedStorageMigrationWorker class HashedStorageMigrationWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class MetricsUpdateWorker class MetricsUpdateWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class MigratedLocalFilesCleanUpWorker < ::Geo::Scheduler::Secondary::SchedulerWorker class MigratedLocalFilesCleanUpWorker < ::Geo::Scheduler::Secondary::SchedulerWorker # rubocop:disable Scalability/IdempotentWorker
include ::CronjobQueue include ::CronjobQueue
MAX_CAPACITY = 1000 MAX_CAPACITY = 1000
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class ProjectSyncWorker class ProjectSyncWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
include Gitlab::Geo::LogHelpers include Gitlab::Geo::LogHelpers
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class PruneEventLogWorker class PruneEventLogWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class RenameRepositoryWorker class RenameRepositoryWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class RepositoriesCleanUpWorker class RepositoriesCleanUpWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
include GeoQueue include GeoQueue
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class RepositoryCleanupWorker class RepositoryCleanupWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
include ::Gitlab::Geo::LogHelpers include ::Gitlab::Geo::LogHelpers
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class RepositoryShardSyncWorker < Geo::Scheduler::Secondary::SchedulerWorker class RepositoryShardSyncWorker < Geo::Scheduler::Secondary::SchedulerWorker # rubocop:disable Scalability/IdempotentWorker
sidekiq_options retry: false sidekiq_options retry: false
attr_accessor :shard_name attr_accessor :shard_name
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class RepositorySyncWorker < Geo::Scheduler::Secondary::PerShardSchedulerWorker class RepositorySyncWorker < Geo::Scheduler::Secondary::PerShardSchedulerWorker # rubocop:disable Scalability/IdempotentWorker
def schedule_job(shard_name) def schedule_job(shard_name)
if ::Feature.enabled?(:geo_streaming_results_repository_sync) if ::Feature.enabled?(:geo_streaming_results_repository_sync)
Geo::Secondary::RepositoryBackfillWorker.perform_async(shard_name) Geo::Secondary::RepositoryBackfillWorker.perform_async(shard_name)
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Geo module Geo
module RepositoryVerification module RepositoryVerification
module Primary module Primary
class BatchWorker < Geo::Scheduler::Primary::PerShardSchedulerWorker class BatchWorker < Geo::Scheduler::Primary::PerShardSchedulerWorker # rubocop:disable Scalability/IdempotentWorker
def perform def perform
return unless Gitlab::Geo.repository_verification_enabled? return unless Gitlab::Geo.repository_verification_enabled?
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Geo module Geo
module RepositoryVerification module RepositoryVerification
module Primary module Primary
class ShardWorker < Geo::Scheduler::Primary::SchedulerWorker class ShardWorker < Geo::Scheduler::Primary::SchedulerWorker # rubocop:disable Scalability/IdempotentWorker
sidekiq_options retry: false sidekiq_options retry: false
attr_accessor :shard_name attr_accessor :shard_name
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Geo module Geo
module RepositoryVerification module RepositoryVerification
module Primary module Primary
class SingleWorker class SingleWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Geo module Geo
module RepositoryVerification module RepositoryVerification
module Secondary module Secondary
class SchedulerWorker < Geo::Scheduler::Secondary::PerShardSchedulerWorker class SchedulerWorker < Geo::Scheduler::Secondary::PerShardSchedulerWorker # rubocop:disable Scalability/IdempotentWorker
def perform def perform
return unless Gitlab::Geo.repository_verification_enabled? return unless Gitlab::Geo.repository_verification_enabled?
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Geo module Geo
module RepositoryVerification module RepositoryVerification
module Secondary module Secondary
class ShardWorker < Geo::Scheduler::Secondary::SchedulerWorker class ShardWorker < Geo::Scheduler::Secondary::SchedulerWorker # rubocop:disable Scalability/IdempotentWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
include CronjobQueue include CronjobQueue
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Geo module Geo
module RepositoryVerification module RepositoryVerification
module Secondary module Secondary
class SingleWorker class SingleWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Geo module Geo
module Scheduler module Scheduler
class PerShardSchedulerWorker class PerShardSchedulerWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Geo module Geo
module Scheduler module Scheduler
module Primary module Primary
class PerShardSchedulerWorker < Geo::Scheduler::PerShardSchedulerWorker class PerShardSchedulerWorker < Geo::Scheduler::PerShardSchedulerWorker # rubocop:disable Scalability/IdempotentWorker
def perform def perform
unless Gitlab::Geo.primary? unless Gitlab::Geo.primary?
log_info('Current node not a primary') log_info('Current node not a primary')
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Geo module Geo
module Scheduler module Scheduler
module Primary module Primary
class SchedulerWorker < Geo::Scheduler::SchedulerWorker class SchedulerWorker < Geo::Scheduler::SchedulerWorker # rubocop:disable Scalability/IdempotentWorker
def perform def perform
return unless Gitlab::Geo.primary? return unless Gitlab::Geo.primary?
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Geo module Geo
module Scheduler module Scheduler
class SchedulerWorker class SchedulerWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
include ExclusiveLeaseGuard include ExclusiveLeaseGuard
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Geo module Geo
module Scheduler module Scheduler
module Secondary module Secondary
class PerShardSchedulerWorker < Geo::Scheduler::PerShardSchedulerWorker class PerShardSchedulerWorker < Geo::Scheduler::PerShardSchedulerWorker # rubocop:disable Scalability/IdempotentWorker
def perform def perform
unless Gitlab::Geo.geo_database_configured? unless Gitlab::Geo.geo_database_configured?
log_info('Geo database not configured') log_info('Geo database not configured')
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
module Geo module Geo
module Scheduler module Scheduler
module Secondary module Secondary
class SchedulerWorker < Geo::Scheduler::SchedulerWorker class SchedulerWorker < Geo::Scheduler::SchedulerWorker # rubocop:disable Scalability/IdempotentWorker
def perform def perform
unless Gitlab::Geo.geo_database_configured? unless Gitlab::Geo.geo_database_configured?
log_info('Geo database not configured') log_info('Geo database not configured')
......
...@@ -5,7 +5,7 @@ module Geo ...@@ -5,7 +5,7 @@ module Geo
# Iterates over syncable records and creates the corresponding registry # Iterates over syncable records and creates the corresponding registry
# records which are missing. Then, the workers that actually schedule the # records which are missing. Then, the workers that actually schedule the
# sync work only have to query the registry table for never-synced records. # sync work only have to query the registry table for never-synced records.
class RegistryConsistencyWorker class RegistryConsistencyWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
prepend Reenqueuer prepend Reenqueuer
include ::Gitlab::Geo::LogHelpers include ::Gitlab::Geo::LogHelpers
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Geo module Geo
module Secondary module Secondary
class RepositoryBackfillWorker class RepositoryBackfillWorker # rubocop:disable Scalability/IdempotentWorker
include Geo::Secondary::BackfillWorker include Geo::Secondary::BackfillWorker
private private
......
# frozen_string_literal: true # frozen_string_literal: true
module Geo module Geo
class SidekiqCronConfigWorker class SidekiqCronConfigWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
class GeoRepositoryDestroyWorker class GeoRepositoryDestroyWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include GeoQueue include GeoQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class HistoricalDataWorker class HistoricalDataWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
class ImportSoftwareLicensesWorker class ImportSoftwareLicensesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :cronjob queue_namespace :cronjob
......
# frozen_string_literal: true # frozen_string_literal: true
module IncidentManagement module IncidentManagement
class ProcessPrometheusAlertWorker class ProcessPrometheusAlertWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :incident_management queue_namespace :incident_management
......
# frozen_string_literal: true # frozen_string_literal: true
module JiraConnect module JiraConnect
class SyncBranchWorker class SyncBranchWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :jira_connect queue_namespace :jira_connect
......
# frozen_string_literal: true # frozen_string_literal: true
module JiraConnect module JiraConnect
class SyncMergeRequestWorker class SyncMergeRequestWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :jira_connect queue_namespace :jira_connect
......
# frozen_string_literal: true # frozen_string_literal: true
class LdapAllGroupsSyncWorker class LdapAllGroupsSyncWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
class LdapGroupSyncWorker class LdapGroupSyncWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :authentication_and_authorization feature_category :authentication_and_authorization
......
# frozen_string_literal: true # frozen_string_literal: true
class LdapSyncWorker class LdapSyncWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
# frozen_string_literal: true # frozen_string_literal: true
class NewEpicWorker class NewEpicWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include NewIssuable include NewIssuable
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
module Packages module Packages
module Nuget module Nuget
class ExtractionWorker class ExtractionWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :package_repositories queue_namespace :package_repositories
......
# frozen_string_literal: true # frozen_string_literal: true
module PersonalAccessTokens module PersonalAccessTokens
class PolicyWorker class PolicyWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
queue_namespace :personal_access_tokens queue_namespace :personal_access_tokens
......
# frozen_string_literal: true # frozen_string_literal: true
class ProjectImportScheduleWorker class ProjectImportScheduleWorker # rubocop:disable Scalability/IdempotentWorker
ImportStateNotFound = Class.new(StandardError) ImportStateNotFound = Class.new(StandardError)
include ApplicationWorker include ApplicationWorker
......
# frozen_string_literal: true # frozen_string_literal: true
class ProjectUpdateRepositoryStorageWorker class ProjectUpdateRepositoryStorageWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :source_code_management feature_category :source_code_management
......
# frozen_string_literal: true # frozen_string_literal: true
class PseudonymizerWorker class PseudonymizerWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
# rubocop:disable Scalability/CronWorkerContext # rubocop:disable Scalability/CronWorkerContext
# This worker does not perform work scoped to a context # This worker does not perform work scoped to a context
......
# frozen_string_literal: true # frozen_string_literal: true
class RefreshLicenseComplianceChecksWorker class RefreshLicenseComplianceChecksWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :license_compliance feature_category :license_compliance
......
# frozen_string_literal: true # frozen_string_literal: true
class RepositoryPushAuditEventWorker class RepositoryPushAuditEventWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
feature_category :authentication_and_authorization feature_category :authentication_and_authorization
......
# frozen_string_literal: true # frozen_string_literal: true
class RepositoryUpdateMirrorWorker class RepositoryUpdateMirrorWorker # rubocop:disable Scalability/IdempotentWorker
UpdateError = Class.new(StandardError) UpdateError = Class.new(StandardError)
include ApplicationWorker include ApplicationWorker
......
# frozen_string_literal: true # frozen_string_literal: true
class ServiceDeskEmailReceiverWorker < EmailReceiverWorker class ServiceDeskEmailReceiverWorker < EmailReceiverWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
def perform(raw) def perform(raw)
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Worker for storing security reports into the database. # Worker for storing security reports into the database.
# #
class StoreSecurityReportsWorker class StoreSecurityReportsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include SecurityScansQueue include SecurityScansQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class StoreSecurityScansWorker class StoreSecurityScansWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include SecurityScansQueue include SecurityScansQueue
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
# Worker for syncing report_type approval_rules approvals_required # Worker for syncing report_type approval_rules approvals_required
# #
class SyncSecurityReportsToReportApprovalRulesWorker class SyncSecurityReportsToReportApprovalRulesWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include SecurityScansQueue include SecurityScansQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class UpdateAllMirrorsWorker class UpdateAllMirrorsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue include CronjobQueue
......
# frozen_string_literal: true # frozen_string_literal: true
class UpdateMaxSeatsUsedForGitlabComSubscriptionsWorker class UpdateMaxSeatsUsedForGitlabComSubscriptionsWorker # rubocop:disable Scalability/IdempotentWorker
include ApplicationWorker include ApplicationWorker
include CronjobQueue # rubocop:disable Scalability/CronWorkerContext include CronjobQueue # rubocop:disable Scalability/CronWorkerContext
......
...@@ -11,6 +11,7 @@ module Gitlab ...@@ -11,6 +11,7 @@ module Gitlab
has_external_dependencies: :worker_has_external_dependencies?, has_external_dependencies: :worker_has_external_dependencies?,
latency_sensitive: :latency_sensitive_worker?, latency_sensitive: :latency_sensitive_worker?,
resource_boundary: :get_worker_resource_boundary, resource_boundary: :get_worker_resource_boundary,
idempotent: :idempotent?,
weight: :get_weight weight: :get_weight
}.freeze }.freeze
......
...@@ -7,7 +7,7 @@ module Gitlab ...@@ -7,7 +7,7 @@ module Gitlab
attr_reader :klass attr_reader :klass
delegate :feature_category_not_owned?, :get_feature_category, delegate :feature_category_not_owned?, :get_feature_category,
:get_weight, :get_worker_resource_boundary, :get_weight, :get_worker_resource_boundary, :idempotent?,
:latency_sensitive_worker?, :queue, :queue_namespace, :latency_sensitive_worker?, :queue, :queue_namespace,
:worker_has_external_dependencies?, :worker_has_external_dependencies?,
to: :klass to: :klass
...@@ -51,7 +51,8 @@ module Gitlab ...@@ -51,7 +51,8 @@ module Gitlab
has_external_dependencies: worker_has_external_dependencies?, has_external_dependencies: worker_has_external_dependencies?,
latency_sensitive: latency_sensitive_worker?, latency_sensitive: latency_sensitive_worker?,
resource_boundary: get_worker_resource_boundary, resource_boundary: get_worker_resource_boundary,
weight: get_weight weight: get_weight,
idempotent: idempotent?
} }
end end
......
# frozen_string_literal: true
require_relative '../../code_reuse_helpers.rb'
module RuboCop
module Cop
module Scalability
# This cop checks for the `idempotent!` call in the worker scope.
#
# @example
#
# # bad
# class TroubleMakerWorker
# def perform
# end
# end
#
# # good
# class NiceWorker
# idempotent!
#
# def perform
# end
# end
#
class IdempotentWorker < RuboCop::Cop::Cop
include CodeReuseHelpers
HELP_LINK = 'https://github.com/mperham/sidekiq/wiki/Best-Practices#2-make-your-job-idempotent-and-transactional'
MSG = <<~MSG
Avoid adding not idempotent workers.
A worker is considered idempotent if:
1. It can safely run multiple times with the same arguments
2. The application side-effects are expected to happen once (or side-effects of a second run are not impactful)
3. It can safely be skipped if another job with the same arguments is already in the queue
If all the above is true, make sure to mark it as so by calling the `idempotent!`
method in the worker scope.
See #{HELP_LINK}
MSG
def_node_search :idempotent?, <<~PATTERN
(send nil? :idempotent!)
PATTERN
def on_class(node)
return unless in_worker?(node)
return if idempotent?(node)
add_offense(node, location: :expression)
end
end
end
end
end
...@@ -12,7 +12,8 @@ describe Gitlab::SidekiqConfig::Worker do ...@@ -12,7 +12,8 @@ describe Gitlab::SidekiqConfig::Worker do
get_weight: attributes[:weight], get_weight: attributes[:weight],
get_worker_resource_boundary: attributes[:resource_boundary], get_worker_resource_boundary: attributes[:resource_boundary],
latency_sensitive_worker?: attributes[:latency_sensitive], latency_sensitive_worker?: attributes[:latency_sensitive],
worker_has_external_dependencies?: attributes[:has_external_dependencies] worker_has_external_dependencies?: attributes[:has_external_dependencies],
idempotent?: attributes[:idempotent]
) )
described_class.new(inner_worker, ee: false) described_class.new(inner_worker, ee: false)
...@@ -89,7 +90,8 @@ describe Gitlab::SidekiqConfig::Worker do ...@@ -89,7 +90,8 @@ describe Gitlab::SidekiqConfig::Worker do
has_external_dependencies: false, has_external_dependencies: false,
latency_sensitive: false, latency_sensitive: false,
resource_boundary: :memory, resource_boundary: :memory,
weight: 2 weight: 2,
idempotent: true
} }
attributes_b = { attributes_b = {
...@@ -97,7 +99,8 @@ describe Gitlab::SidekiqConfig::Worker do ...@@ -97,7 +99,8 @@ describe Gitlab::SidekiqConfig::Worker do
has_external_dependencies: true, has_external_dependencies: true,
latency_sensitive: true, latency_sensitive: true,
resource_boundary: :unknown, resource_boundary: :unknown,
weight: 1 weight: 3,
idempotent: false
} }
worker_a = create_worker(queue: 'a', **attributes_a) worker_a = create_worker(queue: 'a', **attributes_a)
......
# frozen_string_literal: true
require 'fast_spec_helper'
require 'rubocop'
require_relative '../../../support/helpers/expect_offense'
require_relative '../../../../rubocop/cop/scalability/idempotent_worker'
describe RuboCop::Cop::Scalability::IdempotentWorker do
include CopHelper
include ExpectOffense
subject(:cop) { described_class.new }
before do
allow(cop)
.to receive(:in_worker?)
.and_return(true)
end
it 'adds an offense when not defining idempotent method' do
inspect_source(<<~CODE.strip_indent)
class SomeWorker
end
CODE
expect(cop.offenses.size).to eq(1)
end
it 'adds an offense when not defining idempotent method' do
inspect_source(<<~CODE.strip_indent)
class SomeWorker
idempotent!
end
CODE
expect(cop.offenses.size).to be_zero
end
end
...@@ -119,6 +119,7 @@ RSpec.configure do |config| ...@@ -119,6 +119,7 @@ RSpec.configure do |config|
config.include PolicyHelpers, type: :policy config.include PolicyHelpers, type: :policy
config.include MemoryUsageHelper config.include MemoryUsageHelper
config.include ExpectRequestWithStatus, type: :request config.include ExpectRequestWithStatus, type: :request
config.include IdempotentWorkerHelper, type: :worker
config.include RailsHelpers config.include RailsHelpers
if ENV['CI'] || ENV['RETRIES'] if ENV['CI'] || ENV['RETRIES']
......
# frozen_string_literal: true
module IdempotentWorkerHelper
WORKER_EXEC_TIMES = 2
def perform_multiple(args = [], worker: described_class.new, exec_times: WORKER_EXEC_TIMES)
Sidekiq::Testing.inline! do
job_args = args.nil? ? [nil] : Array.wrap(args)
expect(worker).to receive(:perform).exactly(exec_times).and_call_original
exec_times.times { worker.perform(*job_args) }
end
end
end
# frozen_string_literal: true
# This shared_example requires the following variables:
# - job_args (if not given, will fallback to call perform without arguments)
#
# Usage:
#
# include_examples 'an idempotent worker' do
# it 'checks the side-effects for multiple calls' do
# # it'll call the job's perform method 3 times
# # by default.
# subject
#
# expect(model.state).to eq('state')
# end
# end
#
RSpec.shared_examples 'an idempotent worker' do
# Avoid stubbing calls for a more accurate run.
subject do
defined?(job_args) ? perform_multiple(job_args) : perform_multiple
end
it 'is labeled as idempotent' do
expect(described_class).to be_idempotent
end
it 'performs multiple times sequentially without raising an exception' do
expect { subject }.not_to raise_error
end
end
...@@ -6,20 +6,32 @@ describe ExpireJobCacheWorker do ...@@ -6,20 +6,32 @@ describe ExpireJobCacheWorker do
set(:pipeline) { create(:ci_empty_pipeline) } set(:pipeline) { create(:ci_empty_pipeline) }
let(:project) { pipeline.project } let(:project) { pipeline.project }
subject { described_class.new }
describe '#perform' do describe '#perform' do
context 'with a job in the pipeline' do context 'with a job in the pipeline' do
let(:job) { create(:ci_build, pipeline: pipeline) } let(:job) { create(:ci_build, pipeline: pipeline) }
let(:job_args) { job.id }
include_examples 'an idempotent worker' do
it 'invalidates Etag caching for the job path' do
pipeline_path = "/#{project.full_path}/pipelines/#{pipeline.id}.json"
job_path = "/#{project.full_path}/builds/#{job.id}.json"
spy_store = Gitlab::EtagCaching::Store.new
allow(Gitlab::EtagCaching::Store).to receive(:new) { spy_store }
it 'invalidates Etag caching for the job path' do expect(spy_store).to receive(:touch)
pipeline_path = "/#{project.full_path}/pipelines/#{pipeline.id}.json" .exactly(IdempotentWorkerHelper::WORKER_EXEC_TIMES).times
job_path = "/#{project.full_path}/builds/#{job.id}.json" .with(pipeline_path)
.and_call_original
expect_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch).with(pipeline_path) expect(spy_store).to receive(:touch)
expect_any_instance_of(Gitlab::EtagCaching::Store).to receive(:touch).with(job_path) .exactly(IdempotentWorkerHelper::WORKER_EXEC_TIMES).times
.with(job_path)
.and_call_original
subject.perform(job.id) subject
end
end end
end end
...@@ -27,7 +39,7 @@ describe ExpireJobCacheWorker do ...@@ -27,7 +39,7 @@ describe ExpireJobCacheWorker do
it 'does not change the etag store' do it 'does not change the etag store' do
expect(Gitlab::EtagCaching::Store).not_to receive(:new) expect(Gitlab::EtagCaching::Store).not_to receive(:new)
subject.perform(9999) perform_multiple(9999)
end end
end end
end end
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment