[release-announce] swift 2.25.0 (ussuri)

no-reply at openstack.org no-reply at openstack.org
Mon Apr 20 10:18:17 UTC 2020


We contentedly announce the release of:

swift 2.25.0: OpenStack Object Storage

This release is part of the ussuri stable release series.

The source is available from:

    https://opendev.org/openstack/swift

Download the package from:

    https://tarballs.openstack.org/swift/

Please report issues through:

    https://bugs.launchpad.net/swift/+bugs

For more details, please see below.

2.25.0
^^^^^^


New Features
************

* WSGI server processes can now notify systemd when they are ready.

* Added a new middleware that allows users and operators to
  configure accounts and containers to use RFC-compliant (i.e.,
  double-quoted) ETags. This may be useful when using Swift as an
  origin for some content delivery networks. For more information, see
  the middleware documentation.

* Added "ttfb" (Time to First Byte) and "pid" (Process ID) to the
  set of available proxy-server log fields. For more information, see
  the documentation.


Bug Fixes
*********

* Improved proxy-server performance by reducing unnecessary locking,
  memory copies, and eventlet scheduling.

* Reduced object-replicator and object-reconstructor CPU usage by
  only checking that the device list is current when rings change.

* Improved performance of sharded container listings when performing
  prefix listings.

* Improved container-sync performance when data has already been
  deleted or overwritten.

* Account quotas are now enforced even on empty accounts.

* Getting an SLO manifest with "?format=raw" now responds with an
  ETag that matches the MD5 of the generated body rather than the MD5
  of the manifest stored on disk.

* Provide useful status codes in logs for some versioning and
  symlink subrequests that were previously logged as 499.

* Fixed 500 from cname_lookup middleware. Previously, if the looked-
  up domain was used by domain_remap to update the request path, the
  server would respond Internal Error.

* On Python 3, fixed an issue when reading or writing objects with a
  content type like "message/*". Previously, Swift would fail to
  respond.

* On Python 3, fixed a RecursionError in swift-dispersion-report
  when using TLS.

* Fixed a bug in the new object versioning API that would cause more
  than "limit" results to be returned when listing.

* Various other minor bug fixes and improvements.

Changes in swift 2.24.0..2.25.0
-------------------------------

f3543f534 Authors/ChangeLog for 2.25.0
0c37da906 Imported Translations from Zanata
9a7ab4b3b Imported Translations from Zanata
415011e16 s3api: Propagate backend PATH_INFO in environ for other middleware
875a14298 docs: Encourage usage of UUID inside /etc/fstab in examples
668242c42 pep8: Turn on E305
96b56519b Update hacking for Python3
bbea88cb1 Extend MemcacheRing.delete() API to manage server_key
8378a11d1 Replace all "with Chunk*Timeout" by a watchdog
804776b37 Optimize obj replicator/reconstructor healthchecks
d361e5feb Make wsgi server uses systemd's NOTIFY_SOCKET
3fe9b582e Fix SSYNC/missing_check is blocking
04cc11b93 py3: stop barfing on message/rfc822 Content-Types
dc424f593 Allow clients to send quoted ETags for static links
e264ca88e Recommend better rsync.conf settings
821b96416 ring: Flag region, zone, and device as required in add_dev
601ced557 Delay ring lookup until we know we need it
f2ffd9005 Apply limit to list versioned containers
dc4077930 Use float consistently for proxy timeout settings
55049beda tests: Use timedelta to adjust dates, not string manipulations
3b65a5998 Fix up some Content-Type handling in account/container listings
ecca23eb8 Extend eventlet_debug logging to GreenAsyncPile
0fb337148 Delay importing swiftclient until after monkey-patching
a5afe7675 Revert "Make rolling-upgrade job non-voting until virtualenv problem is solved"
cd4ba90cc Make rolling-upgrade job non-voting until virtualenv problem is solved
2a8d47f00 middlewares: Clean up app iters better
61bf5ee1c Ensure domain stored in memcached gets utf8 decoded on py2
baaa5c57e Remove reno from test-requirements
09b7ed600 sharding: filter shards based on prefix param when listing
ff885d30e py3: Fix up probe tests
d358b9130 added value and notes to a sample config file for s3token
0606f404f enforce account quotas on empty accounts
b8c16de02 Return correct etag for raw manifest
d46a0c7d6 Add etag quoter to saio proxy config
c7cb34ad6 Dockerhub description of saio image
4a776c4fb Add new versioning flag to docker image
d8821c75b proxy-logging: add fields ttfb and pid
55cdb5507 Lower the log level for falling back to mkstemp
f68e22d43 Stop retrying every deletes in container-sync
73a0e8e9c probe: Add test for syncing a delete when the remote 404s
deba3a630 clarify s3api ACL test HEADs
46bde0c0b s3token: Raise error on negative secret_cache_duration config
ec70cf960 s3token: When caching is enabled, default auth_type to password


