AUTHORS/CHANGELOG for 2.28.0
Change-Id: Ibbaaca2a0fd36aa6a893b0e1146dd35fafe1e634
This commit is contained in:
parent
5759072d25
commit
a8f1512863
4
AUTHORS
4
AUTHORS
@ -248,6 +248,7 @@ Kenichiro Matsuda (matsuda_kenichi@jp.fujitsu.com)
|
||||
Keshava Bharadwaj (kb.sankethi@gmail.com)
|
||||
Kiyoung Jung (kiyoung.jung@kt.com)
|
||||
Koert van der Veer (koert@cloudvps.com)
|
||||
Konrad Kügler (swamblumat-eclipsebugs@yahoo.de)
|
||||
Kota Tsuyuzaki (kota.tsuyuzaki.pc@hco.ntt.co.jp)
|
||||
Ksenia Demina (kdemina@mirantis.com)
|
||||
Kuan-Lin Chen (kuanlinchen@synology.com)
|
||||
@ -352,6 +353,7 @@ Rebecca Finn (rebeccax.finn@intel.com)
|
||||
Renich Bon Ćirić (renich@cloudsigma.com)
|
||||
Ricardo Ferreira (ricardo.sff@gmail.com)
|
||||
Richard Hawkins (richard.hawkins@rackspace.com)
|
||||
ricolin (ricolin@ricolky.com)
|
||||
Robert Francis (robefran@ca.ibm.com)
|
||||
Robin Naundorf (r.naundorf@fh-muenster.de)
|
||||
Romain de Joux (romain.de-joux@corp.ovh.com)
|
||||
@ -393,6 +395,7 @@ Thierry Carrez (thierry@openstack.org)
|
||||
Thomas Goirand (thomas@goirand.fr)
|
||||
Thomas Herve (therve@redhat.com)
|
||||
Thomas Leaman (thomas.leaman@hp.com)
|
||||
Tiago Primini (primini@gmail.com)
|
||||
Tim Burke (tim.burke@gmail.com)
|
||||
Timothy Okwii (tokwii@cisco.com)
|
||||
Timur Alperovich (timur.alperovich@gmail.com)
|
||||
@ -417,6 +420,7 @@ Vincent Untz (vuntz@suse.com)
|
||||
Vladimir Vechkanov (vvechkanov@mirantis.com)
|
||||
Vu Cong Tuan (tuanvc@vn.fujitsu.com)
|
||||
vxlinux (yan.wei7@zte.com.cn)
|
||||
Walter Doekes (walter+github@wjd.nu)
|
||||
wangdequn (wangdequn@inspur.com)
|
||||
wanghongtaozz (wanghongtaozz@inspur.com)
|
||||
wanghui (wang_hui@inspur.com)
|
||||
|
214
CHANGELOG
214
CHANGELOG
@ -1,3 +1,217 @@
|
||||
swift (2.28.0)
|
||||
|
||||
* Sharding improvements:
|
||||
|
||||
* When building a listing from shards, any failure to retrieve
|
||||
listings will result in a 503 response. Previously, failures
|
||||
fetching a partiucular shard would result in a gap in listings.
|
||||
|
||||
* Container-server logs now include the shard path in the referer
|
||||
field when receiving stat updates.
|
||||
|
||||
* Added a new config option, `rows_per_shard`, to specify how many
|
||||
objects should be in each shard when scanning for ranges. The default
|
||||
is `shard_container_threshold / 2`, preserving existing behavior.
|
||||
|
||||
* Added a new config option, `minimum_shard_size`. When scanning
|
||||
for shard ranges, if the final shard would otherwise contain
|
||||
fewer than this many objects, the previous shard will instead
|
||||
be expanded to the end of the namespace (and so may contain up
|
||||
to `rows_per_shard + minimum_shard_size` objects). This reduces
|
||||
the number of small shards generated. The default value is
|
||||
`rows_per_shard / 5`.
|
||||
|
||||
* Added a new config option, `shrink_threshold`, to specify the
|
||||
absolute size below which a shard will be considered for shrinking.
|
||||
This overrides the `shard_shrink_point` configuration option, which
|
||||
expressed this as a percentage of `shard_container_threshold`.
|
||||
`shard_shrink_point` is now deprecated.
|
||||
|
||||
* Similar to above, `expansion_limit` was added as an absolute-size
|
||||
replacement for the now-deprecated `shard_shrink_merge_point`
|
||||
configuration option.
|
||||
|
||||
* The sharder now correctly identifies and fails audits for shard
|
||||
ranges that overlap exactly.
|
||||
|
||||
* The sharder and swift-manage-shard-ranges now consider total row
|
||||
count (instead of just object count) when deciding whether a shard
|
||||
is a candidate for shrinking.
|
||||
|
||||
* If the sharder encounters shard range gaps while cleaving, it will
|
||||
now log an error and halt sharding progress. Previously, rows may
|
||||
not have been moved properly, leading to data loss.
|
||||
|
||||
* Sharding cycle time and last-completion time are now available via
|
||||
swift-recon.
|
||||
|
||||
* Fixed an issue where resolving overlapping shard ranges via shrinking
|
||||
could prematurely mark created or cleaved shards as active.
|
||||
|
||||
* `swift-manage-shard-ranges` improvements:
|
||||
|
||||
* Exit codes are now applied more consistently:
|
||||
|
||||
- 0 for success
|
||||
- 1 for an unexpected outcome
|
||||
- 2 for invalid options
|
||||
- 3 for user exit
|
||||
|
||||
As a result, some errors that previously resulted in exit code 2
|
||||
will now exit with code 1.
|
||||
|
||||
* Added a new 'repair' command to automatically identify and
|
||||
optionally resolve overlapping shard ranges.
|
||||
|
||||
* Added a new 'analyze' command to automatically identify overlapping
|
||||
shard ranges and recommend a resolution based on a JSON listing
|
||||
of shard ranges such as produced by the 'show' command.
|
||||
|
||||
* Added a `--includes` option for the 'show' command to only output
|
||||
shard ranges that may include a given object name.
|
||||
|
||||
* Added a `--dry-run` option for the 'compact' command.
|
||||
|
||||
* The 'compact' command now outputs the total number of compactible
|
||||
sequences.
|
||||
|
||||
* S3 API improvements:
|
||||
|
||||
* Added an option, `ratelimit_as_client_error`, to return 429s for
|
||||
rate-limited responses. Several clients/SDKs have seem to support
|
||||
retries with backoffs on 429, and having it as a client error
|
||||
cleans up logging and metrics. By default, Swift will respond 503,
|
||||
matching AWS documentation.
|
||||
|
||||
* Fixed a server error in bucket listings when `s3_acl` is enabled
|
||||
and staticweb is configured for the container.
|
||||
|
||||
* Fixed a server error when a client exceeds `client_timeout` during an
|
||||
upload. Now, a `RequestTimeout` error is correctly returned.
|
||||
|
||||
* Fixed a server error when downloading multipart uploads/static large
|
||||
objects that have missing or inaccessible segments. This is a state
|
||||
that cannot arise in AWS, so a new `BrokenMPU` error is returned,
|
||||
indicating that retrying the request is unlikely to succeed.
|
||||
|
||||
* Fixed several issues with the prefix, marker, and delimiter
|
||||
parameters that would be mirrored back to clients when listing
|
||||
buckets.
|
||||
|
||||
* Partition power increase improvements:
|
||||
|
||||
* The relinker now spawns multiple subprocesses to process disks
|
||||
in parallel. By default, one worker is spawned per disk; use the
|
||||
new `--workers` option to control how many subprocesses are used.
|
||||
Use `--workers=0` to maintain the previous behavior.
|
||||
|
||||
* The relinker now performs eventlet-hub selection the same way as
|
||||
other daemons. In particular, `epolls` will no longer be selected,
|
||||
as it seemed to cause occassional hangs.
|
||||
|
||||
* The relinker can now target specific storage policies or
|
||||
partitions by using the new `--policy` and `--partition`
|
||||
options.
|
||||
|
||||
* Partitions that encountered errors during relinking are no longer
|
||||
marked as completed in the relinker state file. This ensures that
|
||||
a subsequent relink will retry the failed partitions.
|
||||
|
||||
* Partition cleanup is more robust, decreasing the likelihood of
|
||||
leaving behind mostly-empty partitions from the old partition
|
||||
power.
|
||||
|
||||
* Improved relinker progress logging, and started collecting
|
||||
progress information for swift-recon.
|
||||
|
||||
* Cleanup is more robust to files and directories being deleted by
|
||||
another process.
|
||||
|
||||
* The relinker better handles data found from earlier partition power
|
||||
increases.
|
||||
|
||||
* The relinker better handles tombstones found for the same object
|
||||
but with different inodes.
|
||||
|
||||
* The reconciler now defers working on policies that have a partition
|
||||
power increase in progress to avoid issues with concurrent writes.
|
||||
|
||||
* Erasure coding fixes:
|
||||
|
||||
* Added the ability to quarantine EC fragments that have no (or few)
|
||||
other fragments in the cluster. A new configuration option,
|
||||
`quarantine_threshold`, in the reconstructor controls the point at
|
||||
the fragment will be quarantined; the default (0) will never
|
||||
quarantine. Only fragments older than `quarantine_age` (default:
|
||||
`reclaim_age`) may be quarantined. Before quarantining, the
|
||||
reconstructor will attempt to fetch fragments from handoff nodes
|
||||
in addition to the usual primary nodes; a new `request_node_count`
|
||||
option (default `2 * replicas`) limits the total number of nodes to
|
||||
contact.
|
||||
|
||||
* Added a delay before deleting non-durable data. A new configuration
|
||||
option, `commit_window` in the `[DEFAULT]` section of
|
||||
object-server.conf, adjusts this delay; the default is 60 seconds. This
|
||||
improves the durability of both back-dated PUTs (from the reconciler or
|
||||
container-sync, for example) and fresh writes to handoffs by preventing
|
||||
the reconstructor from deleting data that the object-server was still
|
||||
writing.
|
||||
|
||||
* Improved proxy-server and object-reconstructor logging when data
|
||||
cannot be reconstructed.
|
||||
|
||||
* Fixed an issue where some but not all fragments having metadata
|
||||
applied could prevent reconstruction of missing fragments.
|
||||
|
||||
* Server-side copying of erasure-coded data to a replicated policy no
|
||||
longer copies EC sysmeta. The previous behavior had no material
|
||||
effect, but could confuse operators examining data on disk.
|
||||
|
||||
* Python 3 fixes:
|
||||
|
||||
* Fixed a server error when performing a PUT authorized via
|
||||
tempurl with some proxy pipelines.
|
||||
|
||||
* Fixed a server error during GET of a symlink with some proxy
|
||||
pipelines.
|
||||
|
||||
* Fixed an issue with logging setup when /dev/log doesn't exist
|
||||
or is not a UNIX socket.
|
||||
|
||||
* The container-reconciler now scales out better with new `processes`,
|
||||
`process`, and `concurrency` options, similar to the object-expirer.
|
||||
|
||||
* The dark-data audit watcher now skips objects younger than a new
|
||||
configurable `grace_age` period. This avoids issues where data
|
||||
could be flagged, quarantined, or deleted because of listing
|
||||
consistency issues. The default is one week.
|
||||
|
||||
* The dark-data audit watcher now requires that all primary locations
|
||||
for an object's container agree that the data does not appear in
|
||||
listings to consider data "dark". Previously, a network partition
|
||||
that left an object node isolated could cause it to quarantine or
|
||||
delete all of its data.
|
||||
|
||||
* More daemons now support systemd notify sockets.
|
||||
|
||||
* `EPIPE` errors no longer log tracebacks.
|
||||
|
||||
* The account and container auditors now log and update recon before
|
||||
going to sleep.
|
||||
|
||||
* The object-expirer logs fewer client disconnects.
|
||||
|
||||
* `swift-recon-cron` now includes the last time it was run in the recon
|
||||
information.
|
||||
|
||||
* `EIO` errors during read now cause object diskfiles to be quarantined.
|
||||
|
||||
* The formpost middleware now properly supports uploading multiple files
|
||||
with different content-types.
|
||||
|
||||
* Various other minor bug fixes and improvements.
|
||||
|
||||
|
||||
swift (2.27.0, OpenStack Wallaby)
|
||||
|
||||
* Added "audit watcher" hooks to allow operators to run arbitrary code
|
||||
|
235
releasenotes/notes/2_28_0_release-f2515e07fb61cd01.yaml
Normal file
235
releasenotes/notes/2_28_0_release-f2515e07fb61cd01.yaml
Normal file
@ -0,0 +1,235 @@
|
||||
---
|
||||
features:
|
||||
- |
|
||||
``swift-manage-shard-ranges`` improvements:
|
||||
|
||||
* Exit codes are now applied more consistently:
|
||||
|
||||
- 0 for success
|
||||
- 1 for an unexpected outcome
|
||||
- 2 for invalid options
|
||||
- 3 for user exit
|
||||
|
||||
As a result, some errors that previously resulted in exit code 2
|
||||
will now exit with code 1.
|
||||
|
||||
* Added a new 'repair' command to automatically identify and
|
||||
optionally resolve overlapping shard ranges.
|
||||
|
||||
* Added a new 'analyze' command to automatically identify overlapping
|
||||
shard ranges and recommend a resolution based on a JSON listing
|
||||
of shard ranges such as produced by the 'show' command.
|
||||
|
||||
* Added a ``--includes`` option for the 'show' command to only output
|
||||
shard ranges that may include a given object name.
|
||||
|
||||
* Added a ``--dry-run`` option for the 'compact' command.
|
||||
|
||||
* The 'compact' command now outputs the total number of compactible
|
||||
sequences.
|
||||
|
||||
- |
|
||||
Partition power increase improvements:
|
||||
|
||||
* The relinker now spawns multiple subprocesses to process disks
|
||||
in parallel. By default, one worker is spawned per disk; use the
|
||||
new ``--workers`` option to control how many subprocesses are used.
|
||||
Use ``--workers=0`` to maintain the previous behavior.
|
||||
|
||||
* The relinker can now target specific storage policies or
|
||||
partitions by using the new ``--policy`` and ``--partition``
|
||||
options.
|
||||
|
||||
- |
|
||||
More daemons now support systemd notify sockets.
|
||||
|
||||
- |
|
||||
The container-reconciler now scales out better with new ``processes``,
|
||||
``process``, and ``concurrency`` options, similar to the object-expirer.
|
||||
deprecations:
|
||||
- |
|
||||
Container sharding deprecations:
|
||||
|
||||
* Added a new config option, ``shrink_threshold``, to specify the
|
||||
absolute size below which a shard will be considered for shrinking.
|
||||
This overrides the ``shard_shrink_point`` configuration option, which
|
||||
expressed this as a percentage of ``shard_container_threshold``.
|
||||
``shard_shrink_point`` is now deprecated.
|
||||
|
||||
* Similar to above, ``expansion_limit`` was added as an absolute-size
|
||||
replacement for the now-deprecated ``shard_shrink_merge_point``
|
||||
configuration option.
|
||||
fixes:
|
||||
- |
|
||||
Sharding improvements:
|
||||
|
||||
* When building a listing from shards, any failure to retrieve
|
||||
listings will result in a 503 response. Previously, failures
|
||||
fetching a partiucular shard would result in a gap in listings.
|
||||
|
||||
* Container-server logs now include the shard path in the referer
|
||||
field when receiving stat updates.
|
||||
|
||||
* Added a new config option, ``rows_per_shard``, to specify how many
|
||||
objects should be in each shard when scanning for ranges. The default
|
||||
is ``shard_container_threshold / 2``, preserving existing behavior.
|
||||
|
||||
* Added a new config option, ``minimum_shard_size``. When scanning
|
||||
for shard ranges, if the final shard would otherwise contain
|
||||
fewer than this many objects, the previous shard will instead
|
||||
be expanded to the end of the namespace (and so may contain up
|
||||
to ``rows_per_shard + minimum_shard_size`` objects). This reduces
|
||||
the number of small shards generated. The default value is
|
||||
``rows_per_shard / 5``.
|
||||
|
||||
* The sharder now correctly identifies and fails audits for shard
|
||||
ranges that overlap exactly.
|
||||
|
||||
* The sharder and swift-manage-shard-ranges now consider total row
|
||||
count (instead of just object count) when deciding whether a shard
|
||||
is a candidate for shrinking.
|
||||
|
||||
* If the sharder encounters shard range gaps while cleaving, it will
|
||||
now log an error and halt sharding progress. Previously, rows may
|
||||
not have been moved properly, leading to data loss.
|
||||
|
||||
* Sharding cycle time and last-completion time are now available via
|
||||
swift-recon.
|
||||
|
||||
* Fixed an issue where resolving overlapping shard ranges via shrinking
|
||||
could prematurely mark created or cleaved shards as active.
|
||||
|
||||
- |
|
||||
S3 API improvements:
|
||||
|
||||
* Added an option, ``ratelimit_as_client_error``, to return 429s for
|
||||
rate-limited responses. Several clients/SDKs have seem to support
|
||||
retries with backoffs on 429, and having it as a client error
|
||||
cleans up logging and metrics. By default, Swift will respond 503,
|
||||
matching AWS documentation.
|
||||
|
||||
* Fixed a server error in bucket listings when ``s3_acl`` is enabled
|
||||
and staticweb is configured for the container.
|
||||
|
||||
* Fixed a server error when a client exceeds ``client_timeout`` during an
|
||||
upload. Now, a ``RequestTimeout`` error is correctly returned.
|
||||
|
||||
* Fixed a server error when downloading multipart uploads/static large
|
||||
objects that have missing or inaccessible segments. This is a state
|
||||
that cannot arise in AWS, so a new ``BrokenMPU`` error is returned,
|
||||
indicating that retrying the request is unlikely to succeed.
|
||||
|
||||
* Fixed several issues with the prefix, marker, and delimiter
|
||||
parameters that would be mirrored back to clients when listing
|
||||
buckets.
|
||||
|
||||
- |
|
||||
Partition power increase fixes:
|
||||
|
||||
* The relinker now performs eventlet-hub selection the same way as
|
||||
other daemons. In particular, ``epolls`` will no longer be selected,
|
||||
as it seemed to cause occassional hangs.
|
||||
|
||||
* Partitions that encountered errors during relinking are no longer
|
||||
marked as completed in the relinker state file. This ensures that
|
||||
a subsequent relink will retry the failed partitions.
|
||||
|
||||
* Partition cleanup is more robust, decreasing the likelihood of
|
||||
leaving behind mostly-empty partitions from the old partition
|
||||
power.
|
||||
|
||||
* Improved relinker progress logging, and started collecting
|
||||
progress information for swift-recon.
|
||||
|
||||
* Cleanup is more robust to files and directories being deleted by
|
||||
another process.
|
||||
|
||||
* The relinker better handles data found from earlier partition power
|
||||
increases.
|
||||
|
||||
* The relinker better handles tombstones found for the same object
|
||||
but with different inodes.
|
||||
|
||||
* The reconciler now defers working on policies that have a partition
|
||||
power increase in progress to avoid issues with concurrent writes.
|
||||
|
||||
- |
|
||||
Erasure coding fixes:
|
||||
|
||||
* Added the ability to quarantine EC fragments that have no (or few)
|
||||
other fragments in the cluster. A new configuration option,
|
||||
``quarantine_threshold``, in the reconstructor controls the point at
|
||||
the fragment will be quarantined; the default (0) will never
|
||||
quarantine. Only fragments older than ``quarantine_age`` (default:
|
||||
``reclaim_age``) may be quarantined. Before quarantining, the
|
||||
reconstructor will attempt to fetch fragments from handoff nodes
|
||||
in addition to the usual primary nodes; a new ``request_node_count``
|
||||
option (default ``2 * replicas``) limits the total number of nodes to
|
||||
contact.
|
||||
|
||||
* Added a delay before deleting non-durable data. A new configuration
|
||||
option, ``commit_window`` in the ``[DEFAULT]`` section of
|
||||
object-server.conf, adjusts this delay; the default is 60 seconds. This
|
||||
improves the durability of both back-dated PUTs (from the reconciler or
|
||||
container-sync, for example) and fresh writes to handoffs by preventing
|
||||
the reconstructor from deleting data that the object-server was still
|
||||
writing.
|
||||
|
||||
* Improved proxy-server and object-reconstructor logging when data
|
||||
cannot be reconstructed.
|
||||
|
||||
* Fixed an issue where some but not all fragments having metadata
|
||||
applied could prevent reconstruction of missing fragments.
|
||||
|
||||
* Server-side copying of erasure-coded data to a replicated policy no
|
||||
longer copies EC sysmeta. The previous behavior had no material
|
||||
effect, but could confuse operators examining data on disk.
|
||||
|
||||
- |
|
||||
Python 3 fixes:
|
||||
|
||||
* Fixed a server error when performing a PUT authorized via
|
||||
tempurl with some proxy pipelines.
|
||||
|
||||
* Fixed a server error during GET of a symlink with some proxy
|
||||
pipelines.
|
||||
|
||||
* Fixed an issue with logging setup when /dev/log doesn't exist
|
||||
or is not a UNIX socket.
|
||||
|
||||
- |
|
||||
The dark-data audit watcher now skips objects younger than a new
|
||||
configurable ``grace_age`` period. This avoids issues where data
|
||||
could be flagged, quarantined, or deleted because of listing
|
||||
consistency issues. The default is one week.
|
||||
|
||||
- |
|
||||
The dark-data audit watcher now requires that all primary locations
|
||||
for an object's container agree that the data does not appear in
|
||||
listings to consider data "dark". Previously, a network partition
|
||||
that left an object node isolated could cause it to quarantine or
|
||||
delete all of its data.
|
||||
|
||||
- |
|
||||
``EPIPE`` errors no longer log tracebacks.
|
||||
|
||||
- |
|
||||
The account and container auditors now log and update recon before
|
||||
going to sleep.
|
||||
|
||||
- |
|
||||
The object-expirer logs fewer client disconnects.
|
||||
|
||||
- |
|
||||
``swift-recon-cron`` now includes the last time it was run in the recon
|
||||
information.
|
||||
|
||||
- |
|
||||
``EIO`` errors during read now cause object diskfiles to be quarantined.
|
||||
|
||||
- |
|
||||
The formpost middleware now properly supports uploading multiple files
|
||||
with different content-types.
|
||||
|
||||
- |
|
||||
Various other minor bug fixes and improvements.
|
Loading…
x
Reference in New Issue
Block a user