Skip to content

Commit 69dd648

Browse files
authored
fix(sync): properly handle CommitAll errors in syncImage and skip failed temp sync dirs (#3567)
- Return CommitAll errors instead of ignoring them - Skip ErrRepoNotFound from temp sync dirs to allow other tags to sync - Each tag uses separate temp directory, so failures are isolated Signed-off-by: Andrei Aaron <andreifdaaron@gmail.com>
1 parent 64829f9 commit 69dd648

File tree

2 files changed

+8
-2
lines changed

2 files changed

+8
-2
lines changed

pkg/extensions/sync/on_demand.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,7 @@ func (onDemand *BaseOnDemand) syncReferrers(repo, subjectDigestStr string,
131131
if errors.Is(err, zerr.ErrManifestNotFound) ||
132132
errors.Is(err, zerr.ErrSyncImageFilteredOut) ||
133133
errors.Is(err, zerr.ErrSyncImageNotSigned) ||
134+
errors.Is(err, zerr.ErrRepoNotFound) ||
134135
// some public registries may return 401 for not found.
135136
errors.Is(err, zerr.ErrUnauthorizedAccess) {
136137
continue
@@ -208,6 +209,7 @@ func (onDemand *BaseOnDemand) syncImage(repo, reference string, syncResult chan
208209
if errors.Is(err, zerr.ErrManifestNotFound) ||
209210
errors.Is(err, zerr.ErrSyncImageFilteredOut) ||
210211
errors.Is(err, zerr.ErrSyncImageNotSigned) ||
212+
errors.Is(err, zerr.ErrRepoNotFound) ||
211213
// some public registries may return 401 for not found.
212214
errors.Is(err, zerr.ErrUnauthorizedAccess) {
213215
continue

pkg/extensions/sync/service.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -438,8 +438,10 @@ func (service *BaseService) SyncRepo(ctx context.Context, repo string) error {
438438
if errors.Is(err, zerr.ErrSyncImageNotSigned) ||
439439
errors.Is(err, zerr.ErrUnauthorizedAccess) ||
440440
errors.Is(err, zerr.ErrMediaTypeNotSupported) ||
441-
errors.Is(err, zerr.ErrManifestNotFound) {
442-
// skip unsigned images or unsupported image mediatype
441+
errors.Is(err, zerr.ErrManifestNotFound) ||
442+
errors.Is(err, zerr.ErrRepoNotFound) {
443+
// skip unsigned images, unsupported image mediatype, or temp sync dir issues
444+
// ErrRepoNotFound from temp sync dir is skippable since each tag uses a different temp directory
443445
continue
444446
}
445447

@@ -645,6 +647,8 @@ func (service *BaseService) syncImage(ctx context.Context, localRepo, remoteRepo
645647
if err != nil {
646648
service.log.Error().Str("errorType", common.TypeOf(err)).Str("repo", localRepo).
647649
Err(err).Msg("failed to commit image")
650+
651+
return err
648652
}
649653

650654
service.log.Info().Str("repo", localRepo).Str("reference", tag).Msg("successfully synced image")

0 commit comments

Comments
 (0)