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 X-Account-Quota-Bytes-Policy-<policy name>.

  • Added a keepalive_timeout option to the proxy server to limit how long to wait for a client to initiate a request, separate from the general client_timeout option. Note that this requires eventlet 0.33.4 (currently unreleased) or later.

  • Added a keep_cache_slo_manifest option to the object server to better control whether SLO manifests are dropped from the page cache.

  • WSGI servers now accept a --test-config option that may be used to validate configuration changes before reloading/restarting the server.

  • Metrics improvements:

    • Metrics are now emitted for a variety of S3 error responses, in the form s3api.<status_int>.<error_class>[.<reason>]

    • 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 swift-account-info and swift-container-info.


  • Previously, under some circumstances, a non-standard config option such as RECLAIM_AGE might get parsed as reclaim_age for 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 getifaddrs C 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.

    • Fixed a generator already executing error on client disconnect.

    • Suppressed RemoteDisconnected tracebacks.

  • 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 BadDigest responses to S3 requests.

  • Reduced the backend load of making ?versions requests to a container that has never had object versioning enabled.

  • The standard-library logging module is no longer monkey-patched when importing swift.common.utils, making it easier to re-use swift code in other contexts.

  • 様々な他のマイナーなバグ修正と改善。