)]}'
{"id":"openstack%2Fpython-swiftclient~226897","triplet_id":"openstack%2Fpython-swiftclient~master~I21f43f06e8c78b24d1fc081efedf2687942e042f","project":"openstack/python-swiftclient","branch":"master","topic":"retry-uploads","hashtags":[],"change_id":"I21f43f06e8c78b24d1fc081efedf2687942e042f","subject":"Retry file uploads via SwiftService","status":"MERGED","created":"2015-09-23 17:53:03.000000000","updated":"2016-01-12 13:00:17.000000000","submitted":"2016-01-12 13:00:16.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":31,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"a1b8e16edacf68deb8e774c448ddaf84c9ae2a21","_number":226897,"virtual_id_number":226897,"owner":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":0,"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},{"value":2,"date":"2016-01-12 13:00:16.000000000","_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":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"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":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"all":[{"value":2,"date":"2016-01-12 09:26:55.000000000","_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":2,"date":"2016-01-11 19:23:54.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"value":0,"_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":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"all":[{"value":1,"date":"2016-01-12 09:26:55.000000000","_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},{"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":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"value":0,"_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":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":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-10-07 18:56:25.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-11 19:23:54.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-12 09:26:55.000000000","updated_by":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"reviewer":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"state":"REVIEWER"},{"updated":"2016-01-12 13:00:16.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"37bfbfed80d44fa259c4f66cd93ea966ad473b8e","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-09-23 17:53:03.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"77f2edfe371b1135e89bce585b7500fd2c23adce","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-09-23 19:19:19.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/97/226897/1/check/gate-python-swiftclient-python26/5c0bee2/ : SUCCESS in 59s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/97/226897/1/check/gate-python-swiftclient-pep8/6ec403d/ : SUCCESS in 48s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/1/check/gate-python-swiftclient-docs/597e280//doc/build/html/ : SUCCESS in 1m 03s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/1/check/gate-python-swiftclient-python27/9959e7a/ : SUCCESS in 1m 04s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/1/check/gate-python-swiftclient-python34/3834a4b/ : SUCCESS in 2m 07s\n- gate-python-swiftclient-pypy http://logs.openstack.org/97/226897/1/check/gate-python-swiftclient-pypy/d1b2ce7/ : SUCCESS in 1m 28s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/1/check/gate-tempest-dsvm-neutron-src-python-swiftclient/c6d7dd3/ : SUCCESS in 1h 09m 58s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/1/check/gate-swift-dsvm-functional/f518ec5/ : SUCCESS in 25m 40s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/1/check/gate-swiftclient-dsvm-functional/787953b/ : SUCCESS in 19m 36s","accounts_in_message":[],"_revision_number":1},{"id":"67eea6698aa4f7ee4bc7a8f58e15487dece4a965","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2015-10-01 18:55:59.000000000","message":"Patch Set 1: Code-Review+2\n\nThis is good, LengthWrapper doesn\u0027t do any buffering that I can tell - so direct proxy to the readable should work without any side-effects that I can think of.  The retry/reset/orig_pos stuff is all handled in client.py - so it doesn\u0027t appear that anything else is needed WRT keeping track of what bytes of the readable the LengthWrapper is handling.\n\nFWIW I think the setattr stuff is a *little* meta for my tastes - maybe would have gone for something more like with a property? [1]  But this works too, and technically passes the grep-test [2].\n\nNice work!\n\n1. https://gist.github.com/clayg/e410b7ba6d35df1c5bd8\n2. http://jamie-wong.com/2013/07/12/grep-test/","accounts_in_message":[],"_revision_number":1},{"id":"5e92160190f3e2a8e75addbf5d1c0a7be96762c0","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-10-01 19:28:09.000000000","message":"Patch Set 1:\n\nClay, on the meta-ness, that\u0027s fair. Updated to use properties.\n\n(I think when I did this originally, I debated about defining seek/tell normally, then using *args and **kwargs and it just felt like a pain. I like the @property idea much better.)","accounts_in_message":[],"_revision_number":1},{"id":"ef96c43c2b96e3c85546ce633d9d3be3ca9f80b9","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-10-01 19:28:40.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"6e8c57410e40320726ef400e055c6f47c96fa7df","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2015-10-01 19:59:56.000000000","message":"Patch Set 2: Code-Review+2\n\noh good, I had meant to also say the tests are good and fail on master with a pretty reasonable explanation pointing at which behavior of LengthWrapper is missing.","accounts_in_message":[],"_revision_number":2},{"id":"415049764ee51b2168bdb264a5c0b5d562c28418","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-10-01 20:44:47.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/97/226897/2/check/gate-python-swiftclient-python26/209fcdf/ : SUCCESS in 1m 00s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/97/226897/2/check/gate-python-swiftclient-pep8/745bccb/ : SUCCESS in 54s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/2/check/gate-python-swiftclient-docs/8b4c86b//doc/build/html/ : SUCCESS in 54s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/2/check/gate-python-swiftclient-python27/9bdd85e/ : SUCCESS in 1m 16s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/2/check/gate-python-swiftclient-python34/fa3b9d3/ : SUCCESS in 3m 32s\n- gate-python-swiftclient-pypy http://logs.openstack.org/97/226897/2/check/gate-python-swiftclient-pypy/2ba37da/ : SUCCESS in 1m 17s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/2/check/gate-tempest-dsvm-neutron-src-python-swiftclient/9429c31/ : SUCCESS in 1h 11m 37s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/2/check/gate-swift-dsvm-functional/531dad0/ : SUCCESS in 37m 46s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/2/check/gate-swiftclient-dsvm-functional/05d9b25/ : SUCCESS in 34m 16s","accounts_in_message":[],"_revision_number":2},{"id":"d362a640496491db5e4633de0f56f24aa307ae4f","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2015-10-06 13:43:17.000000000","message":"Patch Set 2:\n\n(2 comments)\n\nI feel I have perhaps fundamentally misunderstood what is happening here, but I can\u0027t see how it works. Yes, the underlying file will get the tells and seeks, but the wrapper will limit reads to original length and its md5sum will be garbage after a seek backwards.","accounts_in_message":[],"_revision_number":2},{"id":"e139aef969a9d81be2939b192166b01ee453375c","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-10-06 16:03:54.000000000","message":"Patch Set 2: Workflow-1\n\n(2 comments)","accounts_in_message":[],"_revision_number":2},{"id":"726d37c729c0e0b8e7555443fe5d4af8d0a1af37","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-10-06 18:33:37.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"7b5e6e236238c977e446053bf8b6be4b77a8fc41","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-10-06 18:38:24.000000000","message":"Patch Set 3:\n\nStill needs a boatload of tests, but functionally testing SLOs against a flaky Swift cluster (say, with https://gist.github.com/tipabu/e1a03a8486c2fa57b4bc in its pipeline) works.","accounts_in_message":[],"_revision_number":3},{"id":"a5d0c306cfc6a7e22ebbc9ec77206a64a2754ec1","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-10-06 20:12:14.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/97/226897/3/check/gate-python-swiftclient-python26/466afb8/ : SUCCESS in 21s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/97/226897/3/check/gate-python-swiftclient-pep8/03c8564/ : SUCCESS in 58s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/3/check/gate-python-swiftclient-docs/14419e0//doc/build/html/ : SUCCESS in 59s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/3/check/gate-python-swiftclient-python27/65581b1/ : SUCCESS in 1m 12s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/3/check/gate-python-swiftclient-python34/950b080/ : SUCCESS in 1m 53s\n- gate-python-swiftclient-pypy http://logs.openstack.org/97/226897/3/check/gate-python-swiftclient-pypy/ca21853/ : SUCCESS in 1m 38s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/3/check/gate-tempest-dsvm-neutron-src-python-swiftclient/4496d1a/ : SUCCESS in 1h 09m 05s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/3/check/gate-swift-dsvm-functional/8191307/ : SUCCESS in 26m 28s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/3/check/gate-swiftclient-dsvm-functional/7fae9ef/ : SUCCESS in 19m 30s","accounts_in_message":[],"_revision_number":3},{"id":"2871966573e69ca24ff336227f005dda6df40c8a","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2015-10-07 10:03:52.000000000","message":"Patch Set 3:\n\n(3 comments)\n\n@Tim if it is possible to verify the seek with md5 getting reset in a unit test then that would be very nice.","accounts_in_message":[],"_revision_number":3},{"id":"e99a57734104eb6019876086ee075f0733418e6d","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-10-07 18:21:28.000000000","message":"Patch Set 3:\n\n(3 comments)\n\nHey, that\u0027s right! There\u0027s a difference between tests/unit/utils.py and tests/unit/test_utils.py :P\n\nLengthWrapper wasn\u0027t *nearly* as devoid of tests as I feared. Getting the reset stuff tested should be easy.","accounts_in_message":[],"_revision_number":3},{"id":"9153a895f07726c0fce1920fbde2b5336ae67afa","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-10-07 18:21:42.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"57a5f143b552ff4660304e4cc886e34207d689f9","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2015-10-07 18:56:25.000000000","message":"Patch Set 4: Code-Review-1\n\n(7 comments)\n\nwhile I\u0027m certainly onboard with making segmented uploads reset-able  - we should have a test specifically around that desirable behavior.  Especially since we both missed it in a previous attempt I\u0027d really like to see a test that sets up an upload_segment job and slips a 503 response in for one of the segments - validating that the mock_conn is retried and completes successfully (something in test_service might fit the bill?).  With that I\u0027m pretty sure the md5 check would have popped and told us exactly what needed to be fixed in the first round?\n\nnits:\n\nI\u0027m pretty leery of the extra complexity of re-implementing half of the bounds and type checking of these posix calls in LengthWrapper.\n\nI\u0027m not trying to hold onto a failed idea, but where this ended up seems to have all of the ugly dynamism of the original and then some -  it\u0027s like the worst of both of the previous attempts - how about:\n\n    @property\n    def seek(self):\n        def fix_bits(wrapped, *args, **kwargs):\n            self._bits \u003d fixed\n            return wrapped(*args, **kwargs)\n\n        return fix_bits(self._readable.seek)\n\n^ seems like it would still AttributeError fairly nicely, and if you see something calling a LengthWrapped readable\u0027s .seek method you can find \"def seek\" pretty quickly and see that\u0027s it\u0027s a fairly thin wrapper around the _readable\u0027s system call that\u0027s just trying to reset some internal state.  Is there something more that\u0027s needed that I\u0027m missing (outside of translating the seeks to be relative to the LengthWrapped bounds; for which I don\u0027t currently understand the use-case)?\n\nI\u0027m rather dubious of the the ROI implementing a generalized RangeLimitedWrapped readable - particularly at the expense of dropping expected outcomes of the md5sum\u0027ing behavior - unless you have a known use-case?","accounts_in_message":[],"_revision_number":4},{"id":"91e3afa9c51f6ee2807b85610898da02282b019e","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-10-07 19:56:16.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/97/226897/4/check/gate-python-swiftclient-python26/3c56d3d/ : FAILURE in 58s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/97/226897/4/check/gate-python-swiftclient-pep8/d36e860/ : SUCCESS in 44s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/4/check/gate-python-swiftclient-docs/8cc39e8//doc/build/html/ : SUCCESS in 39s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/4/check/gate-python-swiftclient-python27/4eec927/ : SUCCESS in 53s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/4/check/gate-python-swiftclient-python34/0cbea6c/ : FAILURE in 1m 59s\n- gate-python-swiftclient-pypy http://logs.openstack.org/97/226897/4/check/gate-python-swiftclient-pypy/4559f10/ : SUCCESS in 1m 20s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/4/check/gate-tempest-dsvm-neutron-src-python-swiftclient/5a80ab0/ : SUCCESS in 1h 10m 01s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/4/check/gate-swift-dsvm-functional/4a2fd61/ : SUCCESS in 34m 56s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/4/check/gate-swiftclient-dsvm-functional/7cc362e/ : SUCCESS in 31m 18s","accounts_in_message":[],"_revision_number":4},{"id":"d82313b3a55ad1e96395cc0c28dce2d253489169","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-10-07 22:10:26.000000000","message":"Patch Set 4:\n\n(4 comments)\n\nFine, I\u0027m not sure it\u0027s worth fighting the system call battle. New tack.","accounts_in_message":[],"_revision_number":4},{"id":"496f5dac371f0706fbb9592057e6a59c3778e789","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-10-07 22:10:33.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"c10ba4f265414ae0887404f6b4c4a5a1d73fee88","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-10-07 23:12:06.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/97/226897/5/check/gate-python-swiftclient-python26/7d5d6b5/ : SUCCESS in 51s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/97/226897/5/check/gate-python-swiftclient-pep8/a4dd8c2/ : SUCCESS in 56s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/5/check/gate-python-swiftclient-docs/2166a73//doc/build/html/ : SUCCESS in 39s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/5/check/gate-python-swiftclient-python27/4e306c4/ : SUCCESS in 51s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/5/check/gate-python-swiftclient-python34/a59803d/ : SUCCESS in 2m 12s\n- gate-python-swiftclient-pypy http://logs.openstack.org/97/226897/5/check/gate-python-swiftclient-pypy/ea83b87/ : FAILURE in 1m 13s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/5/check/gate-tempest-dsvm-neutron-src-python-swiftclient/a599d4a/ : SUCCESS in 49m 05s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/5/check/gate-swift-dsvm-functional/98bb89a/ : SUCCESS in 30m 12s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/5/check/gate-swiftclient-dsvm-functional/291d58d/ : SUCCESS in 27m 18s","accounts_in_message":[],"_revision_number":5},{"id":"84aea50591783c614d2283928e2bbe45b1d39352","author":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"date":"2015-11-18 23:41:17.000000000","message":"Patch Set 5:\n\n(3 comments)\n\nI have a few very minor comments but on the whole I like this :)","accounts_in_message":[],"_revision_number":5},{"id":"14d968d3728d1f38300cf3421fc95bae0ae3243d","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-11-19 22:45:28.000000000","message":"Patch Set 5:\n\n(3 comments)\n\nSo I thought this might close https://bugs.launchpad.net/python-swiftclient/+bug/1298283 but I\u0027m not sure that it really does... it seems like that bug is complaining about needing to send the entire chunk before seeing that we need to re-auth. I\u0027ll leave it off for now.","accounts_in_message":[],"_revision_number":5},{"id":"5d936d0028c5d43c06f5cfeed97a4a5c7ae203b3","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-11-19 22:45:35.000000000","message":"Uploaded patch set 6.","accounts_in_message":[],"_revision_number":6},{"id":"02fc853a754b64d5e8ac3bdce6c5c17d9bd6897a","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-11-20 00:29:53.000000000","message":"Patch Set 6: 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/97/226897/6/check/gate-python-swiftclient-python26/6fafbba/ : SUCCESS in 50s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/97/226897/6/check/gate-python-swiftclient-pep8/bc3a7c4/ : SUCCESS in 45s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/6/check/gate-python-swiftclient-docs/cc15d0b//doc/build/html/ : SUCCESS in 1m 00s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/6/check/gate-python-swiftclient-python27/a4b7687/ : FAILURE in 53s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/6/check/gate-python-swiftclient-python34/d7d160f/ : SUCCESS in 1m 57s\n- gate-python-swiftclient-pypy http://logs.openstack.org/97/226897/6/check/gate-python-swiftclient-pypy/305ec2c/ : SUCCESS in 1m 34s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/6/check/gate-tempest-dsvm-neutron-src-python-swiftclient/f41662b/ : SUCCESS in 1h 13m 56s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/6/check/gate-swift-dsvm-functional/e7beb2c/ : SUCCESS in 32m 45s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/6/check/gate-swiftclient-dsvm-functional/c0c1d30/ : SUCCESS in 32m 03s","accounts_in_message":[],"_revision_number":6},{"id":"cb70cae84aa832dacd84a8dd91782cbd8f65e6fb","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-11-20 00:37:24.000000000","message":"Patch Set 6:\n\nrecheck","accounts_in_message":[],"_revision_number":6},{"id":"638d966a47c94b21fe0213b7a461d0aaea7363e2","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-11-20 01:49:58.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/97/226897/6/check/gate-python-swiftclient-python26/0fe5bff/ : SUCCESS in 48s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/97/226897/6/check/gate-python-swiftclient-pep8/caba8c3/ : SUCCESS in 42s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/6/check/gate-python-swiftclient-docs/c124edc//doc/build/html/ : SUCCESS in 41s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/6/check/gate-python-swiftclient-python27/b2f42cb/ : SUCCESS in 47s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/6/check/gate-python-swiftclient-python34/383fec7/ : SUCCESS in 1m 30s\n- gate-python-swiftclient-pypy http://logs.openstack.org/97/226897/6/check/gate-python-swiftclient-pypy/67a6cc3/ : SUCCESS in 1m 07s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/6/check/gate-tempest-dsvm-neutron-src-python-swiftclient/caaae66/ : SUCCESS in 1h 06m 36s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/6/check/gate-swift-dsvm-functional/905f5ad/ : SUCCESS in 32m 40s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/6/check/gate-swiftclient-dsvm-functional/a66b3b2/ : SUCCESS in 30m 04s","accounts_in_message":[],"_revision_number":6},{"id":"ca5650e12a98e4ac267378d0c5c6061bb9a6dea1","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2016-01-06 00:33:23.000000000","message":"Uploaded patch set 7.","accounts_in_message":[],"_revision_number":7},{"id":"7be20a7c117e42b5b8495f790fd4ec4982b8f6ad","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2016-01-06 00:33:53.000000000","message":"Patch Set 7:\n\nTrivial rebase","accounts_in_message":[],"_revision_number":7},{"id":"d93f99da2354a775220555da759d8704a5c10d29","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-06 02:38:24.000000000","message":"Patch Set 7: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-pep8 http://logs.openstack.org/97/226897/7/check/gate-python-swiftclient-pep8/045aa59/ : SUCCESS in 36s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/7/check/gate-python-swiftclient-docs/1e57c8e//doc/build/html/ : SUCCESS in 43s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/7/check/gate-python-swiftclient-python27/a28e6db/ : SUCCESS in 38s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/7/check/gate-python-swiftclient-python34/aed032d/ : SUCCESS in 1m 20s\n- gate-python-swiftclient-pypy http://logs.openstack.org/97/226897/7/check/gate-python-swiftclient-pypy/8b1c177/ : SUCCESS in 1m 13s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/7/check/gate-tempest-dsvm-neutron-src-python-swiftclient/f96f54f/ : SUCCESS in 54m 46s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/7/check/gate-swift-dsvm-functional/91801b9/ : SUCCESS in 26m 18s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/7/check/gate-swiftclient-dsvm-functional/56adafd/ : SUCCESS in 21m 02s","accounts_in_message":[],"_revision_number":7},{"id":"7057c199baa2c3da170182297f90182660a3e076","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2016-01-09 00:08:44.000000000","message":"Uploaded patch set 8: Commit message was updated.","accounts_in_message":[],"_revision_number":8},{"id":"32d910d1d99a125e8d6393faa84f0368cdec563e","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-09 01:33:45.000000000","message":"Patch Set 8: 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-pep8 http://logs.openstack.org/97/226897/8/check/gate-python-swiftclient-pep8/7cfe2d4/ : SUCCESS in 46s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/8/check/gate-python-swiftclient-docs/4cb3331//doc/build/html/ : SUCCESS in 48s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/8/check/gate-python-swiftclient-python27/85bf471/ : SUCCESS in 46s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/8/check/gate-python-swiftclient-python34/d8bda8c/ : SUCCESS in 2m 19s\n- gate-python-swiftclient-pypy http://logs.openstack.org/97/226897/8/check/gate-python-swiftclient-pypy/b173870/ : SUCCESS in 1m 14s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/8/check/gate-tempest-dsvm-neutron-src-python-swiftclient/4df6fd0/ : FAILURE in 1h 22m 33s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/8/check/gate-swift-dsvm-functional/457745f/ : SUCCESS in 26m 55s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/8/check/gate-swiftclient-dsvm-functional/051e947/ : SUCCESS in 20m 39s","accounts_in_message":[],"_revision_number":8},{"id":"a0a2a4c3f4028a3f83f5f37c5ca6487b24f6f95a","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2016-01-09 04:44:39.000000000","message":"Patch Set 8:\n\nrecheck","accounts_in_message":[],"_revision_number":8},{"id":"60cd5003c8c885bfee4bfced3b732213eeedaf16","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-09 05:55:28.000000000","message":"Patch Set 8: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-pep8 http://logs.openstack.org/97/226897/8/check/gate-python-swiftclient-pep8/9907e35/ : SUCCESS in 52s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/8/check/gate-python-swiftclient-docs/4ac3c0d//doc/build/html/ : SUCCESS in 53s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/8/check/gate-python-swiftclient-python27/def1b1c/ : SUCCESS in 51s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/8/check/gate-python-swiftclient-python34/8250b9a/ : SUCCESS in 2m 05s\n- gate-python-swiftclient-pypy http://logs.openstack.org/97/226897/8/check/gate-python-swiftclient-pypy/72fe08e/ : SUCCESS in 1m 39s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/8/check/gate-tempest-dsvm-neutron-src-python-swiftclient/90570b1/ : SUCCESS in 1h 06m 28s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/8/check/gate-swift-dsvm-functional/cdb50f5/ : SUCCESS in 26m 22s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/8/check/gate-swiftclient-dsvm-functional/18d4f78/ : SUCCESS in 22m 44s","accounts_in_message":[],"_revision_number":8},{"id":"2150c4ffff839e8eb34c74c632f55a67c6343562","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2016-01-11 15:31:21.000000000","message":"Patch Set 8: Code-Review+2\n\n(2 comments)\n\nFirst - apologies that, to my astonishment, 3 months has passed since I last reviewed this.\n\nI checked this by putting a random 500 response in my swift proxy for object PUTs then trying a segmented upload. In [1] you can see that one segment gets retried, and the result is a successful upload :)\n\nI saw a way to avoid the resettable property - diff here [2]. It\u0027s almost a matter of style so not a blocker. If you like it, push another version and I will re-apply +2.\n\nTests look good.\n\n[1] http://paste.openstack.org/show/483437/\n[2] http://paste.openstack.org/show/483440/","accounts_in_message":[],"_revision_number":8},{"id":"e5b63f9e04317196188700f08e135f580ba8903f","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2016-01-11 19:15:52.000000000","message":"Patch Set 8:\n\n(2 comments)","accounts_in_message":[],"_revision_number":8},{"id":"10526949b8ac9b871879d079b38a97a3bc0ba144","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2016-01-11 19:15:59.000000000","message":"Uploaded patch set 9.","accounts_in_message":[],"_revision_number":9},{"id":"a4ac6097e462e31b1a2baab28dbbcb5c05ab85cc","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2016-01-11 19:23:54.000000000","message":"Patch Set 9: Code-Review+2\n\neven better!","accounts_in_message":[],"_revision_number":9},{"id":"b9929b86941f45182ed4453a1f8c815a28166dfa","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-11 20:30:55.000000000","message":"Patch Set 9: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-pep8 http://logs.openstack.org/97/226897/9/check/gate-python-swiftclient-pep8/e9b5c45/ : SUCCESS in 51s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/9/check/gate-python-swiftclient-docs/608d044//doc/build/html/ : SUCCESS in 57s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/9/check/gate-python-swiftclient-python27/50b8352/ : SUCCESS in 55s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/9/check/gate-python-swiftclient-python34/8e5616f/ : SUCCESS in 1m 33s\n- gate-python-swiftclient-pypy http://logs.openstack.org/97/226897/9/check/gate-python-swiftclient-pypy/c653ba6/ : SUCCESS in 1m 28s (non-voting)\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/9/check/gate-tempest-dsvm-neutron-src-python-swiftclient/4ae1893/ : SUCCESS in 1h 11m 40s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/9/check/gate-swift-dsvm-functional/78afd70/ : SUCCESS in 30m 27s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/9/check/gate-swiftclient-dsvm-functional/c56a239/ : SUCCESS in 23m 04s","accounts_in_message":[],"_revision_number":9},{"id":"01ffe0ccdde46b53239d666bd1ea310e551569ea","author":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"date":"2016-01-12 09:26:55.000000000","message":"Patch Set 9: Code-Review+2 Workflow+1\n\nLet me echo Alistair\u0027s apology for not looking at this since November.\n\nAll looks good to me now :)","accounts_in_message":[],"_revision_number":9},{"id":"1b199f069a4900af54e95e9db467be702cd5677b","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-12 09:27:00.000000000","message":"Patch Set 9: -Verified\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":9},{"id":"c3ca0354ee77d7e906acb7e3ee126d7ede7dfbbb","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2016-01-12 13:00:16.000000000","message":"Patch Set 9: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/97/226897/9/gate/gate-python-swiftclient-docs/6735b44//doc/build/html/ : SUCCESS in 49s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/97/226897/9/gate/gate-python-swiftclient-pep8/8528b4e/ : SUCCESS in 39s\n- gate-python-swiftclient-python27 http://logs.openstack.org/97/226897/9/gate/gate-python-swiftclient-python27/c74369b/ : SUCCESS in 55s\n- gate-python-swiftclient-python34 http://logs.openstack.org/97/226897/9/gate/gate-python-swiftclient-python34/35b4582/ : SUCCESS in 2m 02s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/97/226897/9/gate/gate-tempest-dsvm-neutron-src-python-swiftclient/f1469d8/ : SUCCESS in 50m 09s\n- gate-swift-dsvm-functional http://logs.openstack.org/97/226897/9/gate/gate-swift-dsvm-functional/7e5b5fa/ : SUCCESS in 27m 40s\n- gate-swiftclient-dsvm-functional http://logs.openstack.org/97/226897/9/gate/gate-swiftclient-dsvm-functional/8a2d728/ : SUCCESS in 24m 31s","accounts_in_message":[],"_revision_number":9},{"id":"9a76977e1cad742638f827d4eb190e3610fe4dfc","date":"2016-01-12 13:00:17.000000000","message":"Change has been successfully merged into the git repository by Jenkins","accounts_in_message":[],"_revision_number":9}],"current_revision_number":9,"current_revision":"d4157ce5b5eeeebb3516092de995cee20025a5c1","revisions":{"fb9ee2ac56fc25b58466add1aca409c3e01cdfc7":{"kind":"REWORK","_number":1,"created":"2015-09-23 17:53:03.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/97/226897/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/97/226897/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/1"}}},"commit":{"parents":[{"commit":"c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5","subject":"Merge \"Add headers parameter\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-09-23 17:42:43.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-09-23 17:42:43.000000000","tz":-420},"subject":"Make LengthWrappers resettable if their _readable is","message":"Make LengthWrappers resettable if their _readable is\n\nThis allows large object segments to be retried.\n\nChange-Id: I21f43f06e8c78b24d1fc081efedf2687942e042f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/fb9ee2ac56fc25b58466add1aca409c3e01cdfc7"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/fb9ee2ac56fc25b58466add1aca409c3e01cdfc7"}]},"branch":"refs/heads/master"},"b27856c276030d02fadb34733d57f011be72e96a":{"kind":"REWORK","_number":2,"created":"2015-10-01 19:28:40.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/97/226897/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/97/226897/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/2"}}},"commit":{"parents":[{"commit":"c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5","subject":"Merge \"Add headers parameter\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-09-23 17:42:43.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-10-01 19:25:22.000000000","tz":-420},"subject":"Make LengthWrappers resettable if their _readable is","message":"Make LengthWrappers resettable if their _readable is\n\nThis allows large object segments to be retried.\n\nChange-Id: I21f43f06e8c78b24d1fc081efedf2687942e042f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/b27856c276030d02fadb34733d57f011be72e96a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/b27856c276030d02fadb34733d57f011be72e96a"}]},"branch":"refs/heads/master"},"40156bb7e3b04e14380a666e9c2e72c838ce9a5c":{"kind":"REWORK","_number":3,"created":"2015-10-06 18:33:37.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/97/226897/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/97/226897/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/3"}}},"commit":{"parents":[{"commit":"c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5","subject":"Merge \"Add headers parameter\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-09-23 17:42:43.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-10-06 18:27:39.000000000","tz":-420},"subject":"Give LengthWrappers seek and tell if their _readable has them","message":"Give LengthWrappers seek and tell if their _readable has them\n\nThis allows large object segments to be retried.\n\nNote that the requests library will also use this to determine\nContent-Length.\n\nChange-Id: I21f43f06e8c78b24d1fc081efedf2687942e042f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/40156bb7e3b04e14380a666e9c2e72c838ce9a5c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/40156bb7e3b04e14380a666e9c2e72c838ce9a5c"}]},"branch":"refs/heads/master"},"bf9659d5d7d9aa654aa19f410257e939a0d42ce4":{"kind":"REWORK","_number":4,"created":"2015-10-07 18:21:42.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/97/226897/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/97/226897/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/4"}}},"commit":{"parents":[{"commit":"c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5","subject":"Merge \"Add headers parameter\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-09-23 17:42:43.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-10-07 18:15:26.000000000","tz":-420},"subject":"Give LengthWrappers seek and tell if their _readable has them","message":"Give LengthWrappers seek and tell if their _readable has them\n\nThis allows large object segments to be retried.\n\nNote that the requests library will also use this to determine\nContent-Length.\n\nChange-Id: I21f43f06e8c78b24d1fc081efedf2687942e042f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/bf9659d5d7d9aa654aa19f410257e939a0d42ce4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/bf9659d5d7d9aa654aa19f410257e939a0d42ce4"}]},"branch":"refs/heads/master"},"2c1ae6139bf65b134e3e03af8f10c283223b9166":{"kind":"REWORK","_number":5,"created":"2015-10-07 22:10:33.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/97/226897/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/97/226897/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/5"}}},"commit":{"parents":[{"commit":"c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5","subject":"Merge \"Add headers parameter\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-09-23 17:42:43.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-10-07 22:09:43.000000000","tz":-420},"subject":"Make LengthWrappers resettable if their _readable has seek/tell","message":"Make LengthWrappers resettable if their _readable has seek/tell\n\nThis allows large object segments to be retried.\n\nChange-Id: I21f43f06e8c78b24d1fc081efedf2687942e042f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/2c1ae6139bf65b134e3e03af8f10c283223b9166"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/2c1ae6139bf65b134e3e03af8f10c283223b9166"}]},"branch":"refs/heads/master"},"ed0e38bb39cf72509e66a8405e1fecb98c03c38e":{"kind":"REWORK","_number":6,"created":"2015-11-19 22:45:35.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/97/226897/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/97/226897/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/6"}}},"commit":{"parents":[{"commit":"c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5","subject":"Merge \"Add headers parameter\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/c90547b5d4304a3f62ba5aa1e78aa620f7dcc1c5"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-09-23 17:42:43.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-11-19 00:07:14.000000000","tz":-480},"subject":"Make LengthWrappers resettable if their _readable has seek/tell","message":"Make LengthWrappers resettable if their _readable has seek/tell\n\nThis allows large object segments to be retried.\n\nChange-Id: I21f43f06e8c78b24d1fc081efedf2687942e042f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/ed0e38bb39cf72509e66a8405e1fecb98c03c38e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/ed0e38bb39cf72509e66a8405e1fecb98c03c38e"}]},"branch":"refs/heads/master"},"6f6bd80a8c11537d76c3aea369604c02193bac58":{"kind":"REWORK","_number":7,"created":"2016-01-06 00:33:23.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/97/226897/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/97/226897/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/7"}}},"commit":{"parents":[{"commit":"81003b8d993dc61ef19c6fc4cbe60d9fda76b4d1","subject":"Merge \"Wrap raw iterators to ensure we send entire contents to server\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/81003b8d993dc61ef19c6fc4cbe60d9fda76b4d1"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-09-23 17:42:43.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2016-01-06 00:33:12.000000000","tz":-480},"subject":"Make LengthWrappers resettable if their _readable has seek/tell","message":"Make LengthWrappers resettable if their _readable has seek/tell\n\nThis allows large object segments to be retried.\n\nChange-Id: I21f43f06e8c78b24d1fc081efedf2687942e042f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/6f6bd80a8c11537d76c3aea369604c02193bac58"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/6f6bd80a8c11537d76c3aea369604c02193bac58"}]},"branch":"refs/heads/master"},"9f79fdc7c8bcc7c7edf065c67e4c0f938775c79f":{"kind":"NO_CODE_CHANGE","_number":8,"created":"2016-01-09 00:08:44.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/97/226897/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/97/226897/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/8"}}},"commit":{"parents":[{"commit":"81003b8d993dc61ef19c6fc4cbe60d9fda76b4d1","subject":"Merge \"Wrap raw iterators to ensure we send entire contents to server\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/81003b8d993dc61ef19c6fc4cbe60d9fda76b4d1"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-09-23 17:42:43.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2016-01-09 00:00:59.000000000","tz":-480},"subject":"Retry file uploads via SwiftService","message":"Retry file uploads via SwiftService\n\nWhen we introduced LengthWrapper, we neglected to make it resettable. As\na result, upload failures result in errors like:\n\n    put_object(...) failure and no ability to reset contents for reupload.\n\nNow, LengthWrappers will be resettable if their _readable has seek/tell.\n\nRelated-Change: I6c8bc1366dfb591a26d934a30cd21c9e6b9a04ce\nChange-Id: I21f43f06e8c78b24d1fc081efedf2687942e042f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/9f79fdc7c8bcc7c7edf065c67e4c0f938775c79f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/9f79fdc7c8bcc7c7edf065c67e4c0f938775c79f"}]},"branch":"refs/heads/master"},"d4157ce5b5eeeebb3516092de995cee20025a5c1":{"kind":"REWORK","_number":9,"created":"2016-01-11 19:15:59.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/97/226897/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/97/226897/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/97/226897/9"}}},"commit":{"parents":[{"commit":"81003b8d993dc61ef19c6fc4cbe60d9fda76b4d1","subject":"Merge \"Wrap raw iterators to ensure we send entire contents to server\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/81003b8d993dc61ef19c6fc4cbe60d9fda76b4d1"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-09-23 17:42:43.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2016-01-11 19:12:13.000000000","tz":-480},"subject":"Retry file uploads via SwiftService","message":"Retry file uploads via SwiftService\n\nWhen we introduced LengthWrapper, we neglected to make it resettable. As\na result, upload failures result in errors like:\n\n    put_object(...) failure and no ability to reset contents for reupload.\n\nNow, LengthWrappers will be resettable if their _readable has seek/tell.\n\nRelated-Change: I6c8bc1366dfb591a26d934a30cd21c9e6b9a04ce\nChange-Id: I21f43f06e8c78b24d1fc081efedf2687942e042f\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/d4157ce5b5eeeebb3516092de995cee20025a5c1"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/d4157ce5b5eeeebb3516092de995cee20025a5c1"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
