[release-announce] [swift] swift 2.15.0 (pike)

no-reply at openstack.org no-reply at openstack.org
Fri Jul 28 01:58:26 UTC 2017


We exuberantly announce the release of:

swift 2.15.0: OpenStack Object Storage

This release is part of the pike release series.

Download the package from:

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

For more details, please see below.

2.15.0
^^^^^^

New Features

* Add Composite Ring Functionality

  A composite ring comprises two or more component rings that are
  combined to form a single ring with a replica count equal to the sum
  of the component rings. The component rings are built independently,
  using distinct devices in distinct regions, which means that the
  dispersion of replicas between the components can be guaranteed.

  Composite rings can be used for explicit replica placement and
  "replicated EC" for global erasure codes policies.

  Composite rings support 'cooperative' rebalance which means that
  during rebalance all component rings will be consulted before a
  partition is moved in any component ring. This avoids the same
  partition being simultaneously moved in multiple components.

  We do not yet have CLI tools for creating composite rings, but the
  functionality has been enabled in the ring modules to support this
  advanced functionality. CLI tools will be delivered in a subsequent
  release.

  For further information see the docs

* The EC reconstructor process has been dramatically improved by
  adding support for multiple concurrent workers. Multiple processes
  are required to get high concurrency, and this change results in
  much faster rebalance times on servers with many drives.

  Currently the default is still only one process, and no workers. Set
  "reconstructor_workers" in the "[object-reconstructor]" section to
  some whole number <= the number of devices on a node to get that
  many reconstructor workers.

* Add support to increase object ring partition power transparently
  to end users and with no cluster downtime. Increasing the ring part
  power allows for incremental adjustment to the upper bound of the
  cluster size. Please review the full docs for more information.

* Added support for per-policy proxy config options. This allows
  per- policy affinity options to be set for use with duplicated EC
  policies and composite rings. Certain options found in per-policy
  conf sections will override their equivalents that may be set in the
  [app:proxy-server] section. Currently the options handled that way
  are "sorting_method", "read_affinity", "write_affinity",
  "write_affinity_node_count", and
  "write_affinity_handoff_delete_count".

* Enabled versioned writes on Dynamic Large Objects (DLOs).

* Write-affinity aware object deletion

  Previously, when deleting objects in multi-region swift deployment
  with write affinity configured, users always get 404 when deleting
  object before it's replicated to appropriate nodes.

  Now Swift will use "write_affinity_handoff_delete_count" to define
  how many local handoff nodes should swift send request to get more
  candidates for the final response. The default value "auto" means
  Swift will calculate the number automatically based on the number of
  replicas and current cluster topology.

* Require that known-bad EC schemes be deprecated

  Erasure-coded storage policies using "isa_l_rs_vand" and "nparity"
  >= 5 must be configured as deprecated, preventing any new containers
  from being created with such a policy. This configuration is known
  to harm data durability. Any data in such policies should be
  migrated to a new policy. See See Launchpad bug 1639691 for more
  information.

* Optimize the Erasure Code reconstructor protocol to reduce IO load
  on servers.

* Fixed a bug where SSYNC would fail to replicate unexpired object.

* Fixed a bug in domain_remap when obj starts/ends with slash.

* Fixed a socket leak in copy middleware when a large object was
  copied.

* Fixed a few areas where the "swiftdir" option was not respected.

* swift-recon now respects storage policy aliases.

* cname_lookup middleware now accepts a "nameservers" config
  variable that, if defined, will be used for DNS lookups instead of
  the system default.

* Make mount_check option usable in containerized environments by
  adding a check for an ".ismount" file at the root directory of a
  device.

* Remove deprecated "vm_test_mode" option.

* The object and container server config option "slowdown" has been
  deprecated in favor of the new "objects_per_second" and
  "containers_per_second" options.

* The output of devices from "swift-ring-builder" has been reordered
  by region, zone, ip, and device.

* Imported docs content from openstack-manuals project.

* Various other minor bug fixes and improvements.

Changes in swift 2.14.0..2.15.0
-------------------------------

