ddb13aa5eab03b6993887eb02260b4bc0b256922
Commit Graph

7185 Commits

This Branch
This Branch
All Branches
Author SHA1 Message Date
vxlinux
ddb13aa5ea Remove redundant blank space in README.rst
Change-Id: If347476e3b9185921ff174d3f8170a1c4d0622e8
2018年01月20日 17:23:35 +08:00
Zuul
e46739fffa Merge "internal_client: Don't retry when we expect the same reponse" 2018年01月19日 04:12:02 +00:00
Zuul
0cf032a75f Merge "Return HTTPServerError instead of HTTPNotFound" 2018年01月19日 03:26:14 +00:00
Zuul
e37f592f4e Merge "Keep object-updater stats logging consistent" 2018年01月18日 23:28:41 +00:00
Zuul
2f64e31b99 Merge "Further extract a builder method to a util function" 2018年01月18日 23:13:53 +00:00
Zuul
f07a03a93c Merge "slo: Send ETag header in 206 responses" 2018年01月18日 21:19:01 +00:00
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
2018年01月18日 12:09:07 -08:00
Zuul
22f700d1cc Merge "Modify redirection URL and broken URL" 2018年01月18日 19:21:23 +00:00
Zuul
17eb570a6c Merge "Improve object-updater's stats logging" 2018年01月18日 19:21:20 +00:00
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
2018年01月18日 10:16:48 -08:00
Zuul
840e2c67db Merge "Don't make async_pendings during object expiration" 2018年01月18日 14:58:04 +00:00
Zuul
3e56c2d738 Merge "Remove old post-as-copy leftovers from tests." 2018年01月18日 09:11:27 +00:00
Zuul
716ef714b4 Merge "Recenter builder test expectation around random variance" 2018年01月18日 09:11:02 +00:00
Zuul
5ae9a45a63 Merge "Fix InternalClient to drain response body if the request fails" 2018年01月18日 09:10:59 +00:00
chengebj5238
222df91857 Modify redirection URL and broken URL
Change-Id: I9a04cb2fbe61e1fbd8185ab2fac9abbcea4d55cc
2018年01月18日 17:05:10 +08:00
Zuul
9ddd833dfc Merge "Preserve expiring object behaviour with old proxy-server" 2018年01月18日 06:46:24 +00:00
Zuul
edd20392b2 Merge "Fix intermittent unit test failure" 2018年01月18日 06:45:10 +00:00
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
2018年01月17日 23:30:16 +00:00
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
2018年01月17日 15:29:46 -08:00
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
2018年01月17日 13:59:23 -08:00
Samuel Merritt
d924fa7599 Remove old post-as-copy leftovers from tests.
Since commit 1e79f828, we don't need to test with post_as_copy=True
any more since we haven't got post_as_copy at all.
Change-Id: I9c96ce0b812d877bbe11bdb50eb160d6ffa5933d
2018年01月17日 12:16:57 -08:00
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
2018年01月17日 11:42:22 -08:00
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
2018年01月17日 10:39:11 -08:00
Clay Gerrard
d707fc7b6d DRY out tests until the stone bleeds
Can we go deeper!?
Change-Id: Ibd3b06542aa1bfcbcb71cc98e6bb21a6a67c12f4
2018年01月17日 16:11:25 +00:00
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 
2018年01月17日 15:27:20 +00:00
Zuul
314b915179 Merge "Minor cleanup in monitoring doc." 2018年01月17日 14:43:36 +00:00
Zuul
9e6e9fd1bf Merge "Send correct number of X-Delete-At-* headers" 2018年01月17日 12:06:08 +00:00
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
2018年01月17日 15:30:55 +09:00
Zuul
7227d9967b Merge "Add tests for X-Backend-Clean-Expiring-Object-Queue true" 2018年01月17日 05:30:45 +00:00
Zuul
99ec381f69 Merge "expirer: unexpected responses don't warrant tracebacks" 2018年01月17日 05:30:28 +00:00
Zuul
80fc80fb90 Merge "Let recon-cron work with conf.d" 2018年01月17日 05:30:25 +00:00
Zuul
3ca96bb331 Merge "Add a note about the cost of COPY for setting metadata" 2018年01月17日 05:15:33 +00:00
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 
2018年01月17日 01:36:28 +00:00
Zuul
985bb159d2 Merge "Update http with https" 2018年01月17日 01:30:36 +00:00
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
2018年01月16日 20:30:22 +00:00
Samuel Merritt
56b84c9295 Minor cleanup in monitoring doc.
Change-Id: Ia21f8743bfd745f2579db8658624f888461c2cc2
2018年01月16日 12:02:13 -08:00
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
2018年01月16日 11:32:12 -06:00
guotao
0d324c16de Update http with https
Use https instead of http for some links in readme.rst
Change-Id: Idd382f58108e96129c69c6dc149c694fd7833fb3
2018年01月16日 14:31:27 +08:00
Alistair Coles
6e394bba0a Add request_tries option to object-expirer.conf-sample
...and update the object-expirer man page.
Change-Id: Idca1b8e3b7d5b40481af0d60477510e2557b88c0
2018年01月15日 15:29:11 +00:00
Zuul
909e371515 Merge "Merge repeat code for rebalance" 2018年01月15日 15:05:01 +00:00
Zuul
d7ac49e45c Merge "Disallow x-delete-at equal to x-timestamp" 2018年01月15日 14:10:09 +00:00
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
2018年01月15日 11:45:30 +00:00
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
2018年01月15日 11:45:00 +00:00
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
2018年01月15日 14:22:26 +08:00
Zuul
f994d99009 Merge "Show missing branches in coverage report." 2018年01月13日 11:13:27 +00:00
Zuul
5f436c2fa5 Merge "Use _update_x_timestamp method in object controller DELETE method" 2018年01月13日 10:05:06 +00:00
Zuul
e8bd8411c1 Merge "Remove un-needed hack in probetest" 2018年01月13日 09:49:21 +00:00
Zuul
eaf056154e Merge "Limit object-expirer queue updates on object DELETE, PUT, POST" 2018年01月12日 20:39:40 +00:00
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
2018年01月12日 17:26:26 +00:00
Zuul
9a323e1989 Merge "Fix socket leak on 416 EC GET responses." 2018年01月12日 12:48:43 +00:00