OpenStack Storage (Swift)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

235 lines
8.8 KiB

- |
Added "audit watcher" hooks to allow operators to run arbitrary code
against every diskfile in a cluster. For more information, see `the documentation
- |
Added support for system-scoped "reader" roles when authenticating using
Keystone. Operators may configure this using the ``system_reader_roles``
option in the ``[filter:keystoneauth]`` section of their proxy-server.conf.
A comparable group, ``.reseller_reader``, is now available for development
purposes when authenticating using tempauth.
- |
Allow static large object segments to be deleted asynchronously.
Operators may opt into this new behavior by enabling the new
``allow_async_delete`` option in the ``[filter:slo]`` section
in their proxy-server.conf. For more information, see `the documentation
- |
Added the ability to connect to memcached over TLS. See the
``tls_*`` options in etc/memcache.conf-sample
- |
The proxy-server now caches 'listing' shards, improving listing
performance for sharded containers. A new config option,
``recheck_listing_shard_ranges``, controls the cache time and defaults to
10 minutes; set it to 0 to disable caching (the previous behavior).
- |
Added a new optional proxy-logging field ``{wire_status_int}`` for the
status code returned to the client. For more information, see `the documentation
- |
Memcache client error-limiting is now configurable. See the
``error_suppression_*`` options in etc/memcache.conf-sample
- |
Added ``tasks_per_second`` option to rate-limit the object-expirer.
- |
Added ``usedforsecurity`` annotations for use on FIPS-compliant systems.
- |
S3 API improvements:
* Make allowable clock skew configurable, with a default value of
15 minutes to match AWS. Note that this was previously hardcoded at
5 minutes; operators may want to preserve the prior behavior by setting
``allowable_clock_skew = 300`` in the ``[filter:s3api]`` section of their
* Container ACLs are now cloned to the ``+segments`` container when it is
* Added the ability to configure auth region in s3token middleware.
* CORS-related headers are now passed through appropriately when using
the S3 API. Note that allowed origins and other container metadata
must still be `configured through the Swift API
Preflight requests do not contain enough information to map a
bucket to an account/container pair; a new cluster-wide option
``cors_preflight_allow_origin`` may be configured for such OPTIONS
requests. The default (blank) rejects all S3 preflight requests.
- |
Sharding improvements:
* A ``--no-auto-shard`` option has been added to ``swift-container-sharder``.
* The sharder daemon has been enhanced to better support the shrinking
of shards that are no longer required. Shard containers will now
discover from their root container if they should be shrinking. They
will also discover the shards into which they should shrink, which may
include the root container itself.
* A 'compact' command has been added to ``swift-manage-shard-ranges`` that
enables sequences of contiguous shards with low object counts to be
compacted into another existing shard, or into the root container.
* ``swift-manage-shard-ranges`` can now accept a config file; this
may be used to ensure consistency of threshold values with the
container-sharder config.
* The sharding progress reports in recon cache now continue to be included
for a period of time after sharding has completed. The time period
may be configured using the ``recon_sharded_timeout`` option in the
``[container-sharder]`` section of container-server.conf, and defaults
to 12 hours.
* Add root containers with compactible ranges to recon cache.
* Expose sharding statistics in the backend recon middleware.
- |
Replication improvements:
* The post-rsync REPLICATE call no longer recalculates hashes immediately.
* Hashes are no longer invalidated after a successful ssync; they were
already invalidated during the data transfer.
- |
Added support for Python 3.9.
- |
Partition power increase improvements:
* Fixed a bug where stale state files would cause misplaced data during
multiple partition power increases.
* Removed a race condition that could cause newly-written data to not be
linked into the new partition for the new partition power.
* Improved safety during cleanup to ensure files have been relinked
appropriately before unlinking.
* Added an option to drop privileges when running the relinker as root.
* Added an option to rate-limit how quickly data files are relinked or
cleaned up. This may be used to reduce I/O load during partition power
increases, improving end-user performance.
* Rehash partitions during the partition power increase. Previously, we
relied on the replication engine to perform the rehash, which could
cause an unexpected I/O spike after a partition power increase.
* Warn when relinking/cleaning up and any disks are unmounted.
* Log progress per partition when relinking/cleaning up.
* During clean-up, stop warning about tombstones that got reaped from
the new location but not the old.
* Added the ability to read options from object-server.conf, similar to
background daemons.
- |
Operators should verify that encryption is not enabled in their reconciler
pipelines; having it enabled there may harm data durability. For more
information, see `bug 1910804 <>`__.
- |
Added an option to write EC fragments with legacy CRC to ensure a smooth
upgrade from liberasurecode<=1.5.0 to >=1.6.2. For more information, see
`bug 1886088 <>`__.
- |
Errors downloading a Static Large Object that cause a shorter-than-expected
response are now logged as 500s.
- |
S3 API fixes:
* Fixed a bug that prevented the s3api pipeline validation described in
proxy-server.conf-sample from being performed. As documented, operators
can disable this via the ``auth_pipeline_check`` option if proxy startup
fails with validation errors.
* Fixed an issue where SHA mismatches in client XML payloads would cause
a server error. Swift now correctly responds with a client error about
the bad digest.
* Fixed an issue where non-base64 signatures would cause a server error.
Swift now correctly responds with a client error about the invalid
* The correct storage policy is now logged for S3 requests.
- |
Sharding fixes:
* Prevent shard databases from losing track of their root database when
* Prevent sharded root databases from being reclaimed to ensure that
shards can detect that they have been deleted.
* Overlapping shrinking shards no longer generate audit warnings; these
are expected to sometimes overlap.
- |
Replication fixes:
* Fixed a race condition in ssync that could lead to a loss of data
durability (or even loss of data, for two-replica policies) when some
object servers have outdated rings. Replication via rsync is likely
still affected by a similar bug.
* Non-durable fragments can now be reverted from handoffs.
* Reduced log noise for common ssync errors.
- |
Python 3 fixes:
* Staticweb correctly handles listings when paths include non-ASCII
* S3 API now allows multipart uploads with non-ASCII characters in the
object name.
* Fixed an import-ordering issue in ``swift-dispersion-populate``.
- |
Turned off thread-logging when monkey-patching with eventlet. This
addresses a potential hang in the proxy-server while logging client
- |
Fixed a bug that could cause EC GET responses to return a server error.
- |
Fixed an issue with ``swift-drive-audit`` when run around New Year's.
- |
Server errors encountered when validating the first segment of a Static or
Dynamic Large Object now return a 503 to the client, rather than a 409.
- |
Errors when setting keys in memcached are now logged. This helps
operators detect when shard ranges for caching have gotten too large to
be stored, for example.
- |
Various other minor bug fixes and improvements.