Draft: [skip ci] Remove v1 session credits ingestion, step 3 of 3: delete the worker classes
What does this MR do and why?
Release M+2 of the three-release worker removal for the v1 session credits sync. It is the last of the three stacked MRs.
- Deletes
Ai::DuoWorkflows::FetchSessionCreditsCronWorkerandAi::DuoWorkflows::FetchNamespaceSessionCreditsWorkerwith their specs. - Deletes the migration spec from the previous MR, because the workers it enqueues no longer exist. The migration file itself stays, as migrations are never removed; once the classes are gone its
sidekiq_remove_jobscall resolves nothing and is a no-op, which is why it must have run in the release before this one. - Regenerates
ee/app/workers/all_queues.ymlandconfig/sidekiq_queues.yml. The queuescronjob:ai_duo_workflows_fetch_session_credits_cronandai_duo_workflows_fetch_namespace_session_creditsdisappear.
Release gate
This MR stays Draft until release M+2, expected to be 19.9 if release M is 19.7. CI cannot enforce this gate.
- Merge it one release after the previous MR's migration has run everywhere. Deleting the classes earlier turns that migration into a silent no-op, because
sidekiq_remove_jobsresolves class names withsafe_constantizeand skips classes that no longer exist. - The namespace worker's concurrency-limit buffer is drained by a resume worker that also needs the class to exist, which is another reason not to delete early.
- The same gates as the first MR apply: v2 rollout stable on GitLab.com and self-managed, v2 cutover merged, and v2 emitting
duo_workflow_session_credits_fetch_failures_total.
See https://docs.gitlab.com/development/sidekiq/compatibility_across_updates/#removing-worker-classes. TrendingProjectsWorker was removed the same way across 19.1, 19.2 and 19.3.
References
- Issue: https://gitlab.com/gitlab-org/gitlab/-/work_items/629771
- Stacked MR plan: https://gitlab.com/gitlab-org/gitlab/-/work_items/629771#note_3924894324
- v2 implementation issue: https://gitlab.com/gitlab-org/gitlab/-/work_items/629767
- v2 implementation MRs (merged): !258596 (merged) and !260768 (merged)
- v2 rollout issue: https://gitlab.com/gitlab-org/gitlab/-/work_items/629769
- Master design doc: https://gitlab.com/gitlab-org/gitlab/-/snippets/6063703
Screenshots or screen recordings
Not applicable, backend only.
| Before | After |
|---|---|
How to set up and validate locally
bin/rake gitlab:sidekiq:all_queues_yml:check gitlab:sidekiq:sidekiq_queues_yml:check
git grep -i 'FetchSessionCredits\|FetchNamespaceSessionCredits'The git grep should return nothing.
Integration check
Verified on 2026-10-01 against master plus the v2 branch plus MRs A, B and C merged together, which is the state after step 3 ships. 1036 examples pass across the CustomersDot client, Workflow model, GraphQL type, cron initializer, settings, Backoff and repo-wide Sidekiq worker specs. Both queue registry checks, the GraphQL reference check, and the migration checksum and timestamp validators pass. A grep for every removed identifier returns nothing. Not verified locally: the GraphQL request specs, which cannot run outside CI, and the v2 worker path, which does not exist yet.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.