30d74af6534b754e6ad9bfdcbff4ec494277ca83
5252 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
Alistair Coles
|
30d74af653 |
Insert versioned_writes in correct pipeline position
If not explicitly configured the versioned_writes middleware should be auto-inserted in the pipeline after slo and dlo, which is where the versioned_writes filter section's comments say it should be in proxy-server.conf-sample. At the moment it can end up being placed ahead of slo and dlo if they have been explicitly configured, which results in the linked bug manifesting. Closes-Bug: #1537042 Change-Id: I6ac95a331f4ef0d4887311940acc6f8bc00fb4eb |
||
|
Jenkins
|
0e91aa8368 | Merge "Expose token expiration time in tempauth auth response" | ||
|
Jenkins
|
222649de45 | Merge "Allow smaller segments in static large objects" | ||
|
Jenkins
|
fcdb2fa2a1 | Merge "Container-Sync to iterate only over synced containers" 2.6.0 | ||
|
Jenkins
|
702022d7da | Merge "remove unneeded duplicate dict keys" | ||
|
Jenkins
|
b49ddf847d | Merge "Stop overriding builtin range" | ||
|
Jenkins
|
4634153c8b | Merge "Validate X-Timestamps" | ||
|
Jenkins
|
213acb289a | Merge "authors and changelog updates for 2.6.0" | ||
|
Jenkins
|
55fee9415a | Merge "Bump eventlet min version to 0.17.4" | ||
|
Jenkins
|
67235901ff | Merge "Fix memory/socket leak in proxy on truncated SLO/DLO GET" | ||
|
Jenkins
|
c804be26e3 | Merge "Fix a comment's indentation" | ||
|
Jenkins
|
994f3a7370 | Merge "Deleted comment about part power in FakeRing" | ||
|
Jenkins
|
6bb3325f31 | Merge "Look for device holes that can be reused when adding new device." | ||
|
Jenkins
|
66076b595b | Merge "Add more description for write_affinity_node_count parameter in the doc." | ||
|
Jenkins
|
3d7cac02b5 | Merge "Use the correct split_path in handle_request" | ||
|
Tim Burke
|
e13a03c379 |
Stop overriding builtin range
Change-Id: I315f8b554bb9e96659b455f4158f074961bd6498 |
||
|
John Dickinson
|
0a404def7d |
remove unneeded duplicate dict keys
Change-Id: I926d7aaa9df093418aaae54fe26e8f7bc8210645 |
||
|
John Dickinson
|
221f94fdd3 |
authors and changelog updates for 2.6.0
Change-Id: Idd0ff9e70abc0773be183c37cd6125fe852da7c0 |
||
|
Samuel Merritt
|
58359269b0 |
Fix memory/socket leak in proxy on truncated SLO/DLO GET
When a client disconnected while consuming an SLO or DLO GET response, the proxy would leak a socket. This could be observed via strace as a socket that had shutdown() called on it, but was never closed. It could also be observed by counting entries in /proc/<pid>/fd, where <pid> is the pid of a proxy server worker process. This is due to a memory leak in SegmentedIterable. A SegmentedIterable has an 'app_iter' attribute, which is a generator. That generator references 'self' (the SegmentedIterable object). This creates a cyclic reference: the generator refers to the SegmentedIterable, and the SegmentedIterable refers to the generator. Python can normally handle cyclic garbage; reference counting won't reclaim it, but the garbage collector will. However, objects with finalizers will stop the garbage collector from collecting them* and the cycle of which they are part. For most objects, "has finalizer" is synonymous with "has a __del__ method". However, a generator has a finalizer once it's started running and before it finishes: basically, while it has stack frames associated with it**. When a client disconnects mid-stream, we get a memory leak. We have our SegmentedIterable object (call it "si"), and its associated generator. si.app_iter is the generator, and the generator closes over si, so we have a cycle; and the generator has started but not yet finished, so the generator needs finalization; hence, the garbage collector won't ever clean it up. The socket leak comes in because the generator *also* refers to the request's WSGI environment, which contains wsgi.input, which ultimately refers to a _socket object from the standard library. Python's _socket objects only close their underlying file descriptor when their reference counts fall to 0***. This commit makes SegmentedIterable.close() call self.app_iter.close(), thereby unwinding its generator's stack and making it eligible for garbage collection. * in Python < 3.4, at least. See PEP 442. ** see PyGen_NeedsFinalizing() in Objects/genobject.c and also has_finalizer() in Modules/gcmodule.c in Python. *** see sock_dealloc() in Modules/socketmodule.c in Python. See sock_close() in the same file for the other half of the sad story. This closes CVE-2016-0738. Closes-Bug: 1493303 Co-Authored-By: Kota Tsuyuzaki <tsuyuzaki.kota@lab.ntt.co.jp> Change-Id: Ib86c4c45641485ce1034212bf6f53bb84f02f612 |
||
|
Samuel Merritt
|
bc4b298b6e |
Fix a comment's indentation
Change-Id: I34514525b606cf82767ddce7769bc42fa5457717 |
||
|
Sivasathurappan Radhakrishnan
|
3a0486e532 |
Deleted comment about part power in FakeRing
Deleted comment about parameter part power in Class FakeRing as its behavior got dropped in I8bfc388a04eff6491038991cdfd7686c9d961545. Change-Id: Iec7d2565a77e48493b0056021066d8d8eab65d0b Closes-Bug: #1488704 |
||
|
John Dickinson
|
999479f9b1 |
Bump eventlet min version to 0.17.4
IPv6 support in Swift is dependent on IPv6 support in eventlet. eventlet itself only claims support for IPv6 post v0.17 (https://github.com/eventlet/eventlet/issues/8). This update matches the OpenStack global requirements version. Change-Id: I9d8433cdd3bf7d7a93b8f50b991cc21721a80d22 |
||
|
Jenkins
|
b9fd530657 | Merge "Sleep enough for trampoline" | ||
|
Christopher Bartz
|
133a3ea601 |
Use the correct split_path in handle_request
Change-Id: I86d423309f0b2091ee2e82b2245caf925b6a75ef Closes-Bug: #1528189 |
||
|
Tim Burke
|
bf10974cde |
Expose token expiration time in tempauth auth response
Previously, we gave no indication of when a token would expire. Users would have to just use it until it stopped working, then re-auth. Now, a successful auth response will include a new header, X-Auth-Token-Expires, with the number of seconds remaining until the token is invalid. This allows the client to attempt to re-auth before sending a request that will definitely fail. For comparison, swauth already uses the X-Auth-Token-Expires header with identical semantics. Additionally, Keystone (v2 and v3) already exposes expiration times in its JSON responses. The security impact should be minimal. Change-Id: I5a4a74276bc0df6dda94e4bc150065c0d77de0eb |
||
|
Jenkins
|
6a473e3d7b | Merge "Imported Translations from Zanata" | ||
|
Jenkins
|
b46209e7a0 | Merge "Allow to change auditor sleep interval in config" | ||
|
OpenStack Proposal Bot
|
47e226418b |
Imported Translations from Zanata
For more information about this automatic import see: https://wiki.openstack.org/wiki/Translations/Infrastructure Change-Id: Ic416c9afc8a1c76f552803a7c70fc905eda7b3cb |
||
|
Jenkins
|
4db7e2e2e4 | Merge "Speed up get_more_nodes() when there is an empty zone" | ||
|
Jenkins
|
5b35235200 | Merge "Drop python 2.6 support" | ||
|
Jenkins
|
f138535854 | Merge "Remove some Python 2.6 leftovers" | ||
|
Jenkins
|
7c94b6bfe1 | Merge "Show UTC time in swift-recon." | ||
|
Samuel Merritt
|
5d449471b1 |
Remove some Python 2.6 leftovers
Change-Id: I798d08722c90327c66759aa0bb4526851ba38d41 |
||
|
Samuel Merritt
|
3c0cf549f1 |
Speed up get_more_nodes() when there is an empty zone
The ring has some optimizations in get_more_nodes() so that it can
find handoffs that span all the regions/zones/et cetera and then stop
looking. The stopping is the important part.
Previously, it would quickly find a handoff in each unused region,
then spend way too long looking for more unused regions; the same was
true for zones, IPs, and so on. Thus, in commit
|
||
|
keliang
|
70047709fc |
Drop python 2.6 support
Change-Id: Id6329c863dacb189fccfc304453ed7b6f9607c14 |
||
|
Jenkins
|
8460ddd607 | Merge "Make object-auditor storage-policy-aware" | ||
|
Ondřej Nový
|
a4c2fe95ab |
Allow to change auditor sleep interval in config
Change-Id: Ic451c5e0b686509f8982ed1bf65a223a2d77b9a0 |
||
|
Ondřej Nový
|
edc823e803 |
Show UTC time in swift-recon.
It's not consistent now for example local time in replication part and UTC time at begging of line. Use _ptime in swift-recon for all time printing and this function returns UTC now. Change-Id: I732d9851db157130a08e825e8093b7e244b63e9c |
||
|
Tim Burke
|
fa5b32d279 |
Make object-auditor storage-policy-aware
Previously, the object-auditor would always use a (replication) DiskFileManager when walking through AuditLocations, which would cause it to skip EC fragment archives with a warning like: Unexpected file <hash_path>/1452557187.03610#3.data: Invalid Timestamp value in filename '1452557187.03610#3.data' Now, the AuditLocation's policy will be used to find an appropriate manager to get the diskfile. Additionally, several .commit()s were added to the auditor tests so the .durable will be written, which is required when auditing EC fragment archives. Change-Id: I960e7d696fd9ad704ca1872b4ac821f9078838c7 Closes-Bug: 1533002 |
||
|
Jenkins
|
f7c8a1834e | Merge "Functional tests for if-match with multiple etags" | ||
|
Jenkins
|
dd405d9dd4 | Merge "Fix ClientException handling in Container Sync" | ||
|
Jenkins
|
5961c5f7fb | Merge "fixups for ipv6 memcache_servers docs" | ||
|
Jenkins
|
00a4e2ce4b | Merge "Install liberasurecode packages in SAIO." | ||
|
Clay Gerrard
|
3347646023 |
fixups for ipv6 memcache_servers docs
Change-Id: I20d91c1e276014eaf210fa9eb43788bc17f4e8df |
||
|
Jenkins
|
a66e5733dd | Merge "Print min_part_hours lockout time remaining" | ||
|
Jenkins
|
3077639d3f | Merge "swift-init: New option kill-after-timeout" | ||
|
Samuel Merritt
|
d5ff5447be |
Install liberasurecode packages in SAIO.
Change-Id: If673afa2b61a3e388612debf4860d561960963a3 |
||
|
Jonathan Hinson
|
4ffc4ba411 |
Functional tests for if-match with multiple etags
Multiple etags can be provided on an if-match or if-none-match request. This is currently being tested in the unit tests, but not in the functional tests. Since these etags can be modified by middleware, we need functional tests to assert multiple-etag requests are handled correctly. Change-Id: Idc409c85e8aa82b59dc2bc28af6ca2617de82699 |
||
|
Jenkins
|
cf94d36bbf | Merge "Add note COPY with conditional headers" | ||
|
Tim Burke
|
e6194113a3 |
Validate X-Timestamps
Previously, attempting to PUT a new object with an X-Timestamp header less than or equal to zero (ie, for a timestamp on or before 1970年01月01日 00:00:00) would cause the object-server to 500. While we're at it, cap X-Timestamp at 9999999999 (2286年11月20日 17:46:40) so we don't get an eleventh digit before the decimal point. Closes-Bug: 1532471 Change-Id: I23666ec8a067d829eaf9bfe54bd086c320b3429e |