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
Harbor versions:
Version v2.11.0-70255684
The tag is corrupted in the original registry; you will need to delete it from the origin and repush it.
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>