dfd0ea2 2.15.0 authors and changelog update
9155e6f added .htaccess redirect file for docs
56a18ac Add unit test for ObjectReconstructor.is_healthy
701a172 Add multiple worker processes strategy to reconstructor
93b8cf5 Small fixup for CooperativeRingBuilder
8c37305 Remove left over param
d0bfd03 ready yet? nope, please wait!
31f4794 Close stdout *after* binding ports
c211141 Add ever_rebalanced property to RingBuilder
71ec83f Ring rebalance respects co-builders' last_part_moves
5b10cf5 Add more structure to the deployment guide
35cf189 Stop using deprecated 'message' attribute in Exception
9c5628b Add reconstructor section to deployment guide
c2e59b9 Make dict deletion idempotent in dump_recon_cache
e1a2c28 Fix redundant UTF-8 check
95ff34d Add X-Copy-From-Account to api-ref
2410b61 Fix swiftdir option and usage of storage policy aliases
13a07aa Misc doc cleanup
63c4215 Fix rst for link
74700eb Fix StopIteration noise in obj/test_replicator.py
65b6b12 Add small note for handoffs_only acceleration
20a0d67 Clean up some assertions in test_reconstructor
239dfb5 moved install guide and removed tox env definition
44c63c6 Don't rehash primaries in reconstructor handoffs_only mode
d112b7d First pass at admin-guide cleanup
4cb76a4 docs migration from openstack-manuals
006a378 Add license in swift code file
bfb5759 Switch from oslosphinx to openstackdocstheme
58d7812 fix flakey time for test_default_sorted_output
14b07ca Untangle ServersPerPortStrategy.bind_ports
806b18c Extend device tier pretty print normalization
62509cc Improve debug logging from ring builder.
1eeb354 Fix the reST field raises in docstrings
e11a38c Bind SAIO services on different loopback addresses
831eb6e Write-affinity aware object deletion
99a6d3b Test: Use assertIsNone() in unittest
d9c4913 Make eventlet.tpool's thread count configurable in object server
a1134e4 Order devices in the output of swift-ring-builder
3820e67 Add tests for Recon's object replication_time time unit
2cb74b1 Replaced assertTrue(False, msg) with fail(msg)
3cccd5a Make bin/swift-get-nodes executable
a8bc94c Replace slowdown option with *_per_second option
2c3ac54 Require that known-bad EC schemes be deprecated
e114066 Add support to increase object ring partition power
0b60b0b Close all versioned_writes subrequests' app_iters
a7c8bec Fix a socket leak in copy middleware
b5ee8c8 Ring doc cleanups
066f443 Follow up for affinity config per policy
4c7839d More Global EC doc updates
9665252 Update Global EC docs with reference to composite rings
188c07e Limit number of revert tombstone SSYNC requests
6687d2f Cleanup db replicator probetest
c23b6db Use config_number method instead of node_id + 1
ee9458a Using assertIsNone() instead of assertEqual(None)
8d6eb36 Using assertIsNone() instead of assertEqual(None)
5d7b0d1 Delay port binding to reduce wait at process start
d51ecb4 Remove threads_per_disk from object-server.conf manpages
420e73f Allow to configure the nameservers in cname_lookup
5ecf828 Follow-up for per-policy proxy configs
61bcd75 README: dedent the numbered list
a3aba99 remove remote qualifier from release notes branch scanning
f64fa46 Make probe tests work when policy-0 is EC
c34ac98 Stop having Sphinx treat warnings as errors
37ba21f Add structure to storage policy configuration guide
cf3c970 Trivial fix typos
227cef9 Add link from policies overview to per-policy proxy-server conf
675145e Remove deprecated vm_test_mode option
d487bf7 Remove tempauth docs from deployment guide
45884c1 Enable per policy proxy config options
1b99180 Clean up how PatchPolicies works
5eeaa95 Make mount_check option usable in containerized environments
f02ec4d Add read and write affinity options to deployment guide
4dc985a Small minor fixes for composite ring functionality
582af7c name_check: better test maximum_length
d40031b Add Composite Ring Functionality
cd2d359 Drop unnecessary dereferencing
843184f Sync metadata in 'rsync_then_merge' in db_replicator
3981e1e Remove links for EOLed releases
107ba79 Rewrite redirection in cname_lookup & domain_remap
37f6f25 Update multi-node install links
6db12b8 Fix domain_remap when obj starts/ends with slash
5dfc3a7 Open-code eventlet.listen()
cd50160 Trivial fix typo and PEP 8 coding style violation
e23f8d3 Trivial fix typo while reading doc
50357de Fix sporadic failure in TestObjectController.test_container_update_async
4c82395 Add message to account-creation assertion
511ac2e Use setUpModule instead of setup for module level unit test setup
172c4de Trivial fix warnings in docstring
88ca232 Trivial fix for decrypter docstrings
75290ec Fix sporadic failures in test_reconstructor.py
6c320b2 Stop including Connection header in EC GET responses
96bbd06 Remove the unused import code
7a9269b Fix unit test failing when swift.conf has default policy index >10
387ce13 Use LogRecord.msg instead of LogRecord.message in tests
93ca16c Fix install guide filter:authtoken config example
85d6cd3 Add Timestamp.now() helper
a07f7dc Fix sporadic failure in TestAccountController unit test
2007257 Fix sporadic failure in test/unit/obj/test_server.py
38d3579 Fix SSYNC failing to replicate unexpired object
9e15eff Fix unit tests on i386 and other archs
c740447 Move EC-specific unit test to EC Test class
381640c Fix (un)patch_policies
a0fcca1 Do not sync suffixes when remote rejects reconstructor revert
3ad8773 Version DLOs, just like every other type of object
4fa536a Replace dict.iteritems with six.iteritems


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

