Skip to content

v0.3.0

Choose a tag to compare

@bidzhao bidzhao released this 02 Jun 11:10

Release Notes

Major New Features

1. Object Versioning

  • S3 API Enhancements:

    • PUT Bucket versioning: Enable/suspend bucket versioning
    • GET Bucket versioning: Get bucket versioning status
    • GET Bucket versions: List all versions of objects
    • DELETE Object with versionId: Delete specific object version
    • GET/HEAD Object with versionId: Retrieve specific object version
  • Versioning State Transitions:

    • UnversionedEnabled: Enable versioning
    • EnabledSuspended: Toggle between enabled and suspended states
    • Once enabled, cannot return to completely unversioned state
  • Delete Markers:

    • When versioning is enabled, deleting an object creates a delete marker
    • Delete marker becomes the latest version of the object
    • Specific versions can be permanently deleted by version ID

2. Object Lock

  • Object Lock Configuration:

    • Enable object lock at bucket creation
    • Support COMPLIANCE and GOVERNANCE lock modes
    • Configurable default retention period (Retention Days)
    • Object lock state cannot be disabled or turned off once created
  • S3 API Enhancements:

    • GET Object Lock Configuration: Get bucket's object lock configuration
    • GET Object retention: Get object's retention configuration
    • x-amz-object-lock-mode: Set object lock mode
    • x-amz-object-lock-retain-until-date: Set retention expiration
    • x-amz-bypass-governance-retention: Bypass governance retention (requires permission)
  • User Permissions:

    • New user field bypass to indicate if user can bypass governance retention
    • Administrators can set user bypass permission

3. Admin API Enhancements

  • Bucket Management:

    • Bucket list shows versioning and object lock status
    • Configure versioning and object lock when creating buckets
    • Adjust versioning state when editing buckets (Enabled ↔ Suspended)
    • Modify lock mode and retention period when editing buckets (only if object lock is enabled)
  • Object Management:

    • Support displaying object version information
    • View and manage object lock status

4. Admin Console (Web UI) Enhancements

  • Bucket Form:

    • Enable versioning when creating buckets
    • Enable object lock and configure lock mode/retention when creating buckets
    • Enabling object lock automatically enables versioning
    • Versioning state can be toggled between Enabled ↔ Suspended when editing
    • Object lock status is read-only after creation
  • Object List:

    • Display object version information
    • Support version management operations

5. Database Schema Updates

  • buckets table:

    • New versioning field (default: 'unversioned')
    • New is_locked field (default: false)
    • New lock_mode field (default: 'COMPLIANCE')
    • New retention field (default: 30)
    • New last_update_at field
  • object_md table:

    • New has_versions field
    • New lock_mode field
    • New expiration_time field
  • object_v_md table (new):

    • Stores object version metadata
    • Includes version number, delete marker, lock information, etc.
  • users table:

    • New bypass field (default: false)
  • multipart_uploads table:

    • New lock_mode field
    • New expiration_time field

6. CLI Enhancements

  • s3file tool supports object version operations
  • Support listing object versions
  • Support getting specific object versions

Bug Fixes

  • Fixed issue deleting objects with / character in name
  • Fixed race condition when uploading same object concurrently
  • Fixed CRC checksum related issues
  • Optimized pagination query performance

Documentation

  • New S3 API documentation
  • New Admin API documentation
  • New FAQ documentation
  • New troubleshooting guide

Upgrade Notes

Upgrading to v0.3.0 requires database migration

Note: Object lock configuration cannot be disabled after bucket creation, please configure carefully.