[release-announce] swift 2.21.0 (stein)

no-reply at openstack.org no-reply at openstack.org
Mon Mar 25 17:21:09 UTC 2019


We are happy to announce the release of:

swift 2.21.0: OpenStack Object Storage

This release is part of the stein release series.

Download the package from:

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

For more details, please see below.

2.21.0
^^^^^^


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

* Change the behavior of the EC reconstructor to perform a fragment
  rebuild to a handoff node when a primary peer responds with 507 to
  the REPLICATE request. This changes EC to match the existing
  behavior of replication when drives fail. After a rebalance of EC
  rings (potentially removing unmounted/failed devices), it's most IO
  efficient to run in handoffs_only mode to avoid unnecessary
  rebuilds.

* O_TMPFILE support is now detected by attempting to use it instead
  of looking at the kernel version. This allows older kernels with
  backported patches to take advantage of the O_TMPFILE functionality.

* Add slo_manifest_hook callback to allow other middlewares to
  impose additional constraints on or make edits to SLO manifests
  before being written. For example, a middleware could enforce
  minimum segment size or insert data segments.

* Fixed an issue with multi-region EC policies that caused the EC
  reconstructor to constantly attempt cross-region rebuild traffic.

* Fixed an issue where S3 API v4 signatures would not be validated
  against the body of the request, allowing a replay attack if request
  headers were captured by a malicious third party.

* Display crypto data/metadata details in swift-object-info.

* formpost can now accept a content-encoding parameter.

* Fixed an issue where multipart uploads with the S3 API would
  sometimes report an error despite all segments being upload
  successfully.

* Multipart object segments are now actually deleted when the
  multipart object is deleted via the S3 API.

* Swift now returns a 503 (instead of a 500) when an account auto-
  create fails.

* Fixed a bug where encryption would store the incorrect key
  metadata if the object name starts with a slash.

* Fixed an issue where an object server failure during a client
  download could leave an open socket between the proxy and client.

* Fixed an issue where deleted EC objects didn't have their on-disk
  directories cleaned up. This would cause extra resource usage on the
  object servers.

* Fixed issue where bulk requests using xml and expect 100-continue
  would return a malformed HTTP response.

* Various other minor bug fixes and improvements.


Bug Fixes
*********

* Fixed a cache invalidation issue related to GET and PUT requests
  to containers that would occasionally cause object PUTs to a
  container to 404 after the container had been successfully created.

* Removed a race condition where a POST to an SLO could modify the X
  -Static-Large-Object metadata.

* Fixed rare socket leak on range requests to erasure-coded objects.

* Fix SLO delete for accounts with non-ASCII names.

* Fixed an issue in COPY where concurrent requests may have copied
  the wrong data.

* Fixed time skew when using X-Delete-After.

* Send ETag header in 206 Partial Content responses to SLO reads.

* Fix SLO delete for accounts with non-ASCII names.

* Fixed an issue in COPY where concurrent requests may have copied
  the wrong data.

* Fixed a bug in how Swift uses eventlet that was exposed under high
  concurrency.

* Prevent PyKMIP's kmip_protocol logger from logging at DEBUG.
  Previously, some versions of PyKMIP would include all wire data when
  the root logger was configured to log at DEBUG; this could expose
  key material in logs. Only the kmip_keymaster was affected.

* Fixed an issue where a failed drive could prevent the container
  sharder from making progress.

* Fixed a bug in how Swift uses eventlet that was exposed under high
  concurrency.

Changes in swift 2.20.0..2.21.0
-------------------------------

