Merge "Close ECAppIter's sub-generators before propagating GeneratorExit"
This commit is contained in:
commit
c49f71585b
@ -919,6 +919,7 @@ class ResumingGetter(object):
|
||||
if nchunks % 5 == 0:
|
||||
sleep()
|
||||
|
||||
part_iter = None
|
||||
try:
|
||||
while True:
|
||||
start_byte, end_byte, length, headers, part = \
|
||||
@ -930,9 +931,12 @@ class ResumingGetter(object):
|
||||
'entity_length': length, 'headers': headers,
|
||||
'part_iter': part_iter}
|
||||
self.pop_range()
|
||||
except GeneratorExit:
|
||||
if part_iter:
|
||||
part_iter.close()
|
||||
raise
|
||||
except StopIteration:
|
||||
req.environ['swift.non_client_disconnect'] = True
|
||||
return
|
||||
|
||||
except ChunkReadTimeout:
|
||||
self.app.exception_occurred(node[0], _('Object'),
|
||||
|
@ -2001,7 +2001,7 @@ class TestECObjController(BaseObjectControllerMixin, unittest.TestCase):
|
||||
try:
|
||||
resp.body
|
||||
except ECDriverError:
|
||||
pass
|
||||
resp._app_iter.close()
|
||||
else:
|
||||
self.fail('invalid ec fragment response body did not blow up!')
|
||||
error_lines = self.logger.get_lines_for_level('error')
|
||||
|
@ -5620,9 +5620,8 @@ class TestObjectController(unittest.TestCase):
|
||||
|
||||
# read most of the object, and disconnect
|
||||
fd.read(10)
|
||||
fd.close()
|
||||
sock.close()
|
||||
sleep(0)
|
||||
sock.fd._sock.close()
|
||||
sleep(0.1)
|
||||
|
||||
# check for disconnect message!
|
||||
expected = ['Client disconnected on read'] * 2
|
||||
@ -5678,8 +5677,7 @@ class TestObjectController(unittest.TestCase):
|
||||
exp = 'HTTP/1.1 200'
|
||||
self.assertEqual(headers[:len(exp)], exp)
|
||||
fd.read(1)
|
||||
fd.close()
|
||||
sock.close()
|
||||
sock.fd._sock.close()
|
||||
# Make sure the GC is run again for pythons without reference
|
||||
# counting
|
||||
for i in range(4):
|
||||
|
Loading…
x
Reference in New Issue
Block a user