From 96500902200920bceb3c6fcbf7682727feff3cd2 Mon Sep 17 00:00:00 2001 From: GitLab Housekeeping Bot Date: Mon, 1 Sep 2025 09:40:51 +0000 Subject: [PATCH] Delete the `merge_request_delete_gitaly_refs_in_batches` feature flag This feature flag was introduced in 16.3, which is more than 12 milestones ago. As part of our process we want to ensure [feature flags don't stay too long in the codebase](https://docs.gitlab.com/ee/development/feature_flags/#types-of-feature-flags). Rollout issue: https://gitlab.com/gitlab-org/gitlab/-/issues/416969
Remaining mentions of the feature flag (click to expand) ``` doc/user/project/repository/monorepos/troubleshooting.md 95:> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/416969) in GitLab 18.5. Feature flag `merge_request_delete_gitaly_refs_in_batches` removed. ```
**Currently the feature flag is `disabled` on production** It is possible that this MR will still need some changes to remove references to the feature flag in the code. At the moment the `gitlab-housekeeper` is not always capable of removing all references so you must check the diff and pipeline failures to confirm if there are any issues. It is the responsibility of ~"group::gitaly" to push those changes to this branch. **Note:** If you do not want to remove this feature flag at this time, you can add an `intended_to_rollout_by_date` attribute in the feature flag YAML file to prevent automated removal. ## TODO for the reviewers before merging this MR - [ ] See the status of the rollout by checking https://gitlab.com/gitlab-org/gitlab/-/issues/416969, https://gitlab.com/gitlab-com/gl-infra/feature-flag-log/-/issues/?search=merge_request_delete_gitaly_refs_in_batches&sort=created_date&state=all&label_name%5B%5D=host%3A%3Agitlab.com - [ ] Verify the feature flag status via chatops by running `/chatops run feature get merge_request_delete_gitaly_refs_in_batches`. - [ ] [Search for references to `MergeRequestDeleteGitalyRefsInBatches` in frontend part of code](https://gitlab.com/search?project_id=278964&scope=blobs&search=MergeRequestDeleteGitalyRefsInBatches®ex=false) - [ ] [Search for references to `merge_request_delete_gitaly_refs_in_batches` in code](https://gitlab.com/search?project_id=278964&scope=blobs&search=merge_request_delete_gitaly_refs_in_batches®ex=false) - [ ] Check if we need to remove any Gem or other related code by looking at the changes in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125333 This change was generated by [gitlab-housekeeper](https://gitlab.com/gitlab-org/gitlab/-/tree/master/gems/gitlab-housekeeper) in [CI](https://gitlab.com/gitlab-org/quality/engineering-productivity/team/-/jobs/11202603532) using the `Keeps::DeleteOldFeatureFlags` keep. To provide feedback on your experience with `gitlab-housekeeper` please create an issue with the label ~"GitLab Housekeeper" and consider pinging the author of this keep. Changelog: removed --- app/models/merge_request.rb | 8 +---- ..._request_delete_gitaly_refs_in_batches.yml | 8 ----- .../repository/monorepos/troubleshooting.md | 3 +- ee/app/models/merge_trains/car.rb | 3 +- spec/models/merge_request_spec.rb | 33 ++++++++----------- .../cleanup_refs_service_spec.rb | 1 - 6 files changed, 18 insertions(+), 38 deletions(-) delete mode 100644 config/feature_flags/development/merge_request_delete_gitaly_refs_in_batches.yml diff --git a/app/models/merge_request.rb b/app/models/merge_request.rb index 98f1931ce5ea02..b8eca3def022e5 100644 --- a/app/models/merge_request.rb +++ b/app/models/merge_request.rb @@ -1904,13 +1904,7 @@ def rebase_on_merge_path end def schedule_cleanup_refs(only: :all) - if Feature.enabled?(:merge_request_delete_gitaly_refs_in_batches, target_project) - async_cleanup_refs(only: only) - elsif Feature.enabled?(:merge_request_cleanup_ref_worker_async, target_project) - MergeRequests::CleanupRefWorker.perform_async(id, only.to_s) - else - cleanup_refs(only: only) - end + async_cleanup_refs(only: only) end def refs_to_cleanup(only: :all) diff --git a/config/feature_flags/development/merge_request_delete_gitaly_refs_in_batches.yml b/config/feature_flags/development/merge_request_delete_gitaly_refs_in_batches.yml deleted file mode 100644 index 0f0b81dbbd281b..00000000000000 --- a/config/feature_flags/development/merge_request_delete_gitaly_refs_in_batches.yml +++ /dev/null @@ -1,8 +0,0 @@ ---- -name: merge_request_delete_gitaly_refs_in_batches -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/125333 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/416969 -milestone: '16.3' -type: development -group: group::gitaly -default_enabled: false diff --git a/doc/user/project/repository/monorepos/troubleshooting.md b/doc/user/project/repository/monorepos/troubleshooting.md index 769a6094caa44f..ae627a6fa13cba 100644 --- a/doc/user/project/repository/monorepos/troubleshooting.md +++ b/doc/user/project/repository/monorepos/troubleshooting.md @@ -91,7 +91,8 @@ These feature flags do not need downtime to enable. - `merge_request_cleanup_ref_worker_async` - `pipeline_cleanup_ref_worker_async` - `pipeline_delete_gitaly_refs_in_batches` -- `merge_request_delete_gitaly_refs_in_batches` + +> - [Generally available](https://gitlab.com/gitlab-org/gitlab/-/issues/416969) in GitLab 18.5. Feature flag `merge_request_delete_gitaly_refs_in_batches` removed. [Epic 4220](https://gitlab.com/groups/gitlab-org/-/epics/4220) proposes to add RefTable support in GitLab, which is considered a long-term solution. diff --git a/ee/app/models/merge_trains/car.rb b/ee/app/models/merge_trains/car.rb index b6cb59c1d5eaf6..87f839f96eada0 100644 --- a/ee/app/models/merge_trains/car.rb +++ b/ee/app/models/merge_trains/car.rb @@ -179,8 +179,7 @@ def first_car? def try_cleanup_ref(async: true) # The async variant isn't necessarily async, it depends on the feature - # flags merge_request_delete_gitaly_refs_in_batches and - # merge_request_cleanup_ref_worker_async + # flag merge_request_cleanup_ref_worker_async cleanup_ref(async: async) rescue ::Gitlab::Git::BaseError => e Gitlab::ErrorTracking.track_exception(e) diff --git a/spec/models/merge_request_spec.rb b/spec/models/merge_request_spec.rb index dbe3bb4ab407d4..0e95a7ba5ce137 100644 --- a/spec/models/merge_request_spec.rb +++ b/spec/models/merge_request_spec.rb @@ -6164,30 +6164,25 @@ def transition! subject end - context 'when merge_request_delete_gitaly_refs_in_batches is disabled' do - before do - stub_feature_flags(merge_request_delete_gitaly_refs_in_batches: false) - end + it 'deletes refs asynchronously' do + expect(merge_request.target_project.repository) + .to receive(:async_delete_refs) + .with(merge_request.train_ref_path) - it 'does schedule MergeRequests::CleanupRefWorker' do - expect(MergeRequests::CleanupRefWorker).to receive(:perform_async).with(merge_request.id, 'train') + subject + end - subject + context 'when merge_request_cleanup_ref_worker_async is disabled' do + before do + stub_feature_flags(merge_request_cleanup_ref_worker_async: false) end - context 'when merge_request_cleanup_ref_worker_async is disabled' do - before do - stub_feature_flags(merge_request_delete_gitaly_refs_in_batches: false) - stub_feature_flags(merge_request_cleanup_ref_worker_async: false) - end - - it 'deletes all refs from the target project' do - expect(merge_request.target_project.repository) - .to receive(:delete_refs) - .with(merge_request.train_ref_path) + it 'deletes all refs from the target project' do + expect(merge_request.target_project.repository) + .to receive(:delete_refs) + .with(merge_request.train_ref_path) - subject - end + subject end end end diff --git a/spec/services/merge_requests/cleanup_refs_service_spec.rb b/spec/services/merge_requests/cleanup_refs_service_spec.rb index a80a29b220abc3..404f8b27c3bebb 100644 --- a/spec/services/merge_requests/cleanup_refs_service_spec.rb +++ b/spec/services/merge_requests/cleanup_refs_service_spec.rb @@ -18,7 +18,6 @@ describe '#execute' do before do - stub_feature_flags(merge_request_delete_gitaly_refs_in_batches: false) stub_feature_flags(merge_request_cleanup_ref_worker_async: false) merge_request.create_cleanup_schedule(scheduled_at: described_class::TIME_THRESHOLD.ago) -- GitLab