summaryrefslogtreecommitdiff
Commit message (Collapse)AuthorAgeFilesLines
* Merge "Add cap_length helper"HEADmasterZuul2023-05-176-12/+30
|\
| * Add cap_length helperTim Burke2023-04-056-12/+30
| | | | | | | | Change-Id: Ib864c7dc6c8c7bb849f4f97a1239eb5cc04c424c
* | Merge "memcached: log user provided keys in exception error logging."Zuul2023-05-172-68/+133
|\ \
| * | memcached: log user provided keys in exception error logging.Jianjian Huo2023-05-012-68/+133
| | | | | | | | | | | | | | | | | | | | | | | | User provided keys are need to debug those tracebacks/timeouts when clients talking to memcached, in order to associate those failures with specific memcache usages within swift services. Change-Id: I07491bb4ebc3baa13cf09f64a04a61011d561409
* | | Merge "Unit test for keepalive timeout"Zuul2023-05-173-5/+102
|\ \ \
| * | | Unit test for keepalive timeoutShreeya Deshpande2023-05-103-5/+102
| |/ / | | | | | | | | | | | | | | | Create a unit test to verify client timeout for multiple requests Change-Id: I974e01cd2cb18f4ea87c3966dbf4b06bff22ed39
* | | Merge "docs: Remove references to out-dated install guides"Zuul2023-05-173-17/+1
|\ \ \
| * | | docs: Remove references to out-dated install guidesTim Burke2023-05-163-17/+1
| | | | | | | | | | | | | | | | Change-Id: Idbff951506ee2f3b288eda00217c902314393877
* | | | docs: Update versions in Getting Started docTim Burke2023-05-161-2/+2
|/ / / | | | | | | | | | Change-Id: Ibed9dc0afbdb922d06f7798bdac01db7c55b19f1
* | | Merge "testing xattr metadata with py3.8"Zuul2023-05-151-0/+33
|\ \ \
| * | | testing xattr metadata with py3.8Clay Gerrard2023-05-021-0/+33
| | | | | | | | | | | | | | | | Change-Id: Ib3c9b274bbd2e643f3febbdf54a8a43f4775944b
* | | | Merge "Properly read py2 object metadata on py3"Zuul2023-05-154-33/+256
|\ \ \ \ | |/ / /
| * | | Properly read py2 object metadata on py3Tim Burke2023-05-024-33/+256
| |/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Replicated, unencrypted metadata is written down differently on py2 vs py3, and has been since we started supporting py3. Fortunately, we can inspect the raw xattr bytes to determine whether the pickle was written using py2 or py3, so we can properly read legacy py2 meta under py3 rather than hitting a unicode error. Closes-Bug: #2012531 Change-Id: I5876e3b88f0bb1224299b57541788f590f64ddd4
* | | Merge "disable requests_mock pytest plugin"Zuul2023-05-121-1/+1
|\ \ \
| * | | disable requests_mock pytest pluginClay Gerrard2023-05-101-1/+1
| |/ / | | | | | | | | | | | | | | | While we use requests-mock, we don't need the pytest plugin. Change-Id: If14e4d2c1af2efcbc99e9b6fe10973a7eb94d589
* | | Merge "Sharder: add timing metrics for individual steps and total time spent."Zuul2023-05-102-0/+103
|\ \ \
| * | | Sharder: add timing metrics for individual steps and total time spent.Jianjian Huo2023-05-032-0/+103
| |/ / | | | | | | | | | Change-Id: Ie2a8e4eced6688e5a98aa37c3c7b0c13fd2ddeee
* | | Merge "more explicit catch"Zuul2023-05-091-2/+3
|\ \ \
| * | | more explicit catchClay Gerrard2023-05-091-2/+3
| | | | | | | | | | | | | | | | Change-Id: I9fdc74d26fd830f463c077c912cdcf00eaab1dfa
* | | | Merge "backend_ratelimit: Tighten blanket exception handling"Zuul2023-05-091-3/+4
|\ \ \ \ | |/ / /
| * | | backend_ratelimit: Tighten blanket exception handlingTim Burke2023-05-051-3/+4
| |/ / | | | | | | | | | | | | | | | | | | As it was, it would hide issues in the logging or ratelimiter implementations. Change-Id: I9e557442401ef17b753f45b9e1cb181e71784ccf
* | | Merge "wsgi: Add keepalive_timeout option"Zuul2023-05-093-0/+14
|\ \ \ | |/ / |/| |
| * | wsgi: Add keepalive_timeout optionTim Burke2023-04-183-0/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clients sometimes hold open connections "just in case" they might later pipeline requests. This can cause issues for proxies, especially if operators restrict max_clients in an effort to improve response times for the requests that *do* get serviced. Add a new keepalive_timeout option to give proxies a way to drop these established-but-idle connections without impacting active connections (as may happen when reducing client_timeout). Note that this requires eventlet 0.33.4 or later. Change-Id: Ib5bb84fa3f8a4b9c062d58c8d3689e7030d9feb3
* | | Merge "Log (Watchdog's) Timeouts with duration"Zuul2023-05-013-20/+28
|\ \ \
| * | | Log (Watchdog's) Timeouts with durationClay Gerrard2023-04-283-20/+28
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ... and clean up WatchDog start a little. If this pattern proves useful we could consider extending it. Change-Id: Ia85f9321b69bc4114a60c32a7ad082cae7da72b3
* | | | Merge "Don't monkey patch logging on import"Zuul2023-04-286-19/+108
|\ \ \ \
| * | | | Don't monkey patch logging on importChetan Mishra2023-04-286-19/+108
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Previously swift.common.utils monkey patched logging.thread, logging.threading, and logging._lock upon import with eventlet threading modules, but that is no longer reasonable or necessary. With py3, the existing logging._lock is not patched by eventlet, unless the logging module is reloaded. The existing lock is not tracked by the gc so would not be found by eventlet's green_existing_locks(). Instead we group all monkey patching into utils function and apply patching consistently across daemons and WSGI servers. Co-Authored-By: Clay Gerrard <clay.gerrard@gmail.com> Co-Authored-By: Alistair Coles <alistairncoles@gmail.com> Closes-Bug: #1380815 Change-Id: I6f35ad41414898fb7dc5da422f524eb52ff2940f
* | | | | Merge "Proxy: restructure cached listing shard ranges"Zuul2023-04-288-167/+268
|\ \ \ \ \
| * | | | | Proxy: restructure cached listing shard rangesJianjian Huo2023-04-178-167/+268
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Updating shard range cache has been restructured and upgraded to v2 which only persist the essential attributes in memcache (see Related-Change). This is the following patch to restructure the listing shard ranges cache for object listing in the same way. UpgradeImpact ============= The cache key for listing shard ranges in memcached is renamed from 'shard-listing/<account>/<container>' to 'shard-listing-v2/<account>/<container>', and cache data is changed to be a list of [lower bound, name]. As a result, this will invalidate all existing listing shard ranges stored in the memcache cluster. Co-Authored-By: Alistair Coles <alistairncoles@gmail.com> Related-Change: If98af569f99aa1ac79b9485ce9028fdd8d22576b Change-Id: I54a32fd16e3d02b00c18b769c6f675bae3ba8e01
* | | | | | Merge "proxy controller: always pass x-backend-* headers to backend"Zuul2023-04-282-10/+74
|\ \ \ \ \ \
| * | | | | | proxy controller: always pass x-backend-* headers to backendAlistair Coles2023-04-192-10/+74
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | X-Backend-* headers were previously passed to the backend server with only a subset of all request types: * all object requests * container GET, HEAD * account GET, HEAD In these cases, X-Backend-* headers were transferred to backend requests implicitly as a consequence of *all* the headers in the request that the proxy is handling being copied to the backend request. With this change, X-Backend-* headers are explicitly copied from the request that the proxy is handling to the backend request, for every request type. Note: X-Backend-* headers are typically added to a request by the proxy app or middleware, prior to creating a backend request. X-Backend-* headers are removed from client requests by the gatekeeper middleware, so clients cannot send X-Backend-* headers to backend servers. An exception is an InternalClient that does not have gatekeeper middleware, deliberately so that internal daemons such as the sharder can send X-Backend-* headers to the backend servers. Also, BaseController.generate_request_headers() is fixed to prevent accessing a None type when transfer is True but the orig_req is None. Change-Id: I05fb9a3e1c98d96bbe01da2ee28474e0f57297e6
* | | | | | | Merge "ECFragGetter: assume policy.fragment_size is non-zero"Zuul2023-04-282-27/+10
|\ \ \ \ \ \ \
| * | | | | | | ECFragGetter: assume policy.fragment_size is non-zeroAlistair Coles2023-04-262-27/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Simplify ECFragGetter by removing code that guards against the policy fragment_size being None or zero. Policy fragment_size must be > 0: the fragment_size is based on the ec_segment_size, which is verified as > 0 when constructing an EC policy. This is asserted by test_parse_storage_policies in test.unit.common.test_storage_policy.TestStoragePolicies. Also, rename client_chunk_size to fragment_size for clarity. Change-Id: Ie1efaab3bd0510275d534b5c023cb73c98bec90d
* | | | | | | | Merge "Make all config parsing case-sensitive"Zuul2023-04-283-5/+20
|\ \ \ \ \ \ \ \
| * | | | | | | | Make all config parsing case-sensitiveClay Gerrard2023-04-283-5/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This effects both daemon config parsing and paste-deploy config parsing when using conf.d. When the WSGI servers were loaded from a flat file they have always been case-sensitive. This difference was surprising (who wants anything case-insensitive?) and potentially dangerous for values like RECLAIM_AGE. UpgradeImpact: Previously the option keys in swift's configuration .ini files were sometimes parsed in a case-insensitive manner, so you could use CLIENT_TIMEOUT and the daemons would recognize you meant client_timeout. Now upper-case or mixed-case option names, such as CLIENT_TIMEOUT or Client_Timeout, will be ignored. Change-Id: Idd8e552d9fe98b84d7cee1adfa431ea3ae93345d
* | | | | | | | | Merge "ring: Centralize device normalization"Zuul2023-04-282-25/+32
|\ \ \ \ \ \ \ \ \ | |_|_|_|_|_|/ / / |/| | | | | | | |
| * | | | | | | | ring: Centralize device normalizationTim Burke2023-04-262-25/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This puts replication info in antique rings loaded with metadata_only=True. Closes-Bug: #1696837 Change-Id: Idf263a7f7a984a1307bd74040ac8f8bb1651bc79
* | | | | | | | | Merge "docs: Fix broken paste/pastedeploy links"Zuul2023-04-289-10/+10
|\ \ \ \ \ \ \ \ \
| * | | | | | | | | docs: Fix broken paste/pastedeploy linksTim Burke2023-04-279-10/+10
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Closes-Bug: #2016463 Change-Id: Id500a2429b7412823970a06e3e82b1d1646c70b8
* | | | | | | | | | Merge "tests: Fix config numbers in test_versioning_with_metadata_replication"Zuul2023-04-281-4/+4
|\ \ \ \ \ \ \ \ \ \
| * | | | | | | | | | tests: Fix config numbers in test_versioning_with_metadata_replicationTim Burke2023-04-271-4/+4
| | |/ / / / / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Closes-Bug: #2017021 Change-Id: If422f99a77245b35ab755857f9816c1e401a4e22
* | | | | | | | | | Merge "Error logs changed for ChunkWriteTimeout"Zuul2023-04-282-2/+2
|\ \ \ \ \ \ \ \ \ \ | |_|_|_|_|_|_|/ / / |/| | | | | | | | |
| * | | | | | | | | Error logs changed for ChunkWriteTimeoutShreeya Deshpande2023-04-272-2/+2
| |/ / / / / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The log message phrase 'ChunkWriteTimeout fetching fragments' implies that the timeout has occurred while getting a fragment (from the backend object server) when in fact the timeout has occurred waiting to yield the fragment to the app iter. Hence, changing message to 'ChunkWriteTimeout feeding fragments' Change-Id: Ic0813e6a9844da1130091d27e3dbe272ea871d11
* | | | | | | | | Merge "tests for wsgi/daemon config parsing"Zuul2023-04-274-7/+226
|\ \ \ \ \ \ \ \ \ | |_|/ / / / / / / |/| | / / / / / / | | |/ / / / / / | |/| | | | | |
| * | | | | | | tests for wsgi/daemon config parsingClay Gerrard2023-04-144-7/+226
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change-Id: Ibb82555830b88962cc765fc88281ca42a9ce9d9c
* | | | | | | | Merge "ECFragGetter: simplify iter_bytes_from_response_part"Zuul2023-04-272-30/+79
|\ \ \ \ \ \ \ \ | | |_|/ / / / / | |/| | | | | |
| * | | | | | | ECFragGetter: simplify iter_bytes_from_response_partAlistair Coles2023-04-262-30/+79
| | |/ / / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Refactor and add some targeted unit tests. No behavioral change. Change-Id: I153528b8a1709f3756c261cf3eb2acfd5de10f9c
* | | | | | | Merge "CI: Use [tox]requires to pin virtualenv"Zuul2023-04-262-1/+6
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | |
| * | | | | | CI: Use [tox]requires to pin virtualenvTim Burke2023-04-262-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Using an antiquated distro to keep us on an EOL'ed version of python that *just so happens* to have had support dropped for it around the same time virtualenv removed the ability to create py27 environments doesn't seem like the right way to address the problem. Make sure we also include the tox<4 pin that we're using project-wide so we don't get some nonsense about "Multiple top-level packages discovered in a flat-layout". Related-Change: https://review.opendev.org/c/openstack/swift/+/881035 Change-Id: I32a161e555179ca34d306ac37e4097611853e36b
* | | | | | | Merge "Assert ChunkWriteTimeout errors are logged"Zuul2023-04-251-0/+1
|\ \ \ \ \ \ \ | |/ / / / / / |/| | | | | |