2023.2 Series Release Notes¶
Python 3.11 is now supported.
Added the ability for reseller admins to set per-policy account quotas by posting metadata of the form
keepalive_timeoutoption to the proxy server to limit how long to wait for a client to initiate a request, separate from the general
client_timeoutoption. Note that this requires eventlet 0.33.4 (currently unreleased) or later.
keep_cache_slo_manifestoption to the object server to better control whether SLO manifests are dropped from the page cache.
WSGI servers now accept a
--test-configoption that may be used to validate configuration changes before reloading/restarting the server.
Metrics are now emitted for a variety of S3 error responses, in the form
Account and container info metrics now include the response status code when backend requests are made.
Added timing metrics to the container sharder for various operations.
A variety of performance improvements have been made for sharded container databases.
Various logging and metrics improvements when talking to memcache.
Improved formatting of meta and sysmeta for
Previously, under some circumstances, a non-standard config option such as
RECLAIM_AGEmight get parsed as
reclaim_agefor some processes but ignored by others. Now, all config parsing is case-sensitive; non-standard names will always be ignored.
The structure of cached shard ranges has changed, improving performance when listing or writing to sharded containers. Note that immediately after upgrade, the new structures will all be cache misses, which may lead to a thundering herd problem. To avoid this, upgrade just a few nodes first, let them service some fraction of traffic to populate the cache, then upgrade the rest of the cluster.
Removed the hard dependency on netifaces; it may still be used if the
getifaddrsC function is not available. This fallback support may be removed in a future release.
Python 3 fixes:
Python 3 object servers can now read unencrypted non-ASCII metadata that was written under Python 2.
Ssync no longer corrupts unencrypted non-ASCII metadata during transfers.
Fixed an encoding issue when writing non-ASCII object names to sharded containers and shard range caching is not enabled.
Fixed an encoding issue when handling non-ASCII account names.
generator already executingerror on client disconnect.
Fixed an issue that prevented proxy servers from emitting metrics and logs for backend requests made when getting account or container info.
Fixed ssync’s handling of timestamp offsets. Previously, this could cause ssync to fail with a 409 Conflict, causing the transfer to fail and preventing handoffs from clearing.
Fixed an issue where an erasure-coded PUT could prevent other requests from being processed when network calls rarely or never blocked.
Fixed an issue when downloading an SLO manifest would hit a recoverable error and attempt to resume from another node. This would manifest as either a pyeclib decode error or an unexpected empty response.
The proxy server now applies error-limiting to the correct node when handling a recoverable node error.
Account, container, and object log fields are now correctly identified when returning
BadDigestresponses to S3 requests.
Reduced the backend load of making
?versionsrequests to a container that has never had object versioning enabled.
loggingmodule is no longer monkey-patched when importing
swift.common.utils, making it easier to re-use swift code in other contexts.
Various other minor bug fixes and improvements.