opencontainers / distribution-spec

OCI Distribution Specification
https://opencontainers.org
Apache License 2.0
781 stars 201 forks source link

conformance: don't require http 202 for already-deleted manifest blob #478

Closed waynr closed 9 months ago

waynr commented 9 months ago

In my registry implementation a DELETE /v2/<name>/manifests/<reference> request deletes the manifest blob.

In the conformance tests the DELETE /v2/<name>/manifests/<reference> calls are followed by DELETE /v2/<name>/blobs/<digest> where <digest> refers to the digest of the manifest referred to by <reference>.

I understand why the tests are written this way - most registries seem to be implemented in a way that it's not necessarily safe to automatically delete a blob just because the last thing to reference it was also deleted, but my implementation is based on storing relational metadata in an ACID-compliant DB in such a way that bulk data is the only thing stored in the backing object store (which for data race protection reasons isn't even keyed by content digest but randomly-assigned UUID). Because of this design choice, it is safe to at least attempt deleting blobs themselves when the manifest is deleted.

So because it is possible to safely delete the manifest blob during the DELETE /v2/<name>/manifests/<reference> calls, the subsequent attempt to explicitly delete the blob in the test case should allow a 404 response.