2024.1 Series Release Notes

2.33.0

New Features

  • Prefix-based tempurls may now be used to explore staticweb listings within that prefix. Note that this opens a new ability to list containers from tempurls, but only if staticweb’s X-Container-Meta-Web-Listings is enabled.

  • When generating index pages from listings, staticweb now sends an HTML5 doctype. This makes them PEP 503 compliant, allowing their continued use for simple Python package repositories.

  • Add basic read support for S3 object locking. This improves compatibility with an Ansible S3 module. Write support is not yet implemented, so get-object-lock-configuration will always 404.

  • Added a swift-reload command to assist with safely reloading WSGI servers.

  • Daemons now send STOPPING and RELOADING systemd notifications when the service is configured with Type=notify.

  • Added more metrics to the container-server, allowing GET and PUT timings to be broken out for listings, shard range operations, and container creation.

  • Added a counter metric to the proxy server when caching shard ranges.

  • swift-account-info and swift-container-info now accept a --sync flag to show information from the incoming/outgoing sync tables.

  • Several fixes to prepare for Python 3.12 support. While not yet tested in the gate, initial manual testing looks promising.

  • Added support for recent versions of eventlet.

Bug Fixes

  • S3 API fixes:

    • When the +segments container’s storage policy differs from that of the primary container, completed manifests are now written with the correct policy in the primary container.

    • If there’s a conflict deleting the in-progress-upload marker when completing a multipart-upload, a 503 is now returned to the client, prompting it to retry.

    • Added Accept-Ranges: bytes to object responses. Range requests have always been supported; now, that support is properly advertised.

  • Static large object fixes:

    • Fixed a server error when handling conditional GET requests.

    • Return an error if the SLO manifest could not be parsed. Previously, a zero-byte response was returned.

  • Proxy server fixes:

    • Added a new swift.proxy_logging_status request environment key that middlewares may use to override the logged status for a request.

    • Transaction IDs are included in more error responses.

    • The recoverable_node_timeout option no longer applies to X-Newest GET requests.

    • Improved error-handling in multi-part range responses.

  • Sharding fixes:

    • Prevent resets of a shard range’s epoch.

    • Cleaned up X-Backend-* headers in listing responses.

    • Reduced the frequency of Reclaimable db stuck waiting for shrinking messages when a root DB has been deleted but its shards have not been shrunk away.

    • The more-efficient shard range structure from the last release is now used when fetching ranges from the backend.

    • Include more information in shard-replication warnings.

  • Object server fixes:

    • Object POSTs and chunked PUTs are no longer accepted when the target drive is already past its fallocate_reserve. DELETEs are still allowed.

    • Added the ability to configure cooperative yielding when servicing GET responses, via the cooperative_period option. See the example config for more information.

    • Invalid hashes.invalid entries are now ignored, rather than causing a complete partition rehash.

  • Per-service auto_create_account_prefix configuration options have been removed. These options were deprecated in favor of swift.conf configuration in Swift 2.24.0, part of the OpenStack Ussuri release.

  • Daemons send object updates via the replication network in more cases.

  • The dark-data object audit watcher now works with sharded containers. Previously, it would think that all data files were absent from listings.

  • Various other minor bug fixes and improvements.