)]}'
{"id":"openstack%2Fpython-swiftclient~159208","triplet_id":"openstack%2Fpython-swiftclient~master~Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29","project":"openstack/python-swiftclient","branch":"master","topic":"data-retry-PS12","hashtags":[],"change_id":"Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29","subject":"Retry download of object body","status":"MERGED","created":"2015-02-25 18:01:17.000000000","updated":"2016-01-09 03:29:18.000000000","submitted":"2016-01-09 03:29:18.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":31,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"4d43f1db14da2173f6e4424e7bdcc47de75881a0","_number":159208,"virtual_id_number":159208,"owner":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":2,"date":"2016-01-09 03:29:18.000000000","post_submit":true,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},{"value":0,"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"value":0,"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},{"value":0,"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},{"value":0,"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"all":[{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":2,"date":"2016-01-08 17:26:37.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},{"value":0,"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"value":0,"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},{"value":0,"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},{"value":2,"date":"2016-01-08 18:31:59.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"all":[{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},{"value":0,"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"value":0,"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},{"value":0,"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},{"value":1,"date":"2016-01-08 18:31:59.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-02-27 15:25:51.000000000","updated_by":{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},"reviewer":{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},"state":"REVIEWER"},{"updated":"2015-11-10 14:59:03.000000000","updated_by":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"reviewer":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"state":"REVIEWER"},{"updated":"2015-11-11 22:22:14.000000000","updated_by":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"reviewer":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"state":"REVIEWER"},{"updated":"2016-01-08 17:26:37.000000000","updated_by":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"reviewer":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"state":"REVIEWER"},{"updated":"2016-01-08 18:31:59.000000000","updated_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"reviewer":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"state":"REVIEWER"},{"updated":"2016-01-09 03:29:18.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"f10cfba6cc9cc15241da8457609b9971088841d1","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-02-25 18:01:17.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"e70271d42bf85d59e4af4146ffaade5c004eccfb","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-02-25 18:04:57.000000000","message":"Patch Set 1: Workflow-1","accounts_in_message":[],"_revision_number":1},{"id":"d733027a2a5dee49a5f8a5876b39585c14ba0d34","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-02-25 19:40:34.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/08/159208/1/check/gate-python-swiftclient-python26/3037af9/ : SUCCESS in 54s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/1/check/gate-python-swiftclient-pep8/cbc6ae3/ : SUCCESS in 38s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/1/check/gate-python-swiftclient-docs/d2db4ad//doc/build/html/ : SUCCESS in 38s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/1/check/gate-python-swiftclient-python27/9555088/ : SUCCESS in 1m 05s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/1/check/gate-python-swiftclient-python34/93ee65a/ : SUCCESS in 2m 55s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse http://logs.openstack.org/08/159208/1/check/gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse/74a1125/ : SUCCESS in 24m 12s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-juno http://logs.openstack.org/08/159208/1/check/gate-tempest-dsvm-neutron-src-python-swiftclient-juno/6ebfcac/ : FAILURE in 41m 53s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/1/check/gate-python-swiftclient-pypy/ab5392e/ : SUCCESS in 2m 28s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/1/check/gate-tempest-dsvm-neutron-src-python-swiftclient/437d383/ : FAILURE in 1h 22m 50s\n- check-swift-dsvm-functional http://logs.openstack.org/08/159208/1/check/check-swift-dsvm-functional/30c5a6e/ : SUCCESS in 31m 42s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/1/check/check-swiftclient-dsvm-functional/5a694c9/ : SUCCESS in 24m 05s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"3818fe188b6819617fc3253e52a06d1236583b16","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-02-26 17:45:48.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"6018902ec3122267b97c313df846eeff5c994115","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-02-26 19:12:19.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/08/159208/2/check/gate-python-swiftclient-python26/2f0d153/ : SUCCESS in 55s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/2/check/gate-python-swiftclient-pep8/1f25f52/ : SUCCESS in 46s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/2/check/gate-python-swiftclient-docs/90e0e6e//doc/build/html/ : SUCCESS in 1m 06s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/2/check/gate-python-swiftclient-python27/d57adfb/ : SUCCESS in 54s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/2/check/gate-python-swiftclient-python34/f69b70a/ : SUCCESS in 3m 48s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse http://logs.openstack.org/08/159208/2/check/gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse/6e5a630/ : SUCCESS in 25m 46s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-juno http://logs.openstack.org/08/159208/2/check/gate-tempest-dsvm-neutron-src-python-swiftclient-juno/b149eeb/ : SUCCESS in 45m 30s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/2/check/gate-python-swiftclient-pypy/a235ca0/ : SUCCESS in 1m 55s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/2/check/gate-tempest-dsvm-neutron-src-python-swiftclient/31ad5ce/ : FAILURE in 1h 08m 03s\n- check-swift-dsvm-functional http://logs.openstack.org/08/159208/2/check/check-swift-dsvm-functional/3a3895c/ : SUCCESS in 28m 57s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/2/check/check-swiftclient-dsvm-functional/801ceab/ : SUCCESS in 24m 39s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"fc81e2aacd426b5eb035f27659b547fc6146b398","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-02-27 14:37:17.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"c9b2224899e4f22c2d8b84cb3466493a5c88c071","author":{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},"date":"2015-02-27 15:25:51.000000000","message":"Patch Set 3: Code-Review-1\n\nInline","accounts_in_message":[],"_revision_number":3},{"id":"149bea2004e3494d24617977f3ccc6fab4b5ce34","author":{"_account_id":860,"name":"Donagh McCabe","email":"donagh.mccabe@gmail.com","username":"donagh-mccabe"},"date":"2015-02-27 15:39:32.000000000","message":"Patch Set 2:\n\n(3 comments)\n\ninline","accounts_in_message":[],"_revision_number":2},{"id":"b10a2d5fe9dbd7612b138e0d121a0a19e07e8c0e","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-02-27 15:49:43.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/08/159208/3/check/gate-python-swiftclient-python26/9c63cf5/ : SUCCESS in 52s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/3/check/gate-python-swiftclient-pep8/365c449/ : SUCCESS in 49s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/3/check/gate-python-swiftclient-docs/6acfa6f//doc/build/html/ : SUCCESS in 53s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/3/check/gate-python-swiftclient-python27/c70046b/ : SUCCESS in 53s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/3/check/gate-python-swiftclient-python34/d747ecc/ : SUCCESS in 2m 39s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse http://logs.openstack.org/08/159208/3/check/gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse/cd6a897/ : SUCCESS in 24m 15s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-juno http://logs.openstack.org/08/159208/3/check/gate-tempest-dsvm-neutron-src-python-swiftclient-juno/c75bd08/ : SUCCESS in 54m 52s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/3/check/gate-python-swiftclient-pypy/eb10e63/ : SUCCESS in 1m 09s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/3/check/gate-tempest-dsvm-neutron-src-python-swiftclient/a61f80f/ : SUCCESS in 1h 06m 05s\n- check-swift-dsvm-functional http://logs.openstack.org/08/159208/3/check/check-swift-dsvm-functional/6d13fbd/ : SUCCESS in 26m 40s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/3/check/check-swiftclient-dsvm-functional/cdbcf17/ : SUCCESS in 23m 19s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"5a5307604476e782eb5e405f2bb3abda54a95754","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-02-27 16:00:35.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"abdcac5058cf8f7bdd1c1834004b4b7d305d0490","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-03-02 11:20:59.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"a36ae421398dc9a4df3921be1fe305f607f5364c","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-03-02 16:16:46.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"48b655403856e8e72c7ea9a299f81d775babc030","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-03-02 17:53:08.000000000","message":"Patch Set 4: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/08/159208/4/check/gate-python-swiftclient-python26/1dd4ec0/ : SUCCESS in 44s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/4/check/gate-python-swiftclient-pep8/abd9766/ : SUCCESS in 1m 27s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/4/check/gate-python-swiftclient-docs/4c67e95//doc/build/html/ : SUCCESS in 1m 26s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/4/check/gate-python-swiftclient-python27/dc65768/ : SUCCESS in 47s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/4/check/gate-python-swiftclient-python34/e2c6419/ : SUCCESS in 3m 00s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse http://logs.openstack.org/08/159208/4/check/gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse/0555898/ : SUCCESS in 23m 48s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-juno http://logs.openstack.org/08/159208/4/check/gate-tempest-dsvm-neutron-src-python-swiftclient-juno/f83aac6/ : FAILURE in 40m 21s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/4/check/gate-python-swiftclient-pypy/aa589b8/ : SUCCESS in 1m 30s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/4/check/gate-tempest-dsvm-neutron-src-python-swiftclient/369bc25/ : SUCCESS in 1h 04m 23s\n- check-swift-dsvm-functional http://logs.openstack.org/08/159208/4/check/check-swift-dsvm-functional/c217bfb/ : SUCCESS in 25m 18s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/4/check/check-swiftclient-dsvm-functional/d3921fc/ : SUCCESS in 23m 34s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"880244f8c3e17632affceac589b3147ecb38b5e7","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-03-02 18:06:57.000000000","message":"Patch Set 4:\n\nrecheck no bug","accounts_in_message":[],"_revision_number":4},{"id":"58c81fcbf2fbf0520835c535810a9aec6c4d8580","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-03-02 19:58:30.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/08/159208/4/check/gate-python-swiftclient-python26/3477e6c/ : SUCCESS in 48s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/4/check/gate-python-swiftclient-pep8/5f03562/ : SUCCESS in 41s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/4/check/gate-python-swiftclient-docs/fce0800//doc/build/html/ : SUCCESS in 50s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/4/check/gate-python-swiftclient-python27/c2b05fe/ : SUCCESS in 49s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/4/check/gate-python-swiftclient-python34/212554b/ : SUCCESS in 3m 39s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse http://logs.openstack.org/08/159208/4/check/gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse/a7c6df4/ : SUCCESS in 22m 19s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-juno http://logs.openstack.org/08/159208/4/check/gate-tempest-dsvm-neutron-src-python-swiftclient-juno/9484b16/ : SUCCESS in 44m 13s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/4/check/gate-python-swiftclient-pypy/4cb7d5f/ : SUCCESS in 1m 38s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/4/check/gate-tempest-dsvm-neutron-src-python-swiftclient/f1b6eb0/ : SUCCESS in 58m 52s\n- check-swift-dsvm-functional http://logs.openstack.org/08/159208/4/check/check-swift-dsvm-functional/fd5d303/ : SUCCESS in 28m 17s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/4/check/check-swiftclient-dsvm-functional/fe4ce27/ : SUCCESS in 24m 57s (non-voting)","accounts_in_message":[],"_revision_number":4},{"id":"97eb8354acd723d920375423827579cb83bb3c1f","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-03-03 12:06:12.000000000","message":"Patch Set 4: Workflow-1","accounts_in_message":[],"_revision_number":4},{"id":"e4adf64882c1f81a8688dce5f1a7bd33daf58ac1","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-03-04 16:14:58.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"d92eeec3a6aacd06818d47f7c48dfb585bf226ef","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2015-03-05 00:04:14.000000000","message":"Patch Set 5:\n\nThinking about this one... it\u0027s going to be tricky to test functionally.\n\nI\u0027m imagining a hack to GetOrHeadHandler that will just blow up if bytes_yielded_to_client \u003e X - so if you make your uploaded object big enough that it crosses that boundary a few times when you download it with this patch you should be able to watch the range requests come in and eventually get the whole object out.\n\nShould work without any extra requests if your object is small (or your X is big)\n\nShould fail reasonably if your object is big enough that the range requests eventually exhaust their retry count.\n\nDo you think that would exercise the new behavior?\n\nDo you have a diff like that - or did you do something else when you functionally tested this change?","accounts_in_message":[],"_revision_number":5},{"id":"878ace7fe46c7525e4f1923aa88e58cc0923db33","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-03-05 01:49:03.000000000","message":"Patch Set 5: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/08/159208/5/check/gate-python-swiftclient-python26/d7831d6/ : SUCCESS in 56s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/5/check/gate-python-swiftclient-pep8/c5bdba5/ : FAILURE in 43s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/5/check/gate-python-swiftclient-docs/6df8a7b//doc/build/html/ : SUCCESS in 51s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/5/check/gate-python-swiftclient-python27/973267d/ : SUCCESS in 54s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/5/check/gate-python-swiftclient-python34/06e8d59/ : SUCCESS in 3m 34s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse http://logs.openstack.org/08/159208/5/check/gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse/56191b4/ : SUCCESS in 28m 09s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-juno http://logs.openstack.org/08/159208/5/check/gate-tempest-dsvm-neutron-src-python-swiftclient-juno/523e8f3/ : SUCCESS in 38m 57s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/5/check/gate-python-swiftclient-pypy/94ce560/ : SUCCESS in 1m 51s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/5/check/gate-tempest-dsvm-neutron-src-python-swiftclient/7798984/ : SUCCESS in 57m 06s\n- check-swift-dsvm-functional http://logs.openstack.org/08/159208/5/check/check-swift-dsvm-functional/f027370/ : SUCCESS in 26m 52s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/5/check/check-swiftclient-dsvm-functional/14fc64d/ : SUCCESS in 22m 16s (non-voting)","accounts_in_message":[],"_revision_number":5},{"id":"859ee34c933e40110c4f3fe32a988c08f09a2284","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-03-05 11:32:06.000000000","message":"Patch Set 5:\n\n@Clay\n\nThanks (again) for your review.\n\n\u003e Do you have a diff like that - or did you do something else when you functionally tested this change?\n\nBoth :-)\n\nI inserted a (pretty dumb) error into the proxy server:\n\n http://paste.openstack.org/show/188982/\n\n(A small variation with a \u0027global\u0027 can allow up to N failures.)\n\nI also tested a hard kill (kill -9) of the relevant proxy-server process (ie reduced to one worker and killed that worker process).\n\nNote: I\u0027m thinking of updating the change to also handle the case where the object\u0027s data has been modified since the original start of the download and any retry -- ie detect an Etag change and fail earlier in that case.","accounts_in_message":[],"_revision_number":5},{"id":"b658c1d27010dfe8d145a2a9707adf58f4f2b226","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-03-05 17:24:28.000000000","message":"Uploaded patch set 6.","accounts_in_message":[],"_revision_number":6},{"id":"ae23c67ddce319faba01a221755d6c986e490863","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-03-05 18:19:33.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/08/159208/6/check/gate-python-swiftclient-python26/f7ca450/ : SUCCESS in 52s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/6/check/gate-python-swiftclient-pep8/4a6658f/ : SUCCESS in 43s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/6/check/gate-python-swiftclient-docs/7094e01//doc/build/html/ : SUCCESS in 51s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/6/check/gate-python-swiftclient-python27/c58b54a/ : SUCCESS in 56s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/6/check/gate-python-swiftclient-python34/c1a4eb1/ : SUCCESS in 3m 37s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse http://logs.openstack.org/08/159208/6/check/gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse/3be3679/ : SUCCESS in 22m 34s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-juno http://logs.openstack.org/08/159208/6/check/gate-tempest-dsvm-neutron-src-python-swiftclient-juno/b338dbb/ : SUCCESS in 41m 23s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/6/check/gate-python-swiftclient-pypy/58b043d/ : SUCCESS in 1m 40s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/6/check/gate-tempest-dsvm-neutron-src-python-swiftclient/3417a57/ : SUCCESS in 50m 39s\n- check-swift-dsvm-functional http://logs.openstack.org/08/159208/6/check/check-swift-dsvm-functional/99897b7/ : SUCCESS in 26m 31s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/6/check/check-swiftclient-dsvm-functional/cd9cf76/ : SUCCESS in 21m 47s (non-voting)","accounts_in_message":[],"_revision_number":6},{"id":"690caa029013ea3f7941b0f5dd240efb597cd88b","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-06-04 13:47:20.000000000","message":"Patch Set 6: Verified-1\n\nMerge Failed.\n\nThis change was unable to be automatically merged with the current state of the repository. Please rebase your change and upload a new patchset.","accounts_in_message":[],"_revision_number":6},{"id":"7297a13dd6c0e077997353f23efdaee746869cd9","author":{"_account_id":330,"name":"John Dickinson","email":"me@not.mn","username":"notmyname"},"date":"2015-10-20 21:14:02.000000000","message":"Abandoned\n\nAbanoning based on the lack of activity since the last negative review. If you want to continue working on this, please reopen this patch.","accounts_in_message":[],"_revision_number":6},{"id":"ea4ce10c8298a0b5f3b8a6271fa28ec26ceb5e62","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-11-10 14:34:16.000000000","message":"Restored","accounts_in_message":[],"_revision_number":6},{"id":"a9cd148c7651b931efe5463f209628ea454f320a","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-11-10 14:34:45.000000000","message":"Patch Set 6:\n\nMerge Failed.\n\nThis change or one of its cross-repo dependencies was unable to be automatically merged with the current state of its repository. Please rebase the change and upload a new patchset.","accounts_in_message":[],"_revision_number":6},{"id":"1d2d562da4f643ecb38ad0240af03b83afb608ab","author":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"date":"2015-11-10 14:59:03.000000000","message":"Uploaded patch set 7.","accounts_in_message":[],"_revision_number":7},{"id":"09993885da41273784d898f6d21e9d7349d78866","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-11-10 16:24:11.000000000","message":"Patch Set 7: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/08/159208/7/check/gate-python-swiftclient-python26/0450dd6/ : SUCCESS in 45s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/7/check/gate-python-swiftclient-pep8/ab16807/ : SUCCESS in 37s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/7/check/gate-python-swiftclient-docs/48bf8ec//doc/build/html/ : SUCCESS in 56s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/7/check/gate-python-swiftclient-python27/b61399d/ : SUCCESS in 52s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/7/check/gate-python-swiftclient-python34/a8ac031/ : SUCCESS in 1m 21s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/7/check/gate-python-swiftclient-pypy/2cec2e7/ : SUCCESS in 1m 26s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/7/check/gate-tempest-dsvm-neutron-src-python-swiftclient/66d3085/ : SUCCESS in 56m 12s\n- gate-swift-dsvm-functional http://logs.openstack.org/08/159208/7/check/gate-swift-dsvm-functional/0b47e0c/ : SUCCESS in 35m 26s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/7/check/gate-swiftclient-dsvm-functional/064ff25/ : SUCCESS in 36m 31s","accounts_in_message":[],"_revision_number":7},{"id":"b4812bbc04f3eb1c3fd99243344efc3efdf0f849","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-11-11 19:42:13.000000000","message":"Patch Set 7: Code-Review-1\n\n(3 comments)\n\nJust a first pass, but the change to get_object (as opposed to Connection.get_object) makes me nervous.","accounts_in_message":[],"_revision_number":7},{"id":"f2fff89b1a3215a0eb082664422b16f20773cfbd","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2015-11-11 22:22:14.000000000","message":"Patch Set 7: Code-Review-1\n\n(2 comments)\n\nidk, this isn\u0027t working for me.\n\nI\u0027m going with this for my proxy break:\n\nhttps://gist.github.com/clayg/3943802154b924f1b3bb\n\nit works exactly like i\u0027d expect when I make requests to large objects with curl...\n\nbut when I try with swiftclient - it doesn\u0027t retry anything that I can see and it fails same as master does?","accounts_in_message":[],"_revision_number":7},{"id":"864dd5f0644913a60821d81ade618785f86d622c","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-11-12 12:51:59.000000000","message":"Patch Set 7:\n\nTim, Clay,\n\nThanks for reviewing!\n\n@Clay\n\nThanks for taking the extra step and functionally testing.\n\nFWIW if I do a plain old kill of the relevant swift proxy process the retry seems to work ok.\n\nI\u0027ve swift running in devstack, with 1 worker and with parent process id (ominously) \"1984\".\n\nI kick off a download of a 1 GB object of random bytes (swift download container1 dd.1000), then do several kills:\n\n$ kill `ps --no-headers -o pid --ppid 1984`\n\nto kill the various child swift proxy worker processes.\n\nI added some debug just to be double sure the retry codepath was being hit at various points in the download.\n\nI\u0027ll need to check out the exploding iter case and get back to you!","accounts_in_message":[],"_revision_number":7},{"id":"b861dc3d95e9ab1d5b726bdafa4d63dda72a04bd","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-11-12 15:45:12.000000000","message":"Patch Set 7:\n\nOk, I applied the \"exploding iter\" patch and got it to drop the connection as expected.\n\nI had to increase the number of retries to fetch the full 1 GB successfully:\n\n$ swift --retries 350 download container1 dd.1000\n\nBut once I\u0027d done so it seemed to work ok.\n\nI verfified (by snooping the wire) that requests with range offset were being sent to the server:\n\n Hypertext Transfer Protocol\n    GET /v1/AUTH_411423405e10431fb9c47ac5b2446557/container1/dd.1000 HTTP/1.1\\r\\n\n        [Expert Info (Chat/Sequence): GET /v1/AUTH_411423405e10431fb9c47ac5b2446557/container1/dd.1000 HTTP/1.1\\r\\n]\n            [Message: GET /v1/AUTH_411423405e10431fb9c47ac5b2446557/container1/dd.1000 HTTP/1.1\\r\\n]\n            [Severity level: Chat]\n            [Group: Sequence]\n        Request Method: GET\n        Request URI: /v1/AUTH_411423405e10431fb9c47ac5b2446557/container1/dd.1000\n        Request Version: HTTP/1.1\n    Host: 10.0.0.85:8080\\r\\n\n    Accept-Encoding: identity\\r\\n\n    range: bytes\u003d770048000-\\r\\n   \u003c\u003c\u003c\u003c\u003c\n    user-agent: python-swiftclient-2.6.1.dev15\\r\\n\n    x-auth-token:xxxxxxx\\r\\n\n\n@Clay\n\nAny idea what could be causing us to see different behaviour? Thanks.","accounts_in_message":[],"_revision_number":7},{"id":"f3b082e3c770701701b9cd0b2e59e000619c95b0","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-12-11 12:07:01.000000000","message":"Patch Set 8: Patch Set 7 was rebased","accounts_in_message":[],"_revision_number":7},{"id":"a4b350968492233dc13fcaef58258f6238330889","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-12-11 13:29:28.000000000","message":"Patch Set 8: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/8/check/gate-python-swiftclient-pep8/d0d37ed/ : SUCCESS in 53s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/8/check/gate-python-swiftclient-docs/cbee985//doc/build/html/ : SUCCESS in 2m 27s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/8/check/gate-python-swiftclient-python27/380dbd8/ : SUCCESS in 54s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/8/check/gate-python-swiftclient-python34/95445d5/ : SUCCESS in 1m 55s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/8/check/gate-python-swiftclient-pypy/cd97771/ : SUCCESS in 1m 18s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/8/check/gate-tempest-dsvm-neutron-src-python-swiftclient/101abba/ : SUCCESS in 1h 18m 46s\n- gate-swift-dsvm-functional http://logs.openstack.org/08/159208/8/check/gate-swift-dsvm-functional/4a61ab5/ : SUCCESS in 32m 56s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/8/check/gate-swiftclient-dsvm-functional/7252fc0/ : SUCCESS in 20m 37s","accounts_in_message":[],"_revision_number":8},{"id":"2feae94ab544bbd31e8ead957b47820bb834018a","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2015-12-11 16:00:24.000000000","message":"Patch Set 8: Code-Review-1\n\n(4 comments)\n\nAgree with the comments on patch set 7, plus a couple of my own mean -1.\n\nBut, this does work for me when I applied Clay\u0027s diff to proxy server. See [1]. I see proxy blow up every 2MB and client issue ranged GETs in response until object is downloaded.\n\n[1] http://paste.openstack.org/show/481666/","accounts_in_message":[],"_revision_number":8},{"id":"6884eb75d3a278b278f7bf0dbac679d980a9ccff","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-12-15 17:16:19.000000000","message":"Uploaded patch set 9.","accounts_in_message":[],"_revision_number":9},{"id":"97b31b2f46ef15099fb380504c51e7f23bbb052b","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-12-15 21:22:43.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/9/check/gate-python-swiftclient-pep8/36302d2/ : SUCCESS in 24s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/9/check/gate-python-swiftclient-docs/93dbf5b//doc/build/html/ : SUCCESS in 46s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/9/check/gate-python-swiftclient-python27/475ea38/ : SUCCESS in 41s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/9/check/gate-python-swiftclient-python34/fbce805/ : SUCCESS in 1m 40s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/9/check/gate-python-swiftclient-pypy/cf85d5b/ : SUCCESS in 1m 09s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/9/check/gate-tempest-dsvm-neutron-src-python-swiftclient/b02a462/ : SUCCESS in 1h 03m 18s\n- gate-swift-dsvm-functional http://logs.openstack.org/08/159208/9/check/gate-swift-dsvm-functional/7c7139d/ : SUCCESS in 29m 59s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/9/check/gate-swiftclient-dsvm-functional/3445823/ : SUCCESS in 22m 41s","accounts_in_message":[],"_revision_number":9},{"id":"ce9d9676419d249fc43cc066240793fbb63c68fe","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-12-16 21:26:11.000000000","message":"Patch Set 9: Code-Review+1\n\nSeems sane, though I want to test with it some more before +2ing.\n\nSide note: I like what this does with busted SLOs! We used to just complain about read_length !\u003d content_length, but now we get a 409 Conflict which seems somewhat more specific.","accounts_in_message":[],"_revision_number":9},{"id":"3d6a7309441940946a99afe46b765dd24feeb41f","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-12-17 02:16:08.000000000","message":"Patch Set 9:\n\nI\u0027m a little confused on how the retry counting works. I see:\n\n * 3x 520 errors before even starting to get data, followed by\n * 7x truncated (10MB) responses, where our retry-body logic works as expected. After that, for good measure there\u0027s\n * another 520 on the *first* attempt to get bytes\u003d70000000-, but then\n * one more truncated response, before finally\n * we give up and complain that the bytes received !\u003d content length\n\nThis was with --retries\u003d10. Why didn\u0027t it fail after the fourth 520? I think the final _retry(get_object) may think it still has 10 chances to retry... is that intentional?","accounts_in_message":[],"_revision_number":9},{"id":"db76f7eeefe8d3f5e77b80d82f32456a6f10fa8c","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-12-17 11:28:00.000000000","message":"Patch Set 9:\n\n@Tim,\n\nThanks for your continued (excellent) review efforts :-)\n\nI\u0027ve been reproducing using Clay\u0027s kaboom iterator on a simple devstack install.\n\nWhat I see when downloading a 10 MB object with \"--retries 3\":\n\n $ sudo ngrep -d lo -W byline port 8080 |grep -i -e GET -e range -e HTTP\n GET /v1/AUTH_a03febe481094927a96fe367c15c347b/container1/tmp/dd.10 HTTP/1.1. # First attempt\n HTTP/1.1 200 OK.\n Accept-Ranges: bytes.\n GET /v1/AUTH_a03febe481094927a96fe367c15c347b/container1/tmp/dd.10 HTTP/1.1. # First retry\n range: bytes\u003d3080192-.\n HTTP/1.1 206 Partial Content.\n Accept-Ranges: bytes.\n Content-Range: bytes 3080192-10485759/10485760.\n GET /v1/AUTH_a03febe481094927a96fe367c15c347b/container1/tmp/dd.10 HTTP/1.1. # Second retry\n range: bytes\u003d6160384-. \n HTTP/1.1 206 Partial Content.\n Accept-Ranges: bytes.\n Content-Range: bytes 6160384-10485759/10485760.\n GET /v1/AUTH_a03febe481094927a96fe367c15c347b/container1/tmp/dd.10 HTTP/1.1. # Third (final) retry\n range: bytes\u003d9240576-.\n HTTP/1.1 206 Partial Content.\n Accept-Ranges: bytes.\n Content-Range: bytes 9240576-10485759/10485760.\n\nIf I do \"--retries 2\" I don\u0027t see the last GET and the download fails.\nThis is what I\u0027d expect.\n\n\n\u003e I think the final _retry(get_object) may think it still has 10 chances to retry... is that intentional?\n\nThat\u0027s not the intention.\n\nThe intention is you have a certain allowed number of retries (--retries), say \u00275\u0027. There are two kinds of retries: a connection retry, eg after a 401, or a data retry (if the server drops the connection during download). The sum of \u0027connection retries\u0027 and \u0027data retries\u0027 should be \u003c\u003d number of allowed retries.\n\n\n\u003e * 3x 520 errors before even starting to get data\n\u003e * 7x truncated (10MB) responses,\n\u003e * another 520 on the *first* attempt to get bytes\u003d70000000-,\n\u003e * one more truncated response,\n\nIn terms of counting retries this may be off by one?\n\n1 520: retries remaining \u003d 10\n2 520: retries remaining \u003d 9\n3 520: retries remaining \u003d 8\n1 truncated: retries remaining \u003d 7\n2 truncated: retries remaining \u003d 6\n3 truncated: retries remaining \u003d 5\n4 truncated: retries remaining \u003d 4\n5 truncated: retries remaining \u003d 3\n6 truncated: retries remaining \u003d 2\n7 truncated: retries remaining \u003d 1\n8 520: retries remaining \u003d 0\n\nSo I don\u0027t think there should have been another GET (which resulted in the final truncated response)?\n\n\nCan you tell me a little more about your test setup to help me reproduce this? (I\u0027m not sure where the 520s are coming from.)\n\nThanks.","accounts_in_message":[],"_revision_number":9},{"id":"9dde1f2adb2b3ab5269fb3b33cff6c3f4f4503c1","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2015-12-17 14:52:57.000000000","message":"Patch Set 9: Workflow-1\n\nI\u0027ve rechecked my attempt counting after Tim\u0027s review.\nIt can be off in some cases.\n\nI\u0027ll need another patch to address this.","accounts_in_message":[],"_revision_number":9},{"id":"27131ee3abe2430fce3181df0c94e2fd0c4d74d3","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-12-17 18:14:53.000000000","message":"Patch Set 9:\n\n(2 comments)\n\nI took Clay\u0027s exploding iter and rolled it into some middeware I already had laying around to make Swift less reliable (for testing https://review.openstack.org/#/c/226897/):\n\nhttps://gist.github.com/tipabu/e1a03a8486c2fa57b4bc\n\nI think I was using a max_file_size of 10000000 and failure_chance of 0.25, but you can tweak it however you like.\n\nLeft some comments inline for where I think the problem may lie...","accounts_in_message":[],"_revision_number":9},{"id":"c25e833b697f73fe69189efa06c2af161d489d35","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2016-01-05 17:02:49.000000000","message":"Uploaded patch set 10.","accounts_in_message":[],"_revision_number":10},{"id":"bd8372c5f54fb3817f3b7d1cb1e2748a45c2a4d1","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-05 19:14:01.000000000","message":"Patch Set 10: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/10/check/gate-python-swiftclient-pep8/b245002/ : SUCCESS in 39s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/10/check/gate-python-swiftclient-docs/20c4df4//doc/build/html/ : SUCCESS in 51s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/10/check/gate-python-swiftclient-python27/b4cb3a9/ : SUCCESS in 50s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/10/check/gate-python-swiftclient-python34/ee66549/ : SUCCESS in 1m 50s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/10/check/gate-python-swiftclient-pypy/dbb8f94/ : SUCCESS in 1m 20s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/10/check/gate-tempest-dsvm-neutron-src-python-swiftclient/2bc188d/ : SUCCESS in 56m 58s\n- gate-swift-dsvm-functional http://logs.openstack.org/08/159208/10/check/gate-swift-dsvm-functional/abaca18/ : SUCCESS in 31m 45s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/10/check/gate-swiftclient-dsvm-functional/1ac0e84/ : SUCCESS in 25m 26s","accounts_in_message":[],"_revision_number":10},{"id":"f74302154a6087c1658cf9be834f73abef2bfe00","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2016-01-05 20:11:17.000000000","message":"Patch Set 10: Code-Review+2\n\n(1 comment)\n\nWorks well, and the number of retries makes sense now. Left one small idea about how we can avoid setting self.attempts all over the place, but I don\u0027t quite see it as a blocker.\n\nSide note: now I rather want to fix the account/container retry logic mentioned by those TODO comments :-)","accounts_in_message":[],"_revision_number":10},{"id":"4bd449ffdd244193e6fb308601f80002de7b6a7d","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-06 04:03:19.000000000","message":"Patch Set 10: Verified-1\n\nMerge Failed.\n\nThis change or one of its cross-repo dependencies was unable to be automatically merged with the current state of its repository. Please rebase the change and upload a new patchset.","accounts_in_message":[],"_revision_number":10},{"id":"c6658f166f50a2514d10c6203c09009008a118db","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2016-01-06 12:50:15.000000000","message":"Patch Set 10:\n\n\u003e How about instead of setting this manually all over the place\n\nYup, that\u0027s a neat idea, thanks!\n\nI need to rebase anyway so I\u0027ll include that in the next patch set.","accounts_in_message":[],"_revision_number":10},{"id":"777f91c3f9aa367f0a7c28e359d4eff749cebcc7","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2016-01-06 16:26:30.000000000","message":"Uploaded patch set 11.","accounts_in_message":[],"_revision_number":11},{"id":"e975470ee3fe112d25756ad5dbacf2bc499dd714","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2016-01-06 18:43:24.000000000","message":"Patch Set 11: Code-Review+2","accounts_in_message":[],"_revision_number":11},{"id":"6b0328ef5476564f93ba32037310ab2498d493f4","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-06 20:13:59.000000000","message":"Patch Set 11: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/11/check/gate-python-swiftclient-pep8/9bfda47/ : SUCCESS in 52s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/11/check/gate-python-swiftclient-docs/c3c550b//doc/build/html/ : SUCCESS in 54s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/11/check/gate-python-swiftclient-python27/c5dd061/ : SUCCESS in 1m 53s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/11/check/gate-python-swiftclient-python34/7b1634b/ : SUCCESS in 1m 58s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/11/check/gate-python-swiftclient-pypy/63ed207/ : SUCCESS in 1m 29s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/11/check/gate-tempest-dsvm-neutron-src-python-swiftclient/1e49b74/ : SUCCESS in 1h 10m 17s\n- gate-swift-dsvm-functional http://logs.openstack.org/08/159208/11/check/gate-swift-dsvm-functional/7b27922/ : SUCCESS in 30m 28s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/11/check/gate-swiftclient-dsvm-functional/7380be5/ : SUCCESS in 22m 06s","accounts_in_message":[],"_revision_number":11},{"id":"cd119d5c085645024854b166a77b78eeae4c8cf8","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2016-01-07 18:16:54.000000000","message":"Patch Set 11: Code-Review-1\n\n(9 comments)\n\nThis works for me, I used Clay\u0027s swift proxy patch to drop connections and saw retries as expected:\n\n  swift@anc-vm-10:~/swiftclient$ swift --debug download c1 8MB_file --retries\u003d3 |\u0026 grep curl\n  DEBUG:swiftclient:REQ: curl -i http://localhost:8080/auth/v1.0 -X GET\n  DEBUG:swiftclient:REQ: curl -i http://localhost:8080/v1/AUTH_test/c1/8MB_file -X GET -H \"X-Auth-Token:  AUTH_tkb66c20f1eb0f4296bfef2760b28613fd\"\n  DEBUG:swiftclient:REQ: curl -i http://localhost:8080/v1/AUTH_test/c1/8MB_file -X GET -H \"Range: bytes\u003d3080192-\" -H \"If-Match: 96995b58d4cbf6aaa9041b4f00c7f6ae\" -H \"X-Auth-Token: AUTH_tkb66c20f1eb0f4296bfef2760b28613fd\"\n  DEBUG:swiftclient:REQ: curl -i http://localhost:8080/v1/AUTH_test/c1/8MB_file -X GET -H \"Range: bytes\u003d6160384-\" -H \"If-Match: 96995b58d4cbf6aaa9041b4f00c7f6ae\" -H \"X-Auth-Token: AUTH_tkb66c20f1eb0f4296bfef2760b28613fd\"\n\nBut -1 because of the chunk_size\u003d0 problem.\n\nThe other stuff (init _RetryBody with body.resp and the test changes) would also be worth fixing imho.\n\nDiff here [1] with suggestions to address my comments. YMMV\n\n[1] http://paste.openstack.org/show/483245/","accounts_in_message":[],"_revision_number":11},{"id":"72cd3b11c4d26927bc30ac0ddd67219b2ba3bdc1","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2016-01-08 13:42:15.000000000","message":"Uploaded patch set 12.","accounts_in_message":[],"_revision_number":12},{"id":"31295cf55b43722caef09ae525fb382ba042dee7","author":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"date":"2016-01-08 13:42:50.000000000","message":"Patch Set 11:\n\n(4 comments)","accounts_in_message":[],"_revision_number":11},{"id":"b5d1302fc3fbb5d8bef386eb19bd0dc713e47a30","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-08 14:47:20.000000000","message":"Patch Set 12: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/12/check/gate-python-swiftclient-pep8/760372c/ : SUCCESS in 51s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/12/check/gate-python-swiftclient-docs/f8feef0//doc/build/html/ : SUCCESS in 56s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/12/check/gate-python-swiftclient-python27/1469bd2/ : SUCCESS in 48s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/12/check/gate-python-swiftclient-python34/38e3df7/ : SUCCESS in 1m 23s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/12/check/gate-python-swiftclient-pypy/0f83b6f/ : SUCCESS in 1m 26s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/12/check/gate-tempest-dsvm-neutron-src-python-swiftclient/6821a78/ : SUCCESS in 54m 42s\n- gate-swift-dsvm-functional http://logs.openstack.org/08/159208/12/check/gate-swift-dsvm-functional/94ad906/ : SUCCESS in 31m 35s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/12/check/gate-swiftclient-dsvm-functional/7491a3e/ : SUCCESS in 31m 34s","accounts_in_message":[],"_revision_number":12},{"id":"9f92c8750f55d04bdca724b5eda3db0a7b2067e8","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2016-01-08 17:08:08.000000000","message":"Patch Set 12: Code-Review+1\n\n(1 comment)\n\nso close... just the typo with the param name in the docstring which should probably be fixed","accounts_in_message":[],"_revision_number":12},{"id":"220a076c54e9bbe2a2a40f6b4b79a213235f1117","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2016-01-08 17:20:08.000000000","message":"Patch Set 13: Published edit on patch set 12","accounts_in_message":[],"_revision_number":13},{"id":"72bed8653e0eda31e823512eb44dd4f4386602c8","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2016-01-08 17:26:37.000000000","message":"Patch Set 13: Code-Review+2\n\nFixed the docstring typo. LGTM.","accounts_in_message":[],"_revision_number":13},{"id":"10d9b1e16541d171161c1e3dbb890674adc1fbdf","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2016-01-08 18:31:59.000000000","message":"Patch Set 13: Code-Review+2 Workflow+1\n\nAlistair, good catch. The changes make sense to me; I think we can get away with tracking less state in _RetryBody, but I can do that as a follow-on patch later today.","accounts_in_message":[],"_revision_number":13},{"id":"2b080401e09f86459e2931da7992e97a9d53f569","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-08 19:43:35.000000000","message":"Patch Set 13: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/13/check/gate-python-swiftclient-pep8/d2da532/ : SUCCESS in 16s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/13/check/gate-python-swiftclient-docs/87a77fb//doc/build/html/ : SUCCESS in 22s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/13/check/gate-python-swiftclient-python27/e32eefb/ : SUCCESS in 27s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/13/check/gate-python-swiftclient-python34/f759025/ : SUCCESS in 1m 25s\n- gate-python-swiftclient-pypy http://logs.openstack.org/08/159208/13/check/gate-python-swiftclient-pypy/7d56da2/ : SUCCESS in 1m 00s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/13/check/gate-tempest-dsvm-neutron-src-python-swiftclient/bf79401/ : SUCCESS in 1h 08m 24s\n- gate-swift-dsvm-functional http://logs.openstack.org/08/159208/13/check/gate-swift-dsvm-functional/13d7569/ : SUCCESS in 27m 38s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/13/check/gate-swiftclient-dsvm-functional/91383e5/ : SUCCESS in 23m 34s","accounts_in_message":[],"_revision_number":13},{"id":"7e4ea529c45a80d0fec07f8817c417e7f4891972","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-08 19:43:40.000000000","message":"Patch Set 13: -Verified\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":13},{"id":"052b8b4ee6980b7d85e74346cf21e406fd1e7d20","date":"2016-01-09 03:29:18.000000000","message":"Change has been successfully merged into the git repository by Jenkins","accounts_in_message":[],"_revision_number":13},{"id":"6fe9753456d54221b7d9a924e29aaacf84c54b1f","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-09 03:29:18.000000000","message":"Patch Set 13: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/08/159208/13/gate/gate-python-swiftclient-docs/b6a7eae//doc/build/html/ : SUCCESS in 52s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/08/159208/13/gate/gate-python-swiftclient-pep8/a8917a5/ : SUCCESS in 46s\n- gate-python-swiftclient-python27 http://logs.openstack.org/08/159208/13/gate/gate-python-swiftclient-python27/07a2060/ : SUCCESS in 59s\n- gate-python-swiftclient-python34 http://logs.openstack.org/08/159208/13/gate/gate-python-swiftclient-python34/c840749/ : SUCCESS in 2m 04s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/08/159208/13/gate/gate-tempest-dsvm-neutron-src-python-swiftclient/c3d750f/ : SUCCESS in 1h 07m 35s\n- gate-swift-dsvm-functional http://logs.openstack.org/08/159208/13/gate/gate-swift-dsvm-functional/dca7d21/ : SUCCESS in 30m 19s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/08/159208/13/gate/gate-swiftclient-dsvm-functional/d321127/ : SUCCESS in 21m 33s","accounts_in_message":[],"_revision_number":13}],"current_revision_number":13,"current_revision":"4af623bcf171a63240849b84b9359a4f74471455","revisions":{"d4c84f6a6f42fd1fd8f566e9ea387f1f5ea0eaba":{"kind":"REWORK","_number":1,"created":"2015-02-25 18:01:17.000000000","uploader":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"ref":"refs/changes/08/159208/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/1"}}},"commit":{"parents":[{"commit":"8aff0bda9c35ab96146f4f419803e62710ab5618","subject":"add functional tox target","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/8aff0bda9c35ab96146f4f419803e62710ab5618"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-02-24 16:27:58.000000000","tz":0},"committer":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-02-25 17:30:22.000000000","tz":0},"subject":"Retry download after streaming has started","message":"Retry download after streaming has started\n\nCurrently the swift client retries establishing a connection\nto the server (by default up to 5 times).\n\nHowever, when downloading an object, once the connection has been\nestablished and the inital headers have been returned, no attempt is made\nto retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and\nthe connection is then lost, the download will fail.\n\nThis patch changes the behaviour to re-establish the connection and\nfetch the remaining bytes using the \u0027Range\u0027 header to offset.\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/d4c84f6a6f42fd1fd8f566e9ea387f1f5ea0eaba"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/d4c84f6a6f42fd1fd8f566e9ea387f1f5ea0eaba"}]},"branch":"refs/heads/master"},"2684596c107eab903ccb96f9dcd18563a17fa72b":{"kind":"REWORK","_number":2,"created":"2015-02-26 17:45:48.000000000","uploader":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"ref":"refs/changes/08/159208/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/2"}}},"commit":{"parents":[{"commit":"8aff0bda9c35ab96146f4f419803e62710ab5618","subject":"add functional tox target","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/8aff0bda9c35ab96146f4f419803e62710ab5618"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-02-24 16:27:58.000000000","tz":0},"committer":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-02-26 17:20:52.000000000","tz":0},"subject":"Retry download after streaming has started","message":"Retry download after streaming has started\n\nCurrently the swift client retries establishing a connection\nto the server (by default up to 5 times).\n\nHowever, when downloading an object, once the connection has been\nestablished and the inital headers have been returned, no attempt is made\nto retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and\nthe connection is then lost, the download will fail.\n\nThis patch changes the behaviour to re-establish the connection and\nfetch the remaining bytes using the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset of\nthe object data (ie uses the \u0027Range\u0027 header).\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/2684596c107eab903ccb96f9dcd18563a17fa72b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/2684596c107eab903ccb96f9dcd18563a17fa72b"}]},"branch":"refs/heads/master"},"b4db59648cb29980848a88bd2ea8b8481c35826a":{"kind":"REWORK","_number":3,"created":"2015-02-27 14:37:17.000000000","uploader":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"ref":"refs/changes/08/159208/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/3"}}},"commit":{"parents":[{"commit":"8aff0bda9c35ab96146f4f419803e62710ab5618","subject":"add functional tox target","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/8aff0bda9c35ab96146f4f419803e62710ab5618"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-02-24 16:27:58.000000000","tz":0},"committer":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-02-27 14:13:01.000000000","tz":0},"subject":"Retry download after streaming has started","message":"Retry download after streaming has started\n\nCurrently the swift client retries establishing a connection\nto the server (by default up to 5 times).\n\nHowever, when downloading an object, once the connection has been\nestablished and the inital headers have been returned, no attempt is made\nto retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and\nthe connection is then lost, the download will fail.\n\nThis patch changes the behaviour to re-establish the connection and\nfetch the remaining bytes using the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset of\nthe object data (ie uses the \u0027Range\u0027 header).\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/b4db59648cb29980848a88bd2ea8b8481c35826a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/b4db59648cb29980848a88bd2ea8b8481c35826a"}]},"branch":"refs/heads/master"},"08fec38224f82f506bf69080b1f3a00a962903fb":{"kind":"REWORK","_number":4,"created":"2015-03-02 16:16:46.000000000","uploader":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"ref":"refs/changes/08/159208/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/4"}}},"commit":{"parents":[{"commit":"8aff0bda9c35ab96146f4f419803e62710ab5618","subject":"add functional tox target","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/8aff0bda9c35ab96146f4f419803e62710ab5618"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-02-24 16:27:58.000000000","tz":0},"committer":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-02 15:51:40.000000000","tz":0},"subject":"Retry download after streaming has started","message":"Retry download after streaming has started\n\nCurrently the swift client retries establishing a connection\nto the server (by default up to 5 times).\n\nHowever, when downloading an object, once the connection has been\nestablished and the inital headers have been returned, no attempt is made\nto retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and\nthe connection is then lost, the download will fail.\n\nThis patch changes the behaviour to re-establish the connection and\nfetch the remaining bytes using the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset of\nthe object data (ie uses the \u0027Range\u0027 header).\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/08fec38224f82f506bf69080b1f3a00a962903fb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/08fec38224f82f506bf69080b1f3a00a962903fb"}]},"branch":"refs/heads/master"},"07b07c2fa6170837941e42c4390c89f08c3f5ffd":{"kind":"REWORK","_number":5,"created":"2015-03-04 16:14:58.000000000","uploader":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"ref":"refs/changes/08/159208/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/5"}}},"commit":{"parents":[{"commit":"3da65a8ba0f5f10fc5b670b8410da91ef25f6d87","subject":"Allow reading from object body on download","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/3da65a8ba0f5f10fc5b670b8410da91ef25f6d87"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-04 14:31:00.000000000","tz":0},"committer":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-04 15:51:21.000000000","tz":0},"subject":"Retry download of object body","message":"Retry download of object body\n\nCurrently the swift client retries establishing a connection to the server\n(by default up to 5 times).  However, when downloading an object, once\nthe connection has been established and the inital headers have been\nreturned, no attempt is made to retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and the\nconnection is then lost, the download will fail.  This patch changes the\nbehaviour to re-establish the connection and fetch the remaining bytes\nusing the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset\nof the object data (ie uses the \u0027Range\u0027 header).\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/07b07c2fa6170837941e42c4390c89f08c3f5ffd"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/07b07c2fa6170837941e42c4390c89f08c3f5ffd"}]},"branch":"refs/heads/master"},"a20a030587ecfb77de2036793b2b3d09654df42d":{"kind":"REWORK","_number":6,"created":"2015-03-05 17:24:28.000000000","uploader":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"ref":"refs/changes/08/159208/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/6"}}},"commit":{"parents":[{"commit":"3da65a8ba0f5f10fc5b670b8410da91ef25f6d87","subject":"Allow reading from object body on download","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/3da65a8ba0f5f10fc5b670b8410da91ef25f6d87"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-04 14:31:00.000000000","tz":0},"committer":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-05 17:00:34.000000000","tz":0},"subject":"Retry download of object body","message":"Retry download of object body\n\nCurrently the swift client retries establishing a connection to the server\n(by default up to 5 times).  However, when downloading an object, once\nthe connection has been established and the inital headers have been\nreturned, no attempt is made to retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and the\nconnection is then lost, the download will fail.  This patch changes the\nbehaviour to re-establish the connection and fetch the remaining bytes\nusing the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset\nof the object data (ie uses the \u0027Range\u0027 header).\n\nThe object\u0027s etag is checked to make sure the object data hasn\u0027t changed\nsince the start of the download.\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/a20a030587ecfb77de2036793b2b3d09654df42d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/a20a030587ecfb77de2036793b2b3d09654df42d"}]},"branch":"refs/heads/master"},"1732b0e5ba8391da97a68be8c21d4b66c9204d26":{"kind":"REWORK","_number":7,"created":"2015-11-10 14:59:03.000000000","uploader":{"_account_id":17116,"name":"Niall Bunting","email":"niall.bunting@hpe.com","username":"NiallBunting"},"ref":"refs/changes/08/159208/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/7"}}},"commit":{"parents":[{"commit":"ad5656020c8b1939655d0a5d5cd44fcc0069607d","subject":"Merge \"Add tests and param definitions for headers parameter\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/ad5656020c8b1939655d0a5d5cd44fcc0069607d"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-04 14:31:00.000000000","tz":0},"committer":{"name":"NiallBunting","email":"niall.bunting@hp.com","date":"2015-11-10 14:57:31.000000000","tz":0},"subject":"Retry download of object body","message":"Retry download of object body\n\nCurrently the swift client retries establishing a connection to the server\n(by default up to 5 times).  However, when downloading an object, once\nthe connection has been established and the inital headers have been\nreturned, no attempt is made to retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and the\nconnection is then lost, the download will fail.  This patch changes the\nbehaviour to re-establish the connection and fetch the remaining bytes\nusing the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset\nof the object data (ie uses the \u0027Range\u0027 header).\n\nThe object\u0027s etag is checked to make sure the object data hasn\u0027t changed\nsince the start of the download.\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/1732b0e5ba8391da97a68be8c21d4b66c9204d26"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/1732b0e5ba8391da97a68be8c21d4b66c9204d26"}]},"branch":"refs/heads/master"},"efdc0294d1b7a00ee4ce135214ce12277e4a2886":{"kind":"TRIVIAL_REBASE","_number":8,"created":"2015-12-11 12:07:01.000000000","uploader":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"ref":"refs/changes/08/159208/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/8"}}},"commit":{"parents":[{"commit":"4d9b1e760d48aba570ccf07281ddaad110ed9a6a","subject":"Merge \"Remove py26 support\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/4d9b1e760d48aba570ccf07281ddaad110ed9a6a"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-04 14:31:00.000000000","tz":0},"committer":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-12-11 12:07:01.000000000","tz":0},"subject":"Retry download of object body","message":"Retry download of object body\n\nCurrently the swift client retries establishing a connection to the server\n(by default up to 5 times).  However, when downloading an object, once\nthe connection has been established and the inital headers have been\nreturned, no attempt is made to retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and the\nconnection is then lost, the download will fail.  This patch changes the\nbehaviour to re-establish the connection and fetch the remaining bytes\nusing the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset\nof the object data (ie uses the \u0027Range\u0027 header).\n\nThe object\u0027s etag is checked to make sure the object data hasn\u0027t changed\nsince the start of the download.\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/efdc0294d1b7a00ee4ce135214ce12277e4a2886"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/efdc0294d1b7a00ee4ce135214ce12277e4a2886"}]},"branch":"refs/heads/master"},"5b3ea63a469e930f6f44e44c775e2d54efcb4e74":{"kind":"REWORK","_number":9,"created":"2015-12-15 17:16:19.000000000","uploader":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"ref":"refs/changes/08/159208/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/9"}}},"commit":{"parents":[{"commit":"0103465fcb5d0119459569e7952cc1c580d045e2","subject":"Test \u0027string\u0027 behaviour of get_object","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/0103465fcb5d0119459569e7952cc1c580d045e2"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-04 14:31:00.000000000","tz":0},"committer":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-12-15 17:15:30.000000000","tz":0},"subject":"Retry download of object body","message":"Retry download of object body\n\nCurrently the swift client retries establishing a connection to the server\n(by default up to 5 times).  However, when downloading an object, once\nthe connection has been established and the inital headers have been\nreturned, no attempt is made to retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and the\nconnection is then lost, the download will fail.  This patch changes the\nbehaviour to re-establish the connection and fetch the remaining bytes\nusing the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset\nof the object data (ie uses the \u0027Range\u0027 header), or if resp_chunk_size\nhas not been set.\n\nThe object\u0027s etag is checked using If-Match to make sure the object data\nhasn\u0027t changed since the start of the download.\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/5b3ea63a469e930f6f44e44c775e2d54efcb4e74"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/5b3ea63a469e930f6f44e44c775e2d54efcb4e74"}]},"branch":"refs/heads/master"},"44550ecef14c0604797323c2ef197a04dd9b03be":{"kind":"REWORK","_number":10,"created":"2016-01-05 17:02:49.000000000","uploader":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"ref":"refs/changes/08/159208/10","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/10","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/10"}}},"commit":{"parents":[{"commit":"0103465fcb5d0119459569e7952cc1c580d045e2","subject":"Test \u0027string\u0027 behaviour of get_object","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/0103465fcb5d0119459569e7952cc1c580d045e2"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-04 14:31:00.000000000","tz":0},"committer":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2016-01-05 16:58:00.000000000","tz":0},"subject":"Retry download of object body","message":"Retry download of object body\n\nCurrently the swift client retries establishing a connection to the server\n(by default up to 5 times).  However, when downloading an object, once\nthe connection has been established and the inital headers have been\nreturned, no attempt is made to retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and the\nconnection is then lost, the download will fail.  This patch changes the\nbehaviour to re-establish the connection and fetch the remaining bytes\nusing the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset\nof the object data (ie uses the \u0027Range\u0027 header), or if resp_chunk_size\nhas not been set.\n\nThe object\u0027s etag is checked using If-Match to make sure the object data\nhasn\u0027t changed since the start of the download.\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/44550ecef14c0604797323c2ef197a04dd9b03be"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/44550ecef14c0604797323c2ef197a04dd9b03be"}]},"branch":"refs/heads/master"},"1c718ac668cf26787348230c3bf190aab9033a24":{"kind":"REWORK","_number":11,"created":"2016-01-06 16:26:30.000000000","uploader":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"ref":"refs/changes/08/159208/11","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/11","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/11"}}},"commit":{"parents":[{"commit":"d1e310958801c1e058a933a43b2c7e9552e85772","subject":"Merge \"Replace assertEqual(arg, None) with assertIsNone(arg)\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/d1e310958801c1e058a933a43b2c7e9552e85772"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-04 14:31:00.000000000","tz":0},"committer":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2016-01-06 12:51:31.000000000","tz":0},"subject":"Retry download of object body","message":"Retry download of object body\n\nCurrently the swift client retries establishing a connection to the server\n(by default up to 5 times).  However, when downloading an object, once\nthe connection has been established and the inital headers have been\nreturned, no attempt is made to retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and the\nconnection is then lost, the download will fail.  This patch changes the\nbehaviour to re-establish the connection and fetch the remaining bytes\nusing the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset\nof the object data (ie uses the \u0027Range\u0027 header), or if resp_chunk_size\nhas not been set.\n\nThe object\u0027s etag is checked using If-Match to make sure the object data\nhasn\u0027t changed since the start of the download.\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/1c718ac668cf26787348230c3bf190aab9033a24"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/1c718ac668cf26787348230c3bf190aab9033a24"}]},"branch":"refs/heads/master"},"875328ad264f9cdeffd00ca71f0a23f16887fc7a":{"kind":"REWORK","_number":12,"created":"2016-01-08 13:42:15.000000000","uploader":{"_account_id":455,"name":"Stuart McLaren","email":"stuart.mclaren@hpe.com","username":"stuart-mclaren"},"ref":"refs/changes/08/159208/12","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/12","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/12 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/12 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/12 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/12"}}},"commit":{"parents":[{"commit":"d1e310958801c1e058a933a43b2c7e9552e85772","subject":"Merge \"Replace assertEqual(arg, None) with assertIsNone(arg)\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/d1e310958801c1e058a933a43b2c7e9552e85772"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-04 14:31:00.000000000","tz":0},"committer":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2016-01-08 13:39:27.000000000","tz":0},"subject":"Retry download of object body","message":"Retry download of object body\n\nCurrently the swift client retries establishing a connection to the server\n(by default up to 5 times).  However, when downloading an object, once\nthe connection has been established and the inital headers have been\nreturned, no attempt is made to retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and the\nconnection is then lost, the download will fail.  This patch changes the\nbehaviour to re-establish the connection and fetch the remaining bytes\nusing the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset\nof the object data (ie uses the \u0027Range\u0027 header), or if resp_chunk_size\nhas not been set.\n\nThe object\u0027s etag is checked using If-Match to make sure the object data\nhasn\u0027t changed since the start of the download.\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/875328ad264f9cdeffd00ca71f0a23f16887fc7a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/875328ad264f9cdeffd00ca71f0a23f16887fc7a"}]},"branch":"refs/heads/master"},"4af623bcf171a63240849b84b9359a4f74471455":{"kind":"REWORK","_number":13,"created":"2016-01-08 17:20:08.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/08/159208/13","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/08/159208/13","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/13 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/13 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/13 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/08/159208/13"}}},"commit":{"parents":[{"commit":"d1e310958801c1e058a933a43b2c7e9552e85772","subject":"Merge \"Replace assertEqual(arg, None) with assertIsNone(arg)\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/d1e310958801c1e058a933a43b2c7e9552e85772"}]}],"author":{"name":"Stuart McLaren","email":"stuart.mclaren@hp.com","date":"2015-03-04 14:31:00.000000000","tz":0},"committer":{"name":"Alistair Coles","email":"alistair.coles@hpe.com","date":"2016-01-08 17:12:02.000000000","tz":0},"subject":"Retry download of object body","message":"Retry download of object body\n\nCurrently the swift client retries establishing a connection to the server\n(by default up to 5 times).  However, when downloading an object, once\nthe connection has been established and the inital headers have been\nreturned, no attempt is made to retry.\n\nSo, for example, if 99MB of a 100MB object have been downloaded and the\nconnection is then lost, the download will fail.  This patch changes the\nbehaviour to re-establish the connection and fetch the remaining bytes\nusing the \u0027Range\u0027 header to offset.\n\nData retry is not yet supported if the original request is for a subset\nof the object data (ie uses the \u0027Range\u0027 header), or if resp_chunk_size\nhas not been set.\n\nThe object\u0027s etag is checked using If-Match to make sure the object data\nhasn\u0027t changed since the start of the download.\n\nChange-Id: Iab47f10081ff39f6d344dbc2479cbc3bfd1c5b29\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/4af623bcf171a63240849b84b9359a4f74471455"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/4af623bcf171a63240849b84b9359a4f74471455"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