179fa7ccd authors/changelog update for 2.21.0 release
64eec5fc9 Fix how we UTF-8-ify func tests
fe3a20f2e Remove uncalled function
adc568c97 Fix bulk responses when using xml and Expect 100-continue
585bf40cc Simplify empty suffix handling
e5eb673cc Stop monkey-patching mimetools
d6af42b6b Clean up how we walk through ranges in ECAppIter
c9773bfd2 Add non-voting py37 unit test job
95da1d97b Fix py35 unit test job
53b56b655 crediting contributors to the un-landed hummingbird branch
fa678949a Fix quoting for large objects
a30a47775 Stop overwriting reserved term
74664af7e Fix a typo
13e7f3641 Do not use self in classmethod
e1a12dc3d Refactor write_affinity DELETE handling
d74885176 s3token: Add note about config change when upgrading from swift3
d185b607b docs: clean up SAIO formatting
860ae1e00 py3: port proxy account controller
8b519d1ab Clean up func tests ahead of py3
45994e4d3 py3: port object updater
4ac81ebbd py3: fix copying unicode names
5d4303edb manage-shard-ranges: nicer message if we can't get_info()
349c54998 py3: port object auditor
61e6ac0eb py3: port formpost middleware
04a0ff2e9 added changelog entries from stable releases
5409c4f34 Make test_multiphase_put_drains_extra_commit_junk_disconnect less flakey
be3e21582 py3:  display help if no subcommand provided to manage-shard-ranges
baf18edc0 Clean up account-reaper a bit
b4e470076 py3: port some more middleware tests
3be384c81 py3: port proxy container controller
575538b55 py3: port the container
ce261b12e py3: port versioned_writes
f4689dd22 probe tests: wait to start replicators until after verifying initial state
db9c90584 py3: port copy middleware
1e3f8a0e5 Address some review comments
926a02413 Fix up flakey TestContainer.test_PUT_bad_metadata
78fb722ab Address some review comments
693f931a5 Fixing target for cross-ref 'get_data_dir'
002d21991 Make get_data/async/tmp_dir explicit
9b3ca9423 Fix decryption for broken objects
ac01d186b Leave less garbage in /var/tmp
bb1a2d456 Display crypto data/metadata details in swift-object-info
ea8e545a2 Rebuild frags for unmounted disks
8a6159f67 Stop using duplicate dev IDs in write_fake_ring
828a241ca py3: adapt proxy base controller
43103319d encryption: Stop being cutesy with os.path.join()
c6d213f82 Consolidate retry code in functest client
988e71923 py3: port object controller in proxy
90b161b74 Add content-encoding parameter to formpost middleware
3e2b8c95f Return 503 when account auto-create fails
f319c412a Fix flakey symlink setup/teardown
fb0e7837a Cleanup EC and SSYNC frag index parameters
2bd7b7a10 py3 object-server follow-ups
dd379e7f5 func tests: Be willing to retry PUTs
d3946d970 Fix flakey func test teardown
32d2af06e Fix flakey func test setup
61c9aa4bf probetests: make negative assertion more meaningful
7ed12fa6c Move KMIP conf validation out of _get_root_secret
c0dbf5b88 sharding: Make replicator logging less scary
b2b1f96b0 docs: clean up Object Versioning page
1f173fced s3api: fix up flakey LastModified assertions
5037ab577 Python3: fix test/unit/obj/test_replicator.py
9b6080536 py3: proxy some logger properties in LogAdapter
0e81ffd1e Fix socket leak on object-server death
066873183 Change how O_TMPFILE support is detected
ca98b5b37 Quiet down a unittest
c4363aa6e Python3: Fix test/unit/common/test_container_sync_realms.py
700fcc735 Remove duplicate statement
1d4309dd7 misc test cleanup
ca4d6ec99 Save original index in the determine_chunk_destinations test
1d9204ac4 Use remote frag index to calculate suffix diff
5b5ed29ab py3: object server
3a8f5dbf9 Verify client input for v4 signatures
1a51604b2 s3api: Look for more indications of aws-chunked uploads
b35fc4118 s3api: Delete multipart uploads via multi-delete
37693a4e1 Run ceph-s3-tests job less
0d29b01d2 py3: Port the acl, account_quotas, cname_lookup, container_sync
9856d6eb2 Add a comment about the module list for py3 in tox.ini
0f505ad96 py3: adapt the account server completely
02841ee0c fix documentation of default
fcccb52ff s3api: Stop relying on container listings during multipart uploads
de1c4f0d5 add an upgrade job from rocky
014511d31 s3api: Stop mangling Authorization header for v4 signatures
284bbdd39 Add slo_manifest_hook callback
43412c73d Treat all invalid frag indexes the same
53ae01b9c Modify the description content
39f6d5a5f Py3: Fix two unbound variables
a563ba26f Implemented the fix to handle the HTTP request methods other than GET.


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

