Replication Between Harbor Instances Failing - MANIFEST_UNKNOWN
search cancel

Replication Between Harbor Instances Failing - MANIFEST_UNKNOWN

book

Article ID: 408651

calendar_today

Updated On:

Products

VMware Tanzu Kubernetes Grid Integrated Edition

Issue/Introduction

Harbor Replication Failures consistently fail at 99% completion. Multiple executions show the same error pattern.

jobservice.log

Aug 27 21:00:55 172.20.1.1 jobservice[6116]: 2025-08-27T21:00:55Z [ERROR] [/controller/replication/transfer/image/transfer.go:470]: failed to pull the manifest of artifact path/path-webex:sha256:2e67####: http status code: 404, body: {"errors":[{"code":"MANIFEST_UNKNOWN","message":"manifest unknown","detail":{"Name":"path/path-webex","Revision":"sha256:2e67####"}}]}


Aug 27 21:01:08 172.20.1.1 jobservice[6116]: 2025-08-27T21:01:08Z [ERROR] [/controller/replication/transfer/image/transfer.go:200]: got error during the whole transfer period, mark the job failure

Aug 27 21:01:08 172.20.1.1 jobservice[6116]: 2025-08-27T21:01:08Z [ERROR] [/jobservice/runner/redis.go:123]: Job 'REPLICATION:7f64db87766a8d6a74a39400' exit with error: run error: got error during the whole transfer period, mark the job failure

Environment

Harbor versions:

Version v2.11.0-70255684

Cause

The tag is corrupted in the original registry; you will need to delete it from the origin and repush it.

Resolution

You can delete the corrupted tag via the Harbor UI or API.

Option 1: Delete via Harbor UI
 1. Log in to the source Harbor UI.
 2. Navigate to Projects → Repositories → (select repo).
 3. Find the artifact/tag that is corrupted.
 4. Use the ⋮ (three-dot menu) → Delete option next to the tag.
 • This removes the tag reference from Harbor’s metadata.
 • The digest may still exist until garbage collection is run.

 

Option 2: Delete via Harbor API

Delete a specific tag

curl -u "admin:password" -X DELETE \
  "https://<harbor-url>/api/v2.0/projects/<project_name>/repositories/<repo_name>/artifacts/<digest>/tags/<tag>"

 

Option 3: Delete by Digest (force cleanup)

If the tag doesn’t resolve but you know the digest, you can remove the artifact itself:

curl -u "admin:password" -X DELETE \
"https://<harbor-url>/api/v2.0/projects/<project_name>/repositories/<repo_name>/artifacts/<digest>"

 


Repush

docker login <registry-url>
docker push <registry-url>/<repository>:<tag>