[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