Diffstat (except docs and test files)
-------------------------------------

.mailmap                                           |   1 +
CHANGELOG                                          |  51 ++++
api-ref/source/conf.py                             |   6 +-
.../install/storage-install-ubuntu-debian.rst      |  10 +-
etc/proxy-server.conf-sample                       |  11 +
etc/rsyncd.conf-sample                             |   3 +
lower-constraints.txt                              |   4 -
.../notes/2_25_0_release-09410c808881bf21.yaml     |  65 +++++
releasenotes/source/conf.py                        |   4 +-
.../locale/en_GB/LC_MESSAGES/releasenotes.po       | 255 ++++++++++++++++++-
swift/account/reaper.py                            |   6 +-
swift/account/server.py                            |  12 +-
swift/cli/dispersion_report.py                     |   9 +-
swift/cli/ringbuilder.py                           |   2 +-
swift/common/bufferedhttp.py                       |   2 +
swift/common/daemon.py                             |   3 +-
swift/common/internal_client.py                    |  18 +-
swift/common/linkat.py                             |   1 +
swift/common/manager.py                            |   2 +-
swift/common/memcached.py                          |   7 +-
swift/common/middleware/account_quotas.py          |   2 +-
swift/common/middleware/cname_lookup.py            |  17 +-
swift/common/middleware/listing_formats.py         |  16 +-
swift/common/middleware/name_check.py              |   2 +-
swift/common/middleware/proxy_logging.py           |  23 +-
swift/common/middleware/s3api/controllers/acl.py   |   2 +-
.../common/middleware/s3api/controllers/logging.py |   2 +-
swift/common/middleware/s3api/s3request.py         |   6 +
swift/common/middleware/s3api/s3token.py           |   6 +-
swift/common/middleware/slo.py                     |   4 +-
swift/common/middleware/symlink.py                 |  14 +-
swift/common/middleware/tempauth.py                |  12 +-
swift/common/middleware/versioned_writes/legacy.py |  26 +-
.../versioned_writes/object_versioning.py          |  90 ++++---
swift/common/middleware/x_profile/html_viewer.py   |  10 +-
swift/common/request_helpers.py                    |  11 +
swift/common/ring/builder.py                       |  10 +-
swift/common/ring/composite_builder.py             |   2 +-
swift/common/ring/utils.py                         |   2 +-
swift/common/splice.py                             |   2 +
swift/common/storage_policy.py                     |   2 +-
swift/common/utils.py                              | 185 +++++++++++++-
swift/common/wsgi.py                               |   9 +-
swift/container/server.py                          |  12 +-
swift/container/sync.py                            |   7 +-
swift/locale/de/LC_MESSAGES/swift.po               |   5 +-
swift/locale/en_GB/LC_MESSAGES/swift.po            |   5 +-
swift/locale/es/LC_MESSAGES/swift.po               |   5 +-
swift/locale/fr/LC_MESSAGES/swift.po               |   5 +-
swift/locale/it/LC_MESSAGES/swift.po               |   5 +-
swift/locale/ja/LC_MESSAGES/swift.po               |   5 +-
swift/locale/ko_KR/LC_MESSAGES/swift.po            |   5 +-
swift/locale/pt_BR/LC_MESSAGES/swift.po            |   5 +-
swift/locale/ru/LC_MESSAGES/swift.po               |   5 +-
swift/locale/tr_TR/LC_MESSAGES/swift.po            |   5 +-
swift/locale/zh_CN/LC_MESSAGES/swift.po            |   5 +-
swift/locale/zh_TW/LC_MESSAGES/swift.po            |   5 +-
swift/obj/diskfile.py                              |   2 +-
swift/obj/reconstructor.py                         |   6 +
swift/obj/replicator.py                            |  33 +--
swift/obj/ssync_receiver.py                        |   5 +
swift/proxy/controllers/base.py                    |  35 +--
swift/proxy/controllers/container.py               |  13 +
swift/proxy/controllers/obj.py                     |  58 +++--
swift/proxy/server.py                              |   6 +-
test-requirements.txt                              |   3 +-
test/functional/__init__.py                        |   7 +-
test/functional/s3api/s3_test_client.py            |   4 +-
test/functional/s3api/test_multi_delete.py         |   4 +-
test/functional/s3api/test_multi_upload.py         |   5 +-
test/functional/s3api/test_service.py              |   1 +
test/functional/test_object_versioning.py          |  34 +++
test/functional/test_slo.py                        |   6 +
test/functional/test_symlink.py                    |   4 +-
test/probe/brain.py                                |   8 +-
test/probe/test_account_reaper.py                  |   6 +-
test/probe/test_container_merge_policy_index.py    |  11 +-
test/probe/test_container_sync.py                  |  24 ++
test/probe/test_empty_device_handoff.py            |   1 +
test/probe/test_replication_servers_working.py     |   2 +-
test/unit/__init__.py                              |   2 +
test/unit/cli/test_form_signature.py               |   1 +
test/unit/cli/test_recon.py                        |   8 +-
test/unit/cli/test_ringbuilder.py                  |  10 +-
.../common/middleware/crypto/test_kms_keymaster.py |   1 +
test/unit/common/middleware/helpers.py             |  18 +-
test/unit/common/middleware/s3api/__init__.py      |   6 +-
test/unit/common/middleware/s3api/test_cfg.py      |   1 +
test/unit/common/middleware/s3api/test_logging.py  |   1 +
.../common/middleware/s3api/test_multi_delete.py   |   5 +-
.../common/middleware/s3api/test_multi_upload.py   |  33 ++-
test/unit/common/middleware/s3api/test_obj.py      |   2 +-
test/unit/common/middleware/s3api/test_s3_acl.py   |   1 +
test/unit/common/middleware/s3api/test_s3api.py    |  45 ++++
.../unit/common/middleware/s3api/test_s3request.py |   6 +-
test/unit/common/middleware/s3api/test_service.py  |   1 +
.../common/middleware/s3api/test_subresource.py    |   1 +
test/unit/common/middleware/s3api/test_utils.py    |   1 +
test/unit/common/middleware/test_account_quotas.py |  29 +++
test/unit/common/middleware/test_cname_lookup.py   |   9 +
test/unit/common/middleware/test_dlo.py            |   6 +
test/unit/common/middleware/test_keystoneauth.py   |   5 +-
.../unit/common/middleware/test_listing_formats.py |  60 ++++-
test/unit/common/middleware/test_name_check.py     |  11 +-
.../common/middleware/test_object_versioning.py    |  21 +-
test/unit/common/middleware/test_proxy_logging.py  |  36 +--
test/unit/common/middleware/test_quotas.py         |   1 +
test/unit/common/middleware/test_slo.py            |  27 +-
test/unit/common/middleware/test_symlink.py        |  35 ++-
test/unit/common/middleware/test_tempauth.py       |   1 +
.../common/middleware/test_versioned_writes.py     |   1 +
test/unit/common/ring/test_builder.py              |  14 +-
test/unit/common/ring/test_composite_builder.py    |   2 +-
test/unit/common/ring/test_ring.py                 |   9 +-
test/unit/common/test_direct_client.py             |   1 +
test/unit/common/test_exceptions.py                |   1 +
test/unit/common/test_internal_client.py           |  50 +++-
test/unit/common/test_manager.py                   |   1 +
test/unit/common/test_memcached.py                 |  38 +++
test/unit/common/test_request_helpers.py           |  13 +
test/unit/common/test_utils.py                     | 167 ++++++++++++-
test/unit/container/test_server.py                 |   4 +-
test/unit/container/test_sharder.py                |  72 +++---
test/unit/container/test_sync.py                   |  18 ++
test/unit/container/test_updater.py                |   1 +
test/unit/obj/test_auditor.py                      |   2 +-
test/unit/obj/test_diskfile.py                     |   7 +-
test/unit/obj/test_reconstructor.py                |  43 +++-
test/unit/obj/test_replicator.py                   |   1 +
test/unit/obj/test_ssync_receiver.py               | 272 ++++++++++-----------
test/unit/proxy/controllers/test_base.py           |   4 +-
test/unit/proxy/controllers/test_container.py      |  25 ++
test/unit/proxy/test_server.py                     |  55 +++--
tox.ini                                            |   9 +-
143 files changed, 1999 insertions(+), 644 deletions(-)


Requirements updates
--------------------

diff --git a/test-requirements.txt b/test-requirements.txt
index ff86a01dd..085bd3b0e 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -6 +6 @@
-hacking>=0.11.0,<0.12 # Apache-2.0
+hacking>=2.0,<2.1.0 # Apache-2.0
@@ -15 +14,0 @@ python-keystoneclient!=2.1.0,>=2.0.0 # Apache-2.0
-reno>=1.8.0  # Apache-2.0






More information about the Release-announce mailing list