S3 DeleteObjects omits delete-marker metadata from successful versioned deletes

Closed
#1,550 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 1 day

@hsusul is already working on this.

Since Oct 18, 2026.

  • #1553 by @hsusul — open

Assessment

Difficulty
2/5
Estimated time
1-3 hours
Newbie friendliness
35/100
Issue type
Bug
Clarity
Clearly specified
Activity status
Stale
Tech stack
postgresql, typescript
Domain
api, backend, databases

Research direction

Start in S3ProtocolHandler.deleteObjects and inspect the storage layer’s successful delete result and the focused handler regression test mentioned in the issue. Check how versioned deletes without a VersionId expose the created marker fields; done means the Deleted response includes DeleteMarker: true and DeleteMarkerVersionId for that entry, with the regression test passing.

Written by the indexing model from the issue text.

Description

Problem

When DeleteObjects removes a key from a versioned bucket without a VersionId, the storage layer returns the newly created delete-marker row, including its marker version. S3ProtocolHandler.deleteObjects reduces successful entries to { Key }, so the S3 response omits DeleteMarker and DeleteMarkerVersionId. This prevents SDK callers from identifying the marker created by their request.

Reproduction

In a versioned bucket, create an object and delete it with DeleteObjects without specifying a VersionId. The successful Deleted response entry contains only the key. A focused handler regression test against current master fails because the marker fields are missing.

Expected behavior

For a successful deletion that creates a delete marker, return DeleteMarker: true and the created DeleteMarkerVersionId in the corresponding response entry, as defined by the S3 DeleteObjects response contract.

Dominant language
TypeScript
Stars
1.3k
Forks
318
Avg merge
1d 23h
Merged PRs (30d)
102

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from supabase/storage

All issues in supabase/storage

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.