ddb13aa5eab03b6993887eb02260b4bc0b256922
7185 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
vxlinux
|
ddb13aa5ea |
Remove redundant blank space in README.rst
Change-Id: If347476e3b9185921ff174d3f8170a1c4d0622e8 |
||
|
Zuul
|
e46739fffa | Merge "internal_client: Don't retry when we expect the same reponse" | ||
|
Zuul
|
0cf032a75f | Merge "Return HTTPServerError instead of HTTPNotFound" | ||
|
Zuul
|
e37f592f4e | Merge "Keep object-updater stats logging consistent" | ||
|
Zuul
|
2f64e31b99 | Merge "Further extract a builder method to a util function" | ||
|
Zuul
|
f07a03a93c | Merge "slo: Send ETag header in 206 responses" | ||
|
Clay Gerrard
|
d2034cd7b6 |
Keep object-updater stats logging consistent
If we're going to encapsulate the stats tracking it seems reasonable if we ever add any more metrics we can reduce the number of places we need to update log messages. Change-Id: I187cf6cfec1e0a9138b709fa298e1991aa809ec4 |
||
|
Zuul
|
22f700d1cc | Merge "Modify redirection URL and broken URL" | ||
|
Zuul
|
17eb570a6c | Merge "Improve object-updater's stats logging" | ||
|
Tim Burke
|
cd2c73fd95 |
internal_client: Don't retry when we expect the same reponse
This boils down to 404, 412, or 416; or 409 when we provided an X-Timestamp. This means, among other things, that the expirer won't issue 3 DELETEs every cycle for every stale work item. Related-Change: Icd63c80c73f864d2561e745c3154fbfda02bd0cc Change-Id: Ie5f2d3824e040bbc76d511a54d1316c4c2503732 |
||
|
Zuul
|
840e2c67db | Merge "Don't make async_pendings during object expiration" | ||
|
Zuul
|
3e56c2d738 | Merge "Remove old post-as-copy leftovers from tests." | ||
|
Zuul
|
716ef714b4 | Merge "Recenter builder test expectation around random variance" | ||
|
Zuul
|
5ae9a45a63 | Merge "Fix InternalClient to drain response body if the request fails" | ||
|
chengebj5238
|
222df91857 |
Modify redirection URL and broken URL
Change-Id: I9a04cb2fbe61e1fbd8185ab2fac9abbcea4d55cc |
||
|
Zuul
|
9ddd833dfc | Merge "Preserve expiring object behaviour with old proxy-server" | ||
|
Zuul
|
edd20392b2 | Merge "Fix intermittent unit test failure" | ||
|
Tim Burke
|
d1656e3349 |
slo: Send ETag header in 206 responses
Why weren't we doing that before?? The etag should be the same as for GET/HEAD, and by sending it, we can assure resuming clients that they're downlading the same object even if they didn't include an If-Match header. Change-Id: I4ccbd1ae3a909ecb4606ef18211d1b868f5cad86 Related-Change: Ic11662eb5c7176fbf422a6fc87a569928d6f85a1 |
||
|
Clay Gerrard
|
88eea33ccd |
Recenter builder test expectation around random variance
... in order to make the test pass with more seeds and fail less frequently in the gate. Change-Id: I059e80af87fd33a3b6c0731fbad62e035215eca5 |
||
|
Samuel Merritt
|
f64c00b00a |
Improve object-updater's stats logging
The object updater has five different stats, but its logging only told you two of them (successes and failures), and it only told you after finishing all the async_pendings for a device. If you have a cluster that's been sick and has millions upon millions of async_pendings laying around, then your object-updaters are frustratingly silent. I've seen one cluster with around 8 million async_pendings per disk where the object-updaters only emitted stats every 12 hours. Yes, if you have StatsD logging set up properly, you can go look at your graphs and get real-time feedback on what it's doing. If you don't have that, all you get is a frustrating silence. Now, the object updater tells you all of its stats (successes, failures, quarantines due to bad pickles, unlinks, and errors), and it tells you incremental progress every five minutes. The logging at the end of a pass remains and has been expanded to also include all stats. Also included is a small change to what counts as an error: unmounted drives no longer do. The goal is that only abnormal things count as errors, like permission problems, malformed filenames, and so on. These are things that should never happen, but if they do, may require operator intervention. Drives fail, so logging an error upon encountering an unmounted drive is not useful. Change-Id: Idbddd507f0b633d14dffb7a9834fce93a10359ab |
||
|
Samuel Merritt
|
d924fa7599 |
Remove old post-as-copy leftovers from tests.
Since commit
|
||
|
Alistair Coles
|
dfa0c4e604 |
Preserve expiring object behaviour with old proxy-server
The related change [1] causes expiring object records to no longer be created if the X-Delete-At-Container header is not sent to the object server, but old proxies prior to [2] (i.e. releases prior to 1.9.0) did not send this header. The goal of [1] can be alternatively achieved by making expiring object record creation be conditional on the X-Delete-At-Host header. [1] Related-Change: I20fc2f42f590fda995814a2fa7ba86019f9fddc1 [2] Related-Change: Id0873a3f2198ce285fe0b0c777738eff38bc2438 Change-Id: Ia0081693f01631d3f2a59612308683e939ced76a |
||
|
Samuel Merritt
|
745581ff2f |
Don't make async_pendings during object expiration
After deleting an object, the object expirer deletes the corresponding row from the expirer queue by making DELETE requests directly to the container servers. The same thing happens after attempting to delete an object, but failing because the object has already been deleted. If the DELETE requests fail, then the expirer will encounter that row again on its next pass and retry the DELETE at that time. Therefore, it is not necessary for the object server to write an async_pending for that queue row's deletion. Currently, however, two of the object servers do write such async_pendings. Given Rc container replicas, that's 2 * Rc updates from async_pendings and another Rc from the object expirer directly. Given a typical Rc of 3, that's 9 container updates per expiring object. This commit makes the object server write no async_pendings for DELETE requests coming from the object expirer. This reduces the number of container server requests to Rc (typically 3), all issued directly from the object expirer. Closes-Bug: 1076202 Change-Id: Icd63c80c73f864d2561e745c3154fbfda02bd0cc |
||
|
Clay Gerrard
|
d707fc7b6d |
DRY out tests until the stone bleeds
Can we go deeper!? Change-Id: Ibd3b06542aa1bfcbcb71cc98e6bb21a6a67c12f4 |
||
|
Alistair Coles
|
ba8f1b1c37 |
Fix intermittent unit test failure
test_check_delete_headers_removes_delete_after was failing intermittently due to rounding of float time values. Change-Id: Ia126ad6988f387bbd2d1f5ddff0a56d457a1fc9b Closes-Bug: #1743804 |
||
|
Zuul
|
314b915179 | Merge "Minor cleanup in monitoring doc." | ||
|
Zuul
|
9e6e9fd1bf | Merge "Send correct number of X-Delete-At-* headers" | ||
|
Kota Tsuyuzaki
|
e747f94313 |
Fix InternalClient to drain response body if the request fails
If we don't drain the body, the proxy logging in the internal client pipeline will log 499 client disconnect instead of actual error response code. For error responses, we try to do the most helpful thing using swob's closing and caching response body attribute. For non-error responses which are returned to the client, we endeavour to keep the app_iter intact and unconsumed, trusting expecting the caller to do the right thing is the only reasonable interface. We must cleanly close any WSGI app_iter which we do not return to the client regardless of status code and allow the logging of the 499 if needed. Closes-Bug: #1675650 Change-Id: I455b5c38074ad0e72aa5e0b05771e193208905eb |
||
|
Zuul
|
7227d9967b | Merge "Add tests for X-Backend-Clean-Expiring-Object-Queue true" | ||
|
Zuul
|
99ec381f69 | Merge "expirer: unexpected responses don't warrant tracebacks" | ||
|
Zuul
|
80fc80fb90 | Merge "Let recon-cron work with conf.d" | ||
|
Zuul
|
3ca96bb331 | Merge "Add a note about the cost of COPY for setting metadata" | ||
|
Christopher Bartz
|
d8f9045518 |
Send correct number of X-Delete-At-* headers
Send just as many requests with X-Delete-At-* as we do X-Container-* to the object server. Furthermore, stop the object server on making an update to the expirer queue when it wasn't told to do so and remove the log warning which would have been produced. Reason: It can be the case that the number of object replicas (OR) is larger than the number of container replicas (CR) for a given storage policy (most likely in case of EC). Before this commit, only CR object servers received the x-delete-at-* headers, which means that OR - CR object servers did not receive the headers. The servers missing the header would produce a log warning and create the x-delete-at-container header and async update on their own, which could lead to a bug, if the expiring_objects_container_divisor option was misconfigured. Change-Id: I20fc2f42f590fda995814a2fa7ba86019f9fddc1 Closes-Bug: #1733588 |
||
|
Zuul
|
985bb159d2 | Merge "Update http with https" | ||
|
Tim Burke
|
cf1a1e89bb |
expirer: unexpected responses don't warrant tracebacks
If you want more information, you need to go check out the *other* node. Maybe this should be further refined to only log at debug for specific statuses like 404 and 412? Partial-Bug: 1688558 Related-Bug: 1455221 Change-Id: Ieefd8841154faba40dcf2a03abc5f056bdccd54f |
||
|
Samuel Merritt
|
56b84c9295 |
Minor cleanup in monitoring doc.
Change-Id: Ia21f8743bfd745f2579db8658624f888461c2cc2 |
||
|
Monty Taylor
|
bc6fb89951 |
Add a note about the cost of COPY for setting metadata
The pointer to using COPY to the same object as a mechanism to set only a subset of the metadata, it does not mention that doing so results in a full copy of the object in question on the backend. Add a note so it's clear that there is a tradeoff involved. Change-Id: I0c20a4909a6c3ff672f753d26cb9fb2f5f33d1f4 |
||
|
guotao
|
0d324c16de |
Update http with https
Use https instead of http for some links in readme.rst Change-Id: Idd382f58108e96129c69c6dc149c694fd7833fb3 |
||
|
Alistair Coles
|
6e394bba0a |
Add request_tries option to object-expirer.conf-sample
...and update the object-expirer man page. Change-Id: Idca1b8e3b7d5b40481af0d60477510e2557b88c0 |
||
|
Zuul
|
909e371515 | Merge "Merge repeat code for rebalance" | ||
|
Zuul
|
d7ac49e45c | Merge "Disallow x-delete-at equal to x-timestamp" | ||
|
Clay Gerrard
|
68906dac43 |
Further extract a builder method to a util function
... to make testing more targeted and obvious Related-Change-Id: I89439286b211f2c5ef19deffa77c202f48f07cf8 Change-Id: I93b99128a4fb35395e8e9caf11649e216f824fdf |
||
|
vxlinux
|
a1ae142d5b |
Merge repeat code for rebalance
There are three similar code segments in rebalance process as follows: tiers = ['cluster', 'regions', 'zones', 'servers', 'devices'] for i, tier_name in enumerate(tiers): replicas_at_tier = sum(weighted_replicas_by_tier[t] for t in weighted_replicas_by_tier if len(t) == i) if abs(self.replicas - replicas_at_tier) > 1e-10: raise exceptions.RingValidationError( '%s != %s at tier %s' % ( replicas_at_tier, self.replicas, tier_name)) I think we can encapsulate this code segment to a private function and replace those code segments with a function call Change-Id: I89439286b211f2c5ef19deffa77c202f48f07cf8 |
||
|
cheng
|
5cbd5cf303 |
Return HTTPServerError instead of HTTPNotFound
Swift allows autocreate account. It should be treat as server error instead of 404 when it fails to create account Change-Id: I726271bc06e3c1b07a4af504c3fd7ddb789bd512 Closes-bug: 1718810 |
||
|
Zuul
|
f994d99009 | Merge "Show missing branches in coverage report." | ||
|
Zuul
|
5f436c2fa5 | Merge "Use _update_x_timestamp method in object controller DELETE method" | ||
|
Zuul
|
e8bd8411c1 | Merge "Remove un-needed hack in probetest" | ||
|
Zuul
|
eaf056154e | Merge "Limit object-expirer queue updates on object DELETE, PUT, POST" | ||
|
Alistair Coles
|
35ad4e8745 |
Add tests for X-Backend-Clean-Expiring-Object-Queue true
Check that when X-Backend-Clean-Expiring-Object-Queue is true the object server does indeed call async_update. Change-Id: I0a87979147591f15349b868a12ac6dd15ac4e37f Related-Change: I4d64f4d1d107c437fd3c23e19160157fdafbcd42 |
||
|
Zuul
|
9a323e1989 | Merge "Fix socket leak on 416 EC GET responses." |