Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

preserve conflicting objects when parent object is being deleted #19034

Merged

Conversation

harshavardhana
Copy link
Member

Community Contribution License

All community contributions in this pull request are licensed to the project maintainers
under the terms of the Apache 2 license.
By creating this pull request I represent that I have the right to license the
contributions to the project maintainers under the Apache 2 license.

Description

preserve conflicting objects when the parent object is being deleted

Motivation and Context

a/prefix
a/prefix/1.txt

where a/prefix is an object that does not have /
in the end, we do not have to aggressively recursively
delete all the sub-folders as well. Instead, convert
the call into self-contained to delete 'xl.meta'
and then subsequently attempt to Remove the parent.

How to test this PR?

Well create conflicting objects such as these

mc cp /etc/hosts myminio/testbucket/prefix (first object)
mc cp /etc/hosts myminio/testbucket/prefix/hosts (conflicting object, with parent as object)
mc rm myminio/testbucket/prefix --force

Would end up deleting prefix/hosts as well in the current release,
changing this behavior to only delete myminio/testbucket/prefix
not the conflicting object.

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Optimization (provides speedup with no functional changes)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • Fixes a regression (If yes, please add commit-id or PR # here)
  • Unit tests added/updated
  • Internal documentation updated
  • Create a documentation update request here

a/prefix
a/prefix/1.txt

where `a/prefix` is an object which does not have `/` at the end,
we do not have to aggressively recursively delete all the sub-folders
as well. Instead convert the call into self contained to deleting
'xl.meta' and then subsequently attempting to Remove the parent.
Copy link
Contributor

@shtripat shtripat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Verified

Copy link
Member

@vadmeste vadmeste left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what about when an object has some data-dirs ? removing parent is not aggressive

@harshavardhana
Copy link
Member Author

what about when an object has some data-dirs ? removing parent is not aggressive

if you can generate same data-dir uuid's please show me how :-)

Copy link
Member

@vadmeste vadmeste left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@harshavardhana harshavardhana merged commit 0e177a4 into minio:master Feb 12, 2024
20 checks passed
@harshavardhana harshavardhana deleted the preserve-matching-prefixes branch February 12, 2024 16:30
Shelnutt2 added a commit to TileDB-Inc/TileDB that referenced this pull request Apr 21, 2024
…4899)

The [new MinIO behavior](minio/minio#19034) was
accounted for in dev/2.20 and newer. Instead of backporting the new S3
behavior we are pinning MinIO.

The mentioned update took place in
#4725


---
TYPE: NO_HISTORY
DESC: Change CI to use a pinned version of MinIO before breaking
behavior on deletes was introduced.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants