X-Delete-After: 1 is known to be flakey; use 2 instead.
When the proxy receives an X-Delete-After header, it automatically
converts it to an X-Delete-At header based on the current time. So far,
so good. But in normalize_delete_at_timestamp we convert our
time.time() + int(req.headers['X-Delete-After'])
to a string representation of an integer and in the process always round
*down*. As a result, we lose up to a second worth of object validity,
meaning the object server can (rarely) respond 400, complaining that the
X-Delete-At is in the past.
Currently the functional tests fail if the storage_url contains a quoted
IPv6 address because we try to split on ':'.
But actually we don't need to split hostname and port only in order to
combine it back together lateron. Use the standard urlparse() function
instead and work with the 'netloc' part of the URL which keeps hostname
and port together.
commit e501ac7d2be5c11b2ed0005885c84023054ec041
Author: Matthew Oliver <email address hidden>
Date: Thu Sep 3 12:19:05 2015 +1000
Fix memcached exception out of range stacktrace
When a memecached server goes offline in the middle of a
MemcahceRing (swift memcache client) session then a request
to memcached returns nothing and the client inside swift
leaves an "IndexError: list index out of range" stacktrace.
This change corrects that in all the places of MemcacheRing
that is susceptible to it, and added some tests to stop
regression.
Clay added a diff to the bug that pretty much did the same
thing I did, so I'll co-author him.
commit 23219664564d1b5a7ba02bbf8309ec699ab7a4cb
Author: Kota Tsuyuzaki <email address hidden>
Date: Fri Jun 30 02:03:48 2017 -0700
Accept a trade off of dispersion for balance
... but only if we *have* to!
During the initial gather for balance we prefer to avoid replicas on
over-weight devices that are already under-represented in any of it's
tiers (i.e. if a zone has to have at least one, but may have as many of
two, don't take the only replica). Instead we hope by going for
replicas on over-weight devices that are at the limits of their
dispersion we might have a better than even chance we find a better
place for them during placement!
This normally works on out - and especially so for rings which can
disperse and balance. But for existing rings where we'd have to
sacrifice dispersion to improve balance the existing optimistic gather
will end up refusing to trade dispersion for balance - and instead get
stuck without solving either!
You should always be able to solve for *either* dispersion or balance.
But if you can't solve *both* - we bail out on our optimistic gather
much more quickly and instead just focus on improving balance. With
this change, the ring can get into balanced (and un-dispersed) states
much more quickly!
This was causing some headaches over on feature/deep where a __eq__
wasn't working as expected because neither self nor other was an
instance of the class we thought we were using. Apparently, this
also fixes some issues when using fake_syslog = True?
There are two other places that we use reload_module, in
test_db_replicator and test_manager, but the monkey patching isn't
nearly as straight-forward.
Reviewed: https:/ /review. openstack. org/508700 /git.openstack. org/cgit/ openstack/ swift/commit/ ?id=0c75ddf6fe5 a4843fe60836b40 2f27cb1b83d8c5
Committed: https:/
Submitter: Zuul
Branch: feature/deep
commit 93fc9d2de86f37f 62b1d6768600d05 51e1b72fb6
Author: Alistair Coles <email address hidden>
Date: Wed Sep 27 16:35:27 2017 +0100
Add cautionary note re delay_reaping in account- server. conf-sample
Change-Id: I2c3eea78332133 8316eecf467d30b a0b3217256c
Related-Bug: #1514528
commit c6aea4b3730c937 c41815831a7b4d6 0ff2899fcb
Author: Tim Burke <email address hidden>
Date: Wed Sep 27 19:19:53 2017 +0000
Fix intermittent failure in test_x_delete_after
X-Delete-After: 1 is known to be flakey; use 2 instead.
When the proxy receives an X-Delete-After header, it automatically delete_ at_timestamp we convert our
converts it to an X-Delete-At header based on the current time. So far,
so good. But in normalize_
time.time() + int(req. headers[ 'X-Delete- After'] )
to a string representation of an integer and in the process always round
*down*. As a result, we lose up to a second worth of object validity,
meaning the object server can (rarely) respond 400, complaining that the
X-Delete-At is in the past.
Change-Id: Ib5e5a48f5cbed0 eade8ba3bca96b2 6c82a9f9d84 33897dd74071027 a739eaa2c5c c415a92fa284a1e a1eda458581 a278baa0759fc0b faa1aff2d0d
Related-Change: I643be9af8f054f
Related-Change: I10d3b9fcbefff3
Related-Change: Ifdb1920e5266aa
Related-Bug: #1597520
Closes-Bug: #1699114
commit 5c76b9e691166ac c1f7b8483aaa398 0ebc70bd3a
Author: Alistair Coles <email address hidden>
Date: Wed Sep 27 14:11:14 2017 +0100
Add concurrent_gets to proxy.conf man page
Change-Id: Iab1beff4899d09 6936c0e5915f3ec 32364b3e517
Closes-Bug: #1559347
commit b4f08b609005789 7ac647ba6331a4e c867b8e3b8
Author: Jens Harbott <email address hidden>
Date: Wed Sep 27 09:10:54 2017 +0000
Fix functest for IPv6 endpoints
Currently the functional tests fail if the storage_url contains a quoted
IPv6 address because we try to split on ':'.
But actually we don't need to split hostname and port only in order to
combine it back together lateron. Use the standard urlparse() function
instead and work with the 'netloc' part of the URL which keeps hostname
and port together.
Change-Id: I64589e5f2d6fb3 cebc6768dc9e4de 6264c09cbeb
Partial-Bug: 1656329
commit 53ab6f2907eff2b b90528010d881f2 f87ee02505
Author: Alistair Coles <email address hidden>
Date: Tue Sep 26 11:43:53 2017 +0100
Assert memcached connection error is logged
Follow up to [1] - change logger mocking so that we can
assert the memcached connection error is logged.
[1] Related-Change: I97c5420b4b4ecc 127e9e94e9d0f91 fbe92a5f623
Change-Id: I87cf4245082c5e 0f0705c2c14ddfc 0b5d5d89c06
commit e501ac7d2be5c11 b2ed0005885c840 23054ec041
Author: Matthew Oliver <email address hidden>
Date: Thu Sep 3 12:19:05 2015 +1000
Fix memcached exception out of range stacktrace
When a memecached server goes offline in the middle of a
MemcahceRing (swift memcache client) session then a request
to memcached returns nothing and the client inside swift
leaves an "IndexError: list index out of range" stacktrace.
This change corrects that in all the places of MemcacheRing
that is susceptible to it, and added some tests to stop
regression.
Clay added a diff to the bug that pretty much did the same
thing I did, so I'll co-author him.
Change-Id: I97c5420b4b4ecc 127e9e94e9d0f91 fbe92a5f623
Co-Authored-By: Clay Gerrard <email address hidden>
Closes-Bug: #897451
commit 23219664564d1b5 a7ba02bbf8309ec 699ab7a4cb
Author: Kota Tsuyuzaki <email address hidden>
Date: Fri Jun 30 02:03:48 2017 -0700
Accept a trade off of dispersion for balance
... but only if we *have* to!
During the initial gather for balance we prefer to avoid replicas on
over-weight devices that are already under-represented in any of it's
tiers (i.e. if a zone has to have at least one, but may have as many of
two, don't take the only replica). Instead we hope by going for
replicas on over-weight devices that are at the limits of their
dispersion we might have a better than even chance we find a better
place for them during placement!
This normally works on out - and especially so for rings which can
disperse and balance. But for existing rings where we'd have to
sacrifice dispersion to improve balance the existing optimistic gather
will end up refusing to trade dispersion for balance - and instead get
stuck without solving either!
You should always be able to solve for *either* dispersion or balance.
But if you can't solve *both* - we bail out on our optimistic gather
much more quickly and instead just focus on improving balance. With
this change, the ring can get into balanced (and un-dispersed) states
much more quickly!
Change-Id: I17ac627f94f642 11afaccad15596a 9fcab2fada2 Change- Id: Ie6e2d116b65938 edac29efa6171e2 470bb3e8e12
Related-
Closes-Bug: 1699636
Closes-Bug: 1701472
commit 69a90dcd7511756 ff72d89bb0b6f74 4e1a135456
Author: Thiago da Silva <email address hidden>
Date: Mon Sep 25 13:27:50 2017 -0400
Remove reference to EC being in beta
Closes-Bug: #1719095
Change-Id: I8051895987bf72 c8095e72b5a5210 42a13993174
Signed-off-by: Thiago da Silva <email address hidden>
commit 64d24076842559f cfc5d654eaf3a30 3b3112ea38
Author: Clay Gerrard <email address hidden>
Date: Tue Sep 19 18:11:09 2017 -0700
Follow-up test fixup
Use more literals to make test more obvious/readable - DAMP not DRY.
Change-Id: I2562085c829dbc 2c812d8e624d6b7 1a7ccee91ed Change- Id: Ie153d01479c424 2c01f48bf0ada78 c2f9b6c8ff0
Related-
commit cc17c99e73e9ddb 1768f2979074c3e c043e0a3b4
Author: Tim Burke <email address hidden>
Date: Thu Sep 21 22:25:57 2017 +0000
Stop reloading swift.common.utils in test_daemon
This was causing some headaches over on feature/deep where a __eq__
wasn't working as expected because neither self nor other was an
instance of the class we thought we were using. Apparently, this
also fixes some issues when using fake_syslog = True?
There are two other places that we use reload_module, in db_replicator and test_manager, but the monkey patching isn't
test_
nearly as straight-forward.
Change-Id: I94d6578e275219 e9687fee2f0c7cc 4f99454b77f
Related-Bug: 1704192
commit c6d00fe22f5c996 2928cfb94635a79 097d3f0c6b
Author: Tim Burke <email address hidden>
Date: Mon Sep 11 15:03:12 2017 +0000
api-ref: Fix container PUT response codes
Change-Id: I7b57b6ee709510 5399518873f8ae5 9da63cd8ce5
Closes-Bug: #1549411
commit 5e673a542401a2d 95249c3c03f2617 5214f08c79
Author: Tim Burke <email address hidden>
Date: Thu May 25 09:11:43 2017 -0700
Log deprecation warning for allow_versions
...with the hope of removing support for the option in the future.
We'll forever need to watch for X-Versions-Location in on-disk
data, though.
Change-Id: I19c4c66102aa96 df393a642dbcf98 4f77aa3f25a 01979eafefb253d 1a60b65b837
Related-Change: Ie899290b3312e2