From 6af1bfe21ba8c55d1643b660412305679fd7542e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Roberto=20Jim=C3=A9nez=20S=C3=A1nchez?= Date: Tue, 29 Jul 2025 10:37:27 +0200 Subject: [PATCH] Provisioning: Use commit only once mode in bulk delete (#108759) Use commit only once mode in bulk delete --- pkg/registry/apis/provisioning/jobs/delete/worker.go | 7 +++++-- .../apis/provisioning/jobs/delete/worker_test.go | 10 ++++++++-- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/pkg/registry/apis/provisioning/jobs/delete/worker.go b/pkg/registry/apis/provisioning/jobs/delete/worker.go index 5489445d216..74202643ccd 100644 --- a/pkg/registry/apis/provisioning/jobs/delete/worker.go +++ b/pkg/registry/apis/provisioning/jobs/delete/worker.go @@ -46,9 +46,12 @@ func (w *Worker) Process(ctx context.Context, repo repository.Repository, job pr return w.deleteFiles(ctx, rw, progress, opts, paths...) } + msg := fmt.Sprintf("Delete from Grafana %s", job.Name) stageOptions := repository.StageOptions{ - PushOnWrites: false, - Timeout: 10 * time.Minute, + Mode: repository.StageModeCommitOnlyOnce, + CommitOnlyOnceMessage: msg, + PushOnWrites: false, + Timeout: 10 * time.Minute, } err := w.wrapFn(ctx, repo, stageOptions, fn) diff --git a/pkg/registry/apis/provisioning/jobs/delete/worker_test.go b/pkg/registry/apis/provisioning/jobs/delete/worker_test.go index d2ba09ba85d..fbfe81a9762 100644 --- a/pkg/registry/apis/provisioning/jobs/delete/worker_test.go +++ b/pkg/registry/apis/provisioning/jobs/delete/worker_test.go @@ -93,7 +93,10 @@ func TestDeleteWorker_ProcessNotReaderWriter(t *testing.T) { mockWrapFn := repository.NewMockWrapWithStageFn(t) mockWrapFn.On("Execute", mock.Anything, mockRepo, mock.MatchedBy(func(opts repository.StageOptions) bool { - return !opts.PushOnWrites && opts.Timeout == 10*time.Minute + return !opts.PushOnWrites && + opts.Timeout == 10*time.Minute && + opts.Mode == repository.StageModeCommitOnlyOnce && + opts.CommitOnlyOnceMessage == "Delete from Grafana "+job.Name }), mock.Anything).Return(errors.New("delete job submitted targeting repository that is not a ReaderWriter")) mockProgress.On("SetTotal", mock.Anything, 1).Return() @@ -145,7 +148,10 @@ func TestDeleteWorker_ProcessDeleteFilesSuccess(t *testing.T) { mockWrapFn := repository.NewMockWrapWithStageFn(t) mockWrapFn.On("Execute", mock.Anything, mockRepo, mock.MatchedBy(func(opts repository.StageOptions) bool { - return !opts.PushOnWrites && opts.Timeout == 10*time.Minute + return !opts.PushOnWrites && + opts.Timeout == 10*time.Minute && + opts.Mode == repository.StageModeCommitOnlyOnce && + opts.CommitOnlyOnceMessage == "Delete from Grafana "+job.Name }), mock.Anything).Return(func(ctx context.Context, repo repository.Repository, stageOptions repository.StageOptions, fn func(repository.Repository, bool) error) error { return fn(mockRepo, false) })