--- features: - > Improved performance by eliminating an unneeded directory structure hash. - > Optimized the common case for hashing filesystem trees, thus eliminating a lot of extraneous disk I/O. - > Updated the `hashes.pkl` file format to include timestamp information for race detection. Also simplified hashing logic to prevent race conditions and optimize for the common case. - > The erasure code reconstructor will now shuffle work jobs across all disks instead of going disk-by-disk. This eliminates single-disk I/O contention and allows continued scaling as concurrency is increased. - > Erasure code reconstruction handles moving data from handoff nodes better. Instead of moving the data to another handoff, it waits until it can be moved to a primary node. - > Temporary URLs now support one common form of ISO 8601 timestamps in addition to Unix seconds-since-epoch timestamps. The ISO 8601 format accepted is '%Y-%m-%dT%H:%M:%SZ'. This makes TempURLs more user-friendly to produce and consume. - > Listing containers in accounts with json or xml now includes a `last_modified` time. This does not change any on-disk data, but simply exposes the value to offer consistency with the object listings on containers. - I/O priority is now supported on AArch64 architecture. upgrade: - If you upgrade and roll back, you must delete all `hashes.pkl` files. deprecations: - > If using erasure coding with ISA-L in rs_vand mode and 5 or more parity fragments, Swift will emit a warning. This is a configuration that is known to harm data durability. In a future release, this warning will be upgraded to an error unless the policy is marked as deprecated. All data in an erasure code storage policy using isa_l_rs_vand with 5 or more parity should be migrated as soon as possible. Please see https://bugs.launchpad.net/swift/+bug/1639691 for more information. - > The erasure code reconstructor `handoffs_first` option has been deprecated in favor of `handoffs_only`. `handoffs_only` is far more useful, and just like `handoffs_first` mode in the replicator, it gives the operator the option of forcing the consistency engine to focus solely on revert (handoff) jobs, thus improving the speed of rebalances. The `handoffs_only` behavior is somewhat consistent with the replicator's `handoffs_first` option (any error on any handoff in the replicator will make it essentially handoff only forever) but the `handoff_only` option does what you want and is named correctly in the reconstructor. - > The default for `object_post_as_copy` has been changed to False. The option is now deprecated and will be removed in a future release. If your cluster is still running with post-as-copy enabled, please update it to use the "fast-post" method. Future versions of Swift will not support post-as-copy, and future features will not be supported under post-as-copy. ("Fast-post" is where `object_post_as_copy` is false). fixes: - > Fixed a bug where the ring builder would not allow removal of a device when min_part_seconds_left was greater than zero. - > PUT subrequests generated from a client-side COPY will now properly log the SSC (server-side copy) Swift source field. See https://docs.openstack.org/developer/swift/logs.html#swift-source for more information. - > Fixed a bug where an SLO download with a range request may have resulted in a 5xx series response. - > SLO manifest PUT requests can now be properly validated by sending an ETag header of the md5 sum of the concatenated md5 sums of the referenced segments. - Fixed the stats calculation in the erasure code reconstructor. - > Rings with min_part_hours set to zero will now only move one partition replica per rebalance, thus matching behavior when min_part_hours is greater than zero. other: - Various other minor bug fixes and improvements.