2025.1 Series Release Notes

2.35.0

New Features

  • Account listings now include storage policy information for the containers listed.

  • Added a new object-expirer configuration option, round_robin_task_cache_size, to adjust the number of tasks to cache before processing. This may be used to trade faster expirer start-up for more lumpy container-server load.

  • Added a stale_worker_timeout configuration option to the WSGI servers. Once this time elapses following a reload, the manager process will issue SIGKILLs to any remaining stale workers.

  • Object updater observability improvements:

    • Added last start time to recon dumps as object_updater_last.

    • Added information (including target account/container) from oldest failed updates to recon dumps, both per-device and aggregated for the node. Use the new async_tracker_max_entries and async_tracker_dump_count options to adjust how many records to collect.

  • Added the option to tune down ETag validation in the object-server during full-object reads. By default, every full read will continue to have its ETag validated as bytes are streamed to the proxy-server. The etag_validate_pct option may be used to configure approximately what percentage of full-object reads should be validated; reducing this can improve performance when object-servers are CPU-constrained.

    Partial reads continue to never have their ETag validated in the object-server. The object-auditor continues to periodically validate every object’s ETag.

Deprecation Notes

  • The object-expirer configuration options expiring_objects_container_divisor and expiring_objects_account_name are now deprecated.

    If a cluster was deployed with a non-standard account name, operators should remove the option from all configs so they are using a supported configuration going forward, but will need to deploy stand-alone expirer processes with legacy expirer config to clean-up old expiration tasks from the previously configured account name.

Bug Fixes

  • Removed the use of eval in the xprofile middleware. Note that this middleware is only intended for development purposes and is not intended for use in production systems.

  • The S3 API no longer requires a Content-MD5 header for DeleteObjects requests when using v4 signatures.

  • Uploads to containers with object versioning enabled now require a Content-Length or Transfer-Encoding: chunked header, similar to other containers.

  • Fixed a server error when deleting a specific version via the S3 API.

  • X-Open-Expired now works properly with ?part-number requests.

  • Fixed Content-Type and Content-Length headers in account and container HEAD responses (with eventlet>=0.38.0).

  • Object expiration fixes:

    • The object-expirer now better handles errors during listings.

    • The object-expirer now respects the internal_client_conf_path configuration option in legacy object-expirer.conf configs.

  • Improved the reliability of swift-reload.

  • Separated unlinks-due-to-outdated-updates from unlinks-due-to-fully-processed-updates in logged object-updater stats.

  • The cooperative_period option for the object-server now affects PUT requests in a way similar to GET responses.

  • Fixed an issue with the object-reconstructor that would prevent reconstruction of objects with non-ASCII header names.

  • Fixed an issue with the container-reconciler that could cause reconciler databases to have conflicting rows that could not be resolved.

  • Removed use of the deprecated cgi module.

  • Various other minor bug fixes and improvements.