3c6e967a581c00fa9b7dc0a27847e2562a355567
Commit Graph

11062 Commits

This Branch
This Branch
All Branches
Author SHA1 Message Date
Clay Gerrard
3c6e967a58 test: fix AccountBroker.path tests
Move tests to base TestCase, currently they are only running against old
"broker w/o metadata" - but the tests and behavior should work on all
versions of the account schema
Drive-by: reword tests to make assertions stronger and behaviors more
obvious
Related-Change: Ic7c2aa878caf039b29abb900b4f491130be3d8a8
Change-Id: I59abd956ffa01bd41f29959ff3df89a3a20a00d4
Signed-off-by: Clay Gerrard <clay.gerrard@gmail.com>
2025年10月06日 16:00:09 +01:00
Zuul
ac5c783d65 Merge "Assert metadata of SLO PUT from container sync" 2025年10月01日 18:39:42 +00:00
Zuul
9a45531942 Merge "Test each method in test_crossdomain_get_only" 2025年10月01日 18:39:37 +00:00
Zuul
05fcc5964a Merge "docs: More proxy-server.conf-sample cleanup" 2025年10月01日 18:39:32 +00:00
Zuul
6e9a06b270 Merge "doc: specify seconds in proxy-server.conf-sample" 2025年10月01日 16:33:27 +00:00
Shashirekha Gundur
a6bde729c5 Test each method in test_crossdomain_get_only
iterate through not allowed methods and assert
Change-Id: Ia304709fc56d3e81bb1326b56a4b0d64ed698160
Signed-off-by: Tim Burke <tim.burke@gmail.com>
2025年10月01日 09:22:20 -07:00
Zuul
6da1207489 Merge "test: move import to top of file" 2025年10月01日 15:52:58 +00:00
Clay Gerrard
64bb041398 Assert metadata of SLO PUT from container sync
In addition to being in the pure unmolested ondisk format from the
source container; the manifest must also include the normally
protected X-Static-Large-Object metadata.
Change-Id: Ic6638e8258e9dec755f8d9630f0586bd3c9b4420
Related-Change: I8d503419b7996721a671ed6b2795224775a7d8c6
Signed-off-by: Tim Burke <tim.burke@gmail.com>
2025年10月01日 08:41:40 -07:00
Tim Burke
79feb12b28 docs: More proxy-server.conf-sample cleanup
Change-Id: I99dbd9590ff39343422852e4154f98bc194d161d
Signed-off-by: Tim Burke <tim.burke@gmail.com>
2025年10月01日 08:23:42 -07:00
Zuul
a9a1ea4137 Merge "Adds --skip-commits to s-m-s-r" 2025年09月30日 18:33:41 +00:00
Clay Gerrard
b55f13c758 test: move import to top of file
Related-Change-Id: I38c11b7aae8c4112bb3d671fa96012ab0c44d5a2
Change-Id: Ibe5d206d2b96e174f849715fb13562ae0d2f5de2
Signed-off-by: Clay Gerrard <clay.gerrard@gmail.com>
2025年09月30日 12:40:16 -05:00
Clay Gerrard
389747a8b2 doc: specify seconds in proxy-server.conf-sample
Most of swift's timing configuration values should accept units in
seconds; make this explicit in the sample config for values that did not
already do so.
Related-Change-Id: I38c11b7aae8c4112bb3d671fa96012ab0c44d5a2
Change-Id: I5b25b7e830a31f03d11f371adf12289222222eb2
Signed-off-by: Clay Gerrard <clay.gerrard@gmail.com>
2025年09月30日 12:34:05 -05:00
Zuul
e5d44d669a Merge "proxy: use cooperative tokens to coalesce updating shard range requests into backend" 2025年09月30日 17:06:54 +00:00
Christian Ohanaja
ba1ab9d11c Adds --skip-commits to s-m-s-r
This patch replaces --force-commits with a --skip-commits flag in
swift-manage-shard-ranges to determine when to commit object updates.
Change-Id: I6de041f5c12dca2618d22d1271efe242b2f35258
Signed-off-by: Christian Ohanaja <cohanaja@nvidia.com>
2025年09月30日 16:25:17 +00:00
Jianjian Huo
d9883d0834 proxy: use cooperative tokens to coalesce updating shard range requests into backend
The cost of memcache misses could be deadly. For example, when
updating shard range cache query miss, PUT requests would have to
query the backend to figure out which shard to upload the objects.
And when a lot of requests are sending to the backend at the same
time, this could easily overload the root containers and cause a
lot of 500/503 errors; and when proxy-servers receive responses of
all those 200 backend shard range queries, they could in turn try
to write the same shard range data into memcached servers at the
same time, and cause memcached to return OOM failures too.
We have seen cache misses frequently to updating shard range cache
in production, due to Memcached out-of-memory and cache evictions.
To cope with those kind of situations, a memcached based cooperative
token mechanism can be added into proxy-server to coalesce lots of
in-flight backend requests into a few: when updating shard range
cache misses, only the first few of requests will get global
cooperative tokens and then be able to fetch updating shard ranges
from backend container servers. And the following cache miss
requests will wait for cache filling to finish, instead of all
querying the backend container servers. This will prevent a flood
of backend requests to overload both container servers and memcached
servers.
Drive-by fix: when memcache is not available, object controller will
only need to retrieve a specific shard range from the container server
to send the update request to.
Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
Co-Authored-By: Tim Burke <tim.burke@gmail.com>
Co-Authored-By: Yan Xiao <yanxiao@nvidia.com>
Co-Authored-By: Shreeya Deshpande <shreeyad@nvidia.com>
Signed-off-by: Jianjian Huo <jhuo@nvidia.com>
Change-Id: I38c11b7aae8c4112bb3d671fa96012ab0c44d5a2
2025年09月29日 19:44:50 -07:00
Zuul
dd23020c30 Merge "common: add memcached based cooperative token mechanism." 2025年09月29日 22:59:08 +00:00
ashnair
d353f15fac account-broker: add resilient path property with lazy cache
Add a path property for AccountBroker and use lazy, resilient
_populate_instance_cache(). Use None attrs as flags, avoid broad
try/except in path, and retry if cache population fails.
Change-Id: Ic7c2aa878caf039b29abb900b4f491130be3d8a8
Signed-off-by: ashnair <ashnair@nvidia.com>
2025年09月29日 15:42:11 +00:00
Jianjian Huo
707a65ab3c common: add memcached based cooperative token mechanism.
Memcached based cooperative token is a improved version of ghetto lock,
see the description of ghetto lock at here:
https://github.com/memcached/memcached/wiki/ProgrammingTricks
It's used to avoid the thundering herd situation which many caching
users face: given a cache item that is popular and difficult to
recreate, in the event of cache misses, users could end up with hundreds
(or thousands) of processes slamming the backend database at the same
time in an attempt to refill the same cache content. This thundering
herd problem not only often leads to unresponsive backend; and also
those writes into memcached cause premature cache eviction under memory
pressure.
With cooperative token, when lots of in-flight callers try to get the
cached item specified by key from memcache and get cache misses, only
the first few query requests (limited by by ``num_tokens``) will be able
get the cooperative tokens by creating or incrementing an internal
memcache key, and then those callers with tokens can send backend
requests to fetch data from backend servers and be able to set data into
memcache; all other cache miss requests without a token should wait for
cache filling to finish, instead of all querying the backend servers at
the same time.
Co-Authored-By: Tim Burke <tim.burke@gmail.com>
Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
Co-Authored-By: Yan Xiao <yanxiao@nvidia.com>
Co-Authored-By: Alistair Coles <alistairncoles@gmail.com>
Signed-off-by: Jianjian Huo <jhuo@nvidia.com>
Change-Id: I50ff92441c2f2c49b3034644aba59930e8a99589
2025年09月26日 11:28:40 -07:00
Christian Ohanaja
b035ed1385 add Christian O to AUTHORS
Change-Id: Id2ab5c00182516a744fd9e8b8e89f7232a433222
Signed-off-by: Christian Ohanaja <cohanaja@nvidia.com>
2025年09月17日 13:56:43 -07:00
Zuul
92dd03ed77 Merge "diskfile: Fix UnboundLocalError during part power increase" 2025年09月16日 17:25:57 +00:00
Zuul
4cacaa968f Merge "test: do not create timestamp collision unnecessarily" 2025年09月16日 17:05:45 +00:00
Zuul
d0a3b1b016 Merge "test: fix module state pollution" 2025年09月16日 16:57:57 +00:00
Zuul
f3e98aa710 Merge "tests: simplify TestGlobalSetupObjectReconstructor setUp" 2025年09月16日 15:49:58 +00:00
Zuul
2142861146 Merge "cleaning up and fixing some links" 2025年09月16日 15:09:01 +00:00
Clay Gerrard
7b05356bd0 test: do not create timestamp collision unnecessarily
Change-Id: Ib6bf702e38495e52e3b2f5ca95ed17c519018474
Signed-off-by: Clay Gerrard <clay.gerrard@gmail.com>
2025年09月16日 09:52:18 -05:00
Clay Gerrard
815393dff4 test: fix module state pollution
The disable_fallocate function provided in common.utils doesn't really
have a way to undo it - it's tested independently in test_utils.
It shouldn't be used on test_diskfile or else test_utils fallocate tests
will fail afterwards.
Change-Id: I6ffa97b39111ba25f85ba7cfde21440d975dc760
Signed-off-by: Clay Gerrard <clay.gerrard@gmail.com>
2025年09月16日 09:50:31 -05:00
Alistair Coles
c26c7b8edd tests: simplify TestGlobalSetupObjectReconstructor setUp
Change-Id: I0168ab113fdda60ed858ed0928356699399d4044
Signed-off-by: Alistair Coles <alistairncoles@gmail.com>
2025年09月16日 14:42:56 +01:00
Christian Ohanaja
bd27fc6baf cleaning up and fixing some links
Verified every changed link works by
building and testing manually
Change-Id: I4bb6cc238d4e567e3edc6c15a58d4a5f9a41e273
Signed-off-by: Christian Ohanaja <cohanaja@nvidia.com>
2025年09月15日 23:22:37 +00:00
63eeb005bd Update master for stable/2025.2
Add file to the reno documentation build to show release notes for
stable/2025.2.
Use pbr instruction to increment the minor version number
automatically so that master versions are higher than the versions on
stable/2025.2.
Sem-Ver: feature
Change-Id: I3ab48efc8208b791bfdf5ac24d098b8e236d7031
Signed-off-by: OpenStack Release Bot <infra-root@openstack.org>
Generated-By: openstack/project-config:roles/copy-release-tools-scripts/files/release-tools/add_release_note_page.sh
2025年09月12日 13:44:55 +00:00
Tim Burke
397f94c73b diskfile: Fix UnboundLocalError during part power increase
Closes-Bug: #2122543
Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com>
Signed-off-by: Tim Burke <tim.burke@gmail.com>
Change-Id: I8a2a96394734899ee48e1d9264bf3908968c51a8
2025年09月10日 13:27:25 -07:00
Tim Burke
82cb5a5d78 AUTHORS/CHANGELOG for 2.36.0
Signed-off-by: Tim Burke <tim.burke@gmail.com>
Change-Id: I9c86383ed3d35657a7e88fa9cdc6a94559e5ca37
2.36.0
2025年09月04日 12:32:49 -07:00
Tim Burke
e13f4abcd7 tests: Skip some tests if crc32c is not available
Signed-off-by: Tim Burke <tim.burke@gmail.com>
Change-Id: I2e2a4e2c448319e6531372ae06ab81eb58edc57e
2025年08月29日 11:16:04 -07:00
Tim Burke
21325988df CI: Remove a bunch of unnecessary bindep profiles
Signed-off-by: Tim Burke <tim.burke@gmail.com>
Change-Id: I26be3752b8c67b7a6a0a9c75571a44f3827cbb90
2025年08月28日 14:10:35 -07:00
Tim Burke
3db8e2d05f Clean up some py36 infra
- Drop py36 versions from py3-constraints.txt
- Remove py36 tox environment
Forgot to do this when we dropped py36 support.
Signed-off-by: Tim Burke <tim.burke@gmail.com>
Change-Id: I0233e1dd036b9a420c815fec3c9632d2967b934e
2025年08月28日 14:10:32 -07:00
Tim Burke
1ed7b71bb5 Update py3-constraints.txt
We're starting to see projects drop py39 support; seems as good a time
as any for an update.
Signed-off-by: Tim Burke <tim.burke@gmail.com>
Change-Id: I481efbd2627e517edf49f3025b3399a86d1b4f3e
2025年08月28日 14:09:56 -07:00
Tim Burke
a18fb08b48 Switch py39 jobs to use py3-constraints.txt
Signed-off-by: Tim Burke <tim.burke@gmail.com>
Change-Id: I6fb806d299fc30f6ceaeba78cf3a810298e94f26
2025年08月28日 14:09:56 -07:00
Zuul
e10c2bafcb Merge "proxy-logging: create field for access_user_id" 2025年08月26日 03:43:46 +00:00
Vitaly Bordyug
32eaab20b1 proxy-logging: create field for access_user_id
Added the new field to be able to log the access key during the
s3api calls, while reserving the field to be filled with auth relevant
information in case of other middlewares. Added respective code to
the tempauth and keystone middlewares.
Since s3api creates a copy of the environ dict for the downstream
request object when translating the s3req.to_swift_req the environ
dict that is seen/modifed in other mw module is not the same instance
seen in proxy-logging - using mutable objects get transfered into the
swift_req.environ.
Change the assert in test_proxy_logging from "the last field" to
the index 21 in the interests of maintainability.
Also added some regression tests for object, bucket and s3 v4 apis and
updated the documentation with the details about the new field.
Signed-off-by: Vitaly Bordyug <vbordug@gmail.com>
Change-Id: I0ce4e92458e2b05a4848cc7675604c1aa2b64d64
2025年08月26日 01:14:37 +00:00
Tim Burke
aa3a4eeb27 docs: Fix python3 package names
Closes-Bug: #2120783
Signed-off-by: Tim Burke <tim.burke@gmail.com>
Change-Id: Id175329d717bb4959def8b43765fec668aa26696
2025年08月22日 09:02:01 -07:00
Zuul
457af40c9b Merge "s3api compat tests: stop asserting DisplayName in Owner" 2025年08月22日 15:51:48 +00:00
Alistair Coles
c4cc83c5e7 s3api compat tests: stop asserting DisplayName in Owner
S3 stopped returning DisplayNamme in the Owner field of object
listings [1], so the tests need to stop asserting that it is present.
Further work is needed to drop DisplayName from the Swift s3api
responses [2].
[1] https://docs.aws.amazon.com/AmazonS3/latest/API/API_Owner.html
[2] https://bugs.launchpad.net/swift/+bug/2120622
Change-Id: Ia915a65313394910c74ae826c912b5549e833a7b
Signed-off-by: Alistair Coles <alistairncoles@gmail.com>
2025年08月22日 14:42:34 +01:00
Tim Burke
81df05a9c4 checksums: Ignore broken pyeclib installs
The RuntimeError gives more of a hint than the TypeError, but we haven't
really solved the issue. If there's a busted pyeclib install, it's safe
to assume it won't have ISA-L alongside it; just proceed assuming it's
not available.
Closes-Bug: #2120591
Related-Change: I64a85eb739fb72efe41f1ee829e463167246b793
Co-Authored-By: Alistair Coles <alistairncoles@gmail.com>
Signed-off-by: Tim Burke <tim.burke@gmail.com>
Change-Id: I2791566b208327b1fb536fb56a363337ab3f3941
2025年08月21日 08:42:05 -07:00
Zuul
dfab57be74 Merge "Revert "Remove unused MANIFEST.in"" 2025年08月20日 21:08:31 +00:00
Tim Burke
4d2426591e CI: Stop using bionic
In order to continue testing on py37, start using pyenv to install it.
Signed-off-by: Tim Burke <tim.burke@gmail.com>
Change-Id: Ida8be4477116d3b44e3d7b470a183d2298e2d3d5
2025年08月19日 09:43:51 -07:00
Zuul
28a56e3f1b Merge "zuul: run py3.13 unit tests in the gate" 2025年08月16日 03:18:30 +00:00
Zuul
c1d34baa78 Merge "Timestamp: fix inconsistent raw and normal values" 2025年08月15日 18:45:52 +00:00
Zuul
fa3a75b73d Merge "checksum.py: fail gracefully if pyeclib is broken" 2025年08月15日 14:44:44 +00:00
Tim Burke
de81a844f3 Revert "Remove unused MANIFEST.in"
This reverts commit 33b89492eb.
Reason for revert: Some packaging workflows still need this.
Closes-Bug: #2120590
Signed-off-by: Matthew Oliver <matt@oliver.net.au>
Change-Id: I5cfb8e6412adea30a1a21ce20f6a72c30dfbfac3
2025年08月15日 12:00:17 +10:00
Alistair Coles
7f3e761295 zuul: run py3.13 unit tests in the gate
The related change added a py3.13 job tho the check pipeline but not
the gate. This patch adds it to the gate too.
Change-Id: Ie7e676e7bb2e5f975b560c083432ce6814d38252
Related-Change: Ib797f73134c8fa5ef0dc66aeddf06adfa50ed7d4
Signed-off-by: Alistair Coles <alistairncoles@gmail.com>
2025年08月14日 15:41:38 +01:00
Alistair Coles
5b2e4e00c1 ssync unit test: fix intermittent failure
ssync unit tests would sometimes fail when making assertions about the
ssync receiver log messages. Test runner output would show that the
messages were eventually being logged. However, the assertions could
be made before the ssync receiver request thread had completed.
A trampoline had been previously been used to workaround this, but
that is clearly insufficient. The author found that increasing the
trampoline interval would help reduce the rate of failures, but not
eliminate them.
This patch introduces a custom GreenPool for the unit test wsgi object
server so that tests can deterministically wait for the receiver
request handling thread to exit before making assertions.
Closes-Bug: #212065
Change-Id: I09ad8bb1becae46a78902d1d384a9f27a3d54b38
Signed-off-by: Alistair Coles <alistairncoles@gmail.com>
2025年08月14日 15:33:50 +01:00