Provisioning: Fix pull stuck in pending (#112032)

This commit is contained in:
Stephanie Hingtgen
2025-10-04 21:53:31 +00:00
committed by GitHub
parent d5d1851bc1
commit 7188a6ac33
2 changed files with 18 additions and 6 deletions
@@ -139,15 +139,17 @@ func (r *SyncWorker) Process(ctx context.Context, repo repository.Repository, jo
if err != nil {
setupSpan.End()
logger.Error("failed to create repository resources client", "error", err)
err = fmt.Errorf("create repository resources client: %w", err)
return tracing.Error(span, err)
setupError := fmt.Errorf("create repository resources client: %w", err)
progress.Complete(ctx, setupError)
return tracing.Error(span, setupError)
}
clients, err := r.clients.Clients(setupCtx, cfg.Namespace)
if err != nil {
setupSpan.End()
logger.Error("failed to get clients for the repository", "error", err)
err = fmt.Errorf("get clients for %s: %w", cfg.Name, err)
return tracing.Error(span, err)
setupError := fmt.Errorf("get clients for %s: %w", cfg.Name, err)
progress.Complete(ctx, setupError)
return tracing.Error(span, setupError)
}
setupSpan.End()
@@ -153,10 +153,15 @@ func TestSyncWorker_Process(t *testing.T) {
// Initial status update succeeds
pr.On("SetMessage", mock.Anything, "update sync status at start").Return()
rpf.On("Execute", mock.Anything, repoConfig, mock.Anything).Return(nil)
rpf.On("Execute", mock.Anything, repoConfig, mock.Anything).Return(nil).Once()
// Repository resources creation fails
rrf.On("Client", mock.Anything, mock.Anything).Return(nil, errors.New("failed to create repository resources client"))
// Progress.Complete should be called with the error
pr.On("Complete", mock.Anything, mock.MatchedBy(func(err error) bool {
return err != nil && err.Error() == "create repository resources client: failed to create repository resources client"
})).Return(provisioning.JobStatus{State: provisioning.JobStateError})
},
expectedError: "create repository resources client: failed to create repository resources client",
},
@@ -185,13 +190,18 @@ func TestSyncWorker_Process(t *testing.T) {
// Initial status update succeeds
pr.On("SetMessage", mock.Anything, "update sync status at start").Return()
rpf.On("Execute", mock.Anything, repoConfig, mock.Anything).Return(nil)
rpf.On("Execute", mock.Anything, repoConfig, mock.Anything).Return(nil).Once()
// Repository resources creation succeeds
rrf.On("Client", mock.Anything, mock.Anything).Return(&resources.MockRepositoryResources{}, nil)
// Getting clients for namespace fails
cf.On("Clients", mock.Anything, "test-namespace").Return(nil, errors.New("failed to get clients"))
// Progress.Complete should be called with the error
pr.On("Complete", mock.Anything, mock.MatchedBy(func(err error) bool {
return err != nil && err.Error() == "get clients for test-repo: failed to get clients"
})).Return(provisioning.JobStatus{State: provisioning.JobStateError})
},
expectedError: "get clients for test-repo: failed to get clients",
},