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

mirror:support version #5149

Open
wants to merge 5 commits into
base: master
Choose a base branch
from
Open

Conversation

dormanze
Copy link
Contributor

@dormanze dormanze commented Feb 24, 2025

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

1.Supports version during bucket-to-bucket mirroring.
2.Check whether objects of other versions exist before remove.

Motivation and Context

fix #5139

How to test this PR?

case1:
1.Creating Buckets and Enabling Versioning Control

mc mb myminio/bucket --with-versioning
mc mb other/bucket --with-versioning

2.Start the mirror process.

mc mirror --overwrite --remove --watch myminio/bucket other/bucket

3.Upload the object to the bucket twice.

mc cp test.txt myminio/bucket/
mc cp test.txt myminio/bucket/

4.Check whether the versions of test.txt at the local and peer ends are consistent.

mc ls myminio/bucket/test.txt --versions
mc ls other/bucket/test.txt --versions

5.Delete an object based on the version number.

mc rm myminio/bucket/test.txt --version-id xxxxxx

Check whether the corresponding version is deleted from the peer site.

case2:
1.Creating a Bucket and Enabling Versioning Control

mc mb myminio/bucket --with-versioning

2.Start the mirror process.

mc mirror --overwrite --remove --watch myminio/bucket /local/

3.Upload the object to the bucket twice.

mc cp test.txt myminio/bucket/
mc cp test.txt myminio/bucket/

4.Delete an object based on the version number.

mc rm myminio/bucket/test.txt --version-id xxxxxx

Check whether local files are deleted.

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

@klauspost
Copy link
Contributor

It seems to me that this would be a problem if mirroring between 2 versioned S3 sites, preventing non-current versions to be deleted.

I can see the idea with this, but I'm not sure if this is the solution.

@dormanze
Copy link
Contributor Author

It seems to me that this would be a problem if mirroring between 2 versioned S3 sites, preventing non-current versions to be deleted.

I can see the idea with this, but I'm not sure if this is the solution.

Yes, I am considering this point, I am working on the version control capability between two s3 sites, the scope of the modification is relatively large, still in verification.

…to fix_mirror_remove

* 'fix_mirror_remove' of https://github.com/dormanze/mc:
  Mirror should delete on delete marker creation +  ILM (minio#5148)
  fix: use tags package instead of s3utils (minio#5146)
  fix empty ilm tier list output (minio#5145)
@dormanze dormanze changed the title mirror:Check the source object exists before remove mirror:support version Feb 25, 2025
@dormanze
Copy link
Contributor Author

@klauspost I've finished my pr. Please take time to review it.

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.

mc mirror --remove --watch removes a file when a non-current version of the object is removed
2 participants