.mailmap                                           |    2 +-
.zuul.yaml                                         |   37 +-
AUTHORS                                            |    6 +-
CHANGELOG                                          |  100 ++
api-ref/source/parameters.yaml                     |    2 +-
etc/object-server.conf-sample                      |    9 +
etc/proxy-server.conf-sample                       |    3 +-
.../notes/2_15_2_release-6996eccabba558b4.yaml     |   22 +
.../notes/2_17_1_release-dd6e6879cbb94f85.yaml     |   11 +
.../notes/2_19_1_release-5072dd72557f5708.yaml     |   16 +
.../notes/2_21_0_release-d8ae33ef18b7be3a.yaml     |   69 ++
swift/account/reaper.py                            |   90 +-
swift/account/server.py                            |   23 +-
swift/account/utils.py                             |    8 +-
swift/cli/info.py                                  |   14 +
swift/cli/manage_shard_ranges.py                   |   24 +-
swift/cli/recon.py                                 |    5 +-
swift/common/bufferedhttp.py                       |    8 +
swift/common/constraints.py                        |    7 +-
swift/common/container_sync_realms.py              |   16 +-
swift/common/db.py                                 |   13 +-
swift/common/db_replicator.py                      |    5 +-
swift/common/exceptions.py                         |    4 +
swift/common/middleware/bulk.py                    |   24 +-
swift/common/middleware/copy.py                    |   19 +-
swift/common/middleware/crypto/crypto_utils.py     |   10 +-
swift/common/middleware/crypto/keymaster.py        |   59 +-
swift/common/middleware/crypto/kmip_keymaster.py   |   19 +-
swift/common/middleware/dlo.py                     |    3 +-
swift/common/middleware/formpost.py                |   34 +-
swift/common/middleware/proxy_logging.py           |    2 +
.../middleware/s3api/controllers/multi_delete.py   |   26 +-
.../middleware/s3api/controllers/multi_upload.py   |   70 +-
.../common/middleware/s3api/controllers/s3_acl.py  |    2 +-
swift/common/middleware/s3api/s3request.py         |   75 +-
swift/common/middleware/s3api/s3token.py           |   19 +
swift/common/middleware/slo.py                     |   19 +-
swift/common/middleware/tempauth.py                |    5 +-
swift/common/middleware/versioned_writes.py        |   58 +-
swift/common/request_helpers.py                    |   46 +-
swift/common/ring/ring.py                          |   68 +-
swift/common/swob.py                               |   81 +-
swift/common/utils.py                              |   78 +-
swift/common/wsgi.py                               |   45 +-
swift/container/backend.py                         |   20 +-
swift/container/reconciler.py                      |   18 +-
swift/container/replicator.py                      |   21 +-
swift/container/server.py                          |   18 +-
swift/container/sharder.py                         |   22 +-
swift/obj/diskfile.py                              |  192 ++--
swift/obj/mem_diskfile.py                          |    3 +
swift/obj/reconstructor.py                         |  166 +--
swift/obj/replicator.py                            |    6 +-
swift/obj/server.py                                |   22 +-
swift/obj/ssync_receiver.py                        |   19 +-
swift/obj/ssync_sender.py                          |   23 +-
swift/proxy/controllers/account.py                 |    6 +-
swift/proxy/controllers/base.py                    |   79 +-
swift/proxy/controllers/container.py               |   19 +-
swift/proxy/controllers/obj.py                     |   63 +-
swift/proxy/server.py                              |    2 +-
test/functional/__init__.py                        |   25 +-
test/functional/s3api/test_multi_upload.py         |   32 +-
test/functional/swift_test_client.py               |  168 ++--
test/functional/test_container.py                  |   41 +-
test/functional/test_dlo.py                        |    5 +-
test/functional/test_object.py                     |   34 +-
test/functional/test_slo.py                        |   13 +
test/functional/test_symlink.py                    |    7 +-
test/probe/test_reconstructor_rebuild.py           |   66 +-
test/probe/test_replication_servers_working.py     |   37 +-
test/probe/test_sharder.py                         |    4 +-
test/unit/__init__.py                              |   83 +-
test/unit/account/test_reaper.py                   |   21 +-
test/unit/account/test_server.py                   |   77 +-
test/unit/cli/test_info.py                         |  145 +++
test/unit/cli/test_manage_shard_ranges.py          |   67 +-
.../common/middleware/crypto/test_encryption.py    |    2 +-
.../common/middleware/crypto/test_keymaster.py     |  176 +++-
.../middleware/crypto/test_kmip_keymaster.py       |   58 +-
test/unit/common/middleware/s3api/__init__.py      |    5 +-
test/unit/common/middleware/s3api/helpers.py       |    5 +-
.../common/middleware/s3api/test_multi_delete.py   |   45 +-
.../common/middleware/s3api/test_multi_upload.py   |  171 ++--
test/unit/common/middleware/s3api/test_obj.py      |  127 ++-
test/unit/common/middleware/s3api/test_s3api.py    |   31 +-
.../unit/common/middleware/s3api/test_s3request.py |   80 +-
test/unit/common/middleware/test_account_quotas.py |    6 +-
test/unit/common/middleware/test_cname_lookup.py   |   50 +-
test/unit/common/middleware/test_container_sync.py |   34 +-
test/unit/common/middleware/test_copy.py           |   46 +-
test/unit/common/middleware/test_formpost.py       |  514 ++++++----
test/unit/common/middleware/test_name_check.py     |   14 +-
test/unit/common/middleware/test_quotas.py         |   16 +-
test/unit/common/middleware/test_ratelimit.py      |   28 +-
test/unit/common/middleware/test_read_only.py      |   23 +-
test/unit/common/middleware/test_recon.py          |   68 +-
test/unit/common/middleware/test_slo.py            |   53 +
test/unit/common/middleware/test_tempauth.py       |   30 +
.../common/middleware/test_versioned_writes.py     |    2 +-
test/unit/common/ring/test_ring.py                 |    4 +
test/unit/common/test_container_sync_realms.py     |   17 +-
test/unit/common/test_db_replicator.py             |    2 +-
test/unit/common/test_swob.py                      |   18 +
test/unit/common/test_utils.py                     |   86 +-
test/unit/common/test_wsgi.py                      |   51 -
test/unit/container/test_auditor.py                |   12 +-
test/unit/container/test_backend.py                |   83 +-
test/unit/container/test_reconciler.py             |   22 +-
test/unit/container/test_server.py                 |  194 ++--
test/unit/container/test_sharder.py                |   73 +-
test/unit/container/test_sync.py                   |   37 +-
test/unit/container/test_updater.py                |   47 +-
test/unit/helpers.py                               |   34 +-
test/unit/obj/common.py                            |    6 +-
test/unit/obj/test_auditor.py                      |   44 +-
test/unit/obj/test_diskfile.py                     |  164 +--
test/unit/obj/test_expirer.py                      |    3 +-
test/unit/obj/test_reconstructor.py                | 1058 ++++++++++++++------
test/unit/obj/test_replicator.py                   |   42 +-
test/unit/obj/test_server.py                       |  839 ++++++++--------
test/unit/obj/test_ssync.py                        |   29 +-
test/unit/obj/test_ssync_receiver.py               |   35 +-
test/unit/obj/test_ssync_sender.py                 |   44 +-
test/unit/obj/test_updater.py                      |   24 +-
test/unit/proxy/controllers/test_base.py           |   80 +-
test/unit/proxy/controllers/test_container.py      |    5 +-
test/unit/proxy/controllers/test_obj.py            |  443 ++++----
test/unit/proxy/test_mem_server.py                 |    6 +
test/unit/proxy/test_server.py                     |  286 ++++--
test/unit/proxy/test_sysmeta.py                    |    3 +-
tox.ini                                            |   51 +-
137 files changed, 5698 insertions(+), 3218 deletions(-)







More information about the Release-announce mailing list