.mailmap                                           |    2 +
AUTHORS                                            |   12 +-
CHANGELOG                                          |  111 ++
README.rst                                         |    6 +-
api-ref/source/parameters.yaml                     |    8 +
api-ref/source/storage-object-services.inc         |    1 +
bin/swift-get-nodes                                |    6 +
bin/swift-object-info                              |    5 +
bin/swift-object-relinker                          |   39 +
.../figures/objectstorage-accountscontainers.png   |  Bin 0 -> 33163 bytes
.../admin/figures/objectstorage-buildingblocks.png |  Bin 0 -> 49416 bytes
.../admin/figures/objectstorage-partitions.png     |  Bin 0 -> 28638 bytes
.../admin/figures/objectstorage-replication.png    |  Bin 0 -> 45780 bytes
...objectstorage-tenant-specific-image-storage.rst |   32 +
.../install/controller-common_prerequisites.txt    |  116 ++
.../finalize-installation-ubuntu-debian.rst        |   80 ++
.../install/storage-install-ubuntu-debian.rst      |  159 +++
etc/container-server.conf-sample                   |    6 +-
etc/object-server.conf-sample                      |   53 +-
etc/proxy-server.conf-sample                       |   74 +-
etc/rsyncd.conf-sample                             |    2 +-
etc/swift.conf-sample                              |    7 +-
install-guide/source/conf.py                       |  301 -----
.../source/controller-common_prerequisites.txt     |  116 --
install-guide/source/controller-include.txt        |   84 --
install-guide/source/controller-install-debian.rst |   50 -
install-guide/source/controller-install-obs.rst    |   45 -
install-guide/source/controller-install-rdo.rst    |   50 -
install-guide/source/controller-install-ubuntu.rst |   52 -
install-guide/source/controller-install.rst        |   18 -
install-guide/source/edit_hosts_file.txt           |   19 -
install-guide/source/environment-networking.rst    |   66 -
install-guide/source/finalize-installation-obs.rst |   80 --
install-guide/source/finalize-installation-rdo.rst |   89 --
.../source/finalize-installation-ubuntu-debian.rst |   80 --
install-guide/source/finalize-installation.rst     |   13 -
install-guide/source/get_started.rst               |   51 -
install-guide/source/index.rst                     |   24 -
install-guide/source/initial-rings.rst             |  253 ----
install-guide/source/next-steps.rst                |   10 -
install-guide/source/storage-include1.txt          |   41 -
install-guide/source/storage-include2.txt          |   41 -
install-guide/source/storage-include3.txt          |   42 -
install-guide/source/storage-install-obs.rst       |  139 --
install-guide/source/storage-install-rdo.rst       |  155 ---
.../source/storage-install-ubuntu-debian.rst       |  159 ---
install-guide/source/storage-install.rst           |   16 -
install-guide/source/verify.rst                    |   94 --
.../notes/2_15_0_release-0a05a011fb85a9c9.yaml     |  102 ++
releasenotes/source/conf.py                        |   19 +-
releasenotes/source/newton.rst                     |    2 +-
releasenotes/source/ocata.rst                      |    2 +-
setup.cfg                                          |    2 +-
swift/account/backend.py                           |    3 +-
swift/account/reaper.py                            |    4 +-
swift/account/server.py                            |    2 +-
swift/account/utils.py                             |    3 +-
swift/cli/info.py                                  |    2 +-
swift/cli/recon.py                                 |   19 +-
swift/cli/relinker.py                              |  159 +++
swift/cli/ring_builder_analyzer.py                 |    2 +-
swift/cli/ringbuilder.py                           |  202 ++-
swift/common/constraints.py                        |    7 +-
swift/common/daemon.py                             |  210 ++-
swift/common/db.py                                 |    4 +-
swift/common/db_replicator.py                      |    9 +-
swift/common/direct_client.py                      |    3 +-
swift/common/memcached.py                          |   12 +-
swift/common/middleware/__init__.py                |   36 +
swift/common/middleware/bulk.py                    |    4 +-
swift/common/middleware/cname_lookup.py            |   56 +-
swift/common/middleware/copy.py                    |    9 +-
swift/common/middleware/crypto/crypto_utils.py     |    2 +-
swift/common/middleware/crypto/decrypter.py        |    4 +-
swift/common/middleware/domain_remap.py            |   22 +-
swift/common/middleware/list_endpoints.py          |    2 +-
swift/common/middleware/ratelimit.py               |   10 +-
swift/common/middleware/slo.py                     |    6 +-
swift/common/middleware/tempauth.py                |  276 ++--
swift/common/middleware/versioned_writes.py        |   21 +-
swift/common/middleware/x_profile/html_viewer.py   |    2 +-
swift/common/request_helpers.py                    |   10 +-
swift/common/ring/builder.py                       |  157 ++-
swift/common/ring/composite_builder.py             |  735 +++++++++++
swift/common/ring/ring.py                          |   37 +-
swift/common/ring/utils.py                         |   19 +-
swift/common/storage_policy.py                     |   26 +-
swift/common/swob.py                               |    7 +-
swift/common/utils.py                              |  116 +-
swift/common/wsgi.py                               |   23 +-
swift/container/backend.py                         |    9 +-
swift/container/reconciler.py                      |    2 +-
swift/container/replicator.py                      |    5 +-
swift/container/server.py                          |    2 +-
swift/container/updater.py                         |   21 +-
swift/obj/diskfile.py                              |  133 +-
swift/obj/reconstructor.py                         |  270 +++-
swift/obj/replicator.py                            |   21 +-
swift/obj/server.py                                |   48 +-
swift/obj/ssync_receiver.py                        |    4 +-
swift/obj/updater.py                               |   21 +-
swift/proxy/controllers/base.py                    |   39 +-
swift/proxy/controllers/container.py               |    3 +-
swift/proxy/controllers/obj.py                     |  156 ++-
swift/proxy/server.py                              |  229 +++-
test-requirements.txt                              |    5 +-
test/__init__.py                                   |   15 +
test/functional/__init__.py                        |   43 +-
test/functional/test_versioned_writes.py           |   69 +-
test/probe/__init__.py                             |   18 +
test/probe/brain.py                                |    2 +-
test/probe/common.py                               |    9 +-
test/probe/test_container_merge_policy_index.py    |    9 +-
test/probe/test_db_replicator.py                   |  152 +++
test/probe/test_object_metadata_replication.py     |   22 +-
test/probe/test_object_partpower_increase.py       |  199 +++
test/probe/test_reconstructor_revert.py            |   75 +-
test/probe/test_replication_servers_working.py     |    2 +-
test/unit/__init__.py                              |   73 +-
test/unit/account/test_backend.py                  |   86 +-
test/unit/account/test_reaper.py                   |   13 +-
test/unit/account/test_server.py                   |    2 +-
test/unit/cli/test_default_output.stub             |    2 +-
test/unit/cli/test_default_output_id_assigned.stub |   11 +
test/unit/cli/test_default_sorted_output.stub      |   10 +
test/unit/cli/test_ipv6_output.stub                |    2 +-
test/unit/cli/test_recon.py                        |   31 +-
test/unit/cli/test_relinker.py                     |  172 +++
test/unit/cli/test_ringbuilder.py                  |   87 +-
test/unit/common/middleware/test_bulk.py           |    4 +-
test/unit/common/middleware/test_cname_lookup.py   |  163 ++-
test/unit/common/middleware/test_copy.py           |   10 +-
test/unit/common/middleware/test_dlo.py            |   12 +-
test/unit/common/middleware/test_domain_remap.py   |  100 +-
test/unit/common/middleware/test_except.py         |   12 +-
test/unit/common/middleware/test_formpost.py       |   66 +-
test/unit/common/middleware/test_keystoneauth.py   |    2 +-
test/unit/common/middleware/test_list_endpoints.py |    2 +-
test/unit/common/middleware/test_memcache.py       |    2 +-
test/unit/common/middleware/test_name_check.py     |   13 +-
test/unit/common/middleware/test_proxy_logging.py  |    4 +-
test/unit/common/middleware/test_ratelimit.py      |   13 +-
test/unit/common/middleware/test_slo.py            |    8 +-
test/unit/common/middleware/test_tempauth.py       |   31 +-
test/unit/common/middleware/test_tempurl.py        |   10 +-
.../common/middleware/test_versioned_writes.py     |   70 +-
test/unit/common/ring/test_builder.py              |  251 +++-
test/unit/common/ring/test_composite_builder.py    | 1173 +++++++++++++++++
test/unit/common/ring/test_utils.py                |   17 +-
test/unit/common/test_bufferedhttp.py              |    6 +-
test/unit/common/test_constraints.py               |   42 +-
test/unit/common/test_container_sync_realms.py     |   10 +-
test/unit/common/test_daemon.py                    |  207 ++-
test/unit/common/test_db.py                        |    4 +-
test/unit/common/test_db_replicator.py             |   95 +-
test/unit/common/test_direct_client.py             |   10 +-
test/unit/common/test_header_key_dict.py           |    2 +-
test/unit/common/test_manager.py                   |   10 +-
test/unit/common/test_memcached.py                 |    8 +-
test/unit/common/test_request_helpers.py           |    2 +-
test/unit/common/test_storage_policy.py            |   27 +-
test/unit/common/test_swob.py                      |   40 +-
test/unit/common/test_utils.py                     |  145 +-
test/unit/common/test_wsgi.py                      |   58 +-
test/unit/container/test_backend.py                |  205 +--
test/unit/container/test_reconciler.py             |   18 +-
test/unit/container/test_server.py                 |   15 +-
test/unit/container/test_sync.py                   |   16 +-
test/unit/container/test_updater.py                |   50 +-
test/unit/helpers.py                               |   25 +-
test/unit/obj/common.py                            |    7 +-
test/unit/obj/test_auditor.py                      |  121 +-
test/unit/obj/test_diskfile.py                     |  169 ++-
test/unit/obj/test_reconstructor.py                | 1327 +++++++++++++++++--
test/unit/obj/test_replicator.py                   |   45 +-
test/unit/obj/test_server.py                       |   82 +-
test/unit/obj/test_ssync.py                        |  101 +-
test/unit/obj/test_ssync_receiver.py               |   47 +-
test/unit/obj/test_updater.py                      |   50 +-
test/unit/proxy/controllers/test_container.py      |    2 +-
test/unit/proxy/controllers/test_obj.py            |  220 +++-
test/unit/proxy/test_mem_server.py                 |   13 +-
test/unit/proxy/test_server.py                     | 1382 +++++++++++++++-----
tox.ini                                            |    3 -
261 files changed, 14273 insertions(+), 4587 deletions(-)


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

diff --git a/test-requirements.txt b/test-requirements.txt
index 5b944ec..968571a 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -11,3 +11,2 @@ nosehtmloutput>=0.0.3 # Apache-2.0
-openstackdocstheme>=1.5.0 # Apache-2.0
-oslosphinx>=4.7.0 # Apache-2.0
-sphinx>=1.5.1  # BSD
+sphinx>=1.6.2 # BSD
+openstackdocstheme>=1.11.0 # Apache-2.0






More information about the Release-announce mailing list