)]}'
{"id":"openstack%2Fswift~201055","triplet_id":"openstack%2Fswift~master~If85826243f955d2f03c6ad395215c73daab509b1","project":"openstack/swift","branch":"master","topic":"bug/1467677","hashtags":[],"change_id":"If85826243f955d2f03c6ad395215c73daab509b1","subject":"Fix 499 client disconnected on COPY EC object","status":"MERGED","created":"2015-07-13 09:31:33.000000000","updated":"2015-07-24 06:55:06.000000000","submitted":"2015-07-24 06:55:05.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":4,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"b31e9081c04bb9dfb71623d545c70c0a1d9e7768","_number":201055,"virtual_id_number":201055,"owner":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":0,"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},{"value":0,"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"value":0,"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},{"value":0,"date":"2015-07-22 09:22:42.000000000","_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},{"value":0,"_account_id":13104,"name":"Minwoo Bae","email":"minwoob@us.ibm.com","username":"minwoob"},{"value":0,"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"value":0,"_account_id":14867,"name":"Jaivish Kothari(janonymous)","email":"janonymous.codevulture@gmail.com","username":"Janonymous"},{"value":2,"date":"2015-07-24 06:55:05.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"}],"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":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"all":[{"value":0,"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},{"value":2,"date":"2015-07-23 16:30:03.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"value":0,"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},{"value":0,"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},{"value":0,"_account_id":13104,"name":"Minwoo Bae","email":"minwoob@us.ibm.com","username":"minwoob"},{"value":2,"date":"2015-07-24 04:05:34.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"value":1,"date":"2015-07-23 16:44:05.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":14867,"name":"Jaivish Kothari(janonymous)","email":"janonymous.codevulture@gmail.com","username":"Janonymous"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"}],"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":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"all":[{"value":0,"date":"2015-07-23 03:41:03.000000000","_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},{"value":0,"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},{"value":0,"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},{"value":0,"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},{"value":0,"_account_id":13104,"name":"Minwoo Bae","email":"minwoob@us.ibm.com","username":"minwoob"},{"value":1,"date":"2015-07-24 04:05:34.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"value":0,"_account_id":14867,"name":"Jaivish Kothari(janonymous)","email":"janonymous.codevulture@gmail.com","username":"Janonymous"},{"value":0,"_account_id":3,"name":"Jenkins","username":"jenkins"}],"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":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},{"_account_id":13104,"name":"Minwoo Bae","email":"minwoob@us.ibm.com","username":"minwoob"},{"_account_id":14867,"name":"Jaivish Kothari(janonymous)","email":"janonymous.codevulture@gmail.com","username":"Janonymous"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-07-14 14:12:28.000000000","updated_by":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"reviewer":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"state":"REVIEWER"},{"updated":"2015-07-16 15:15:32.000000000","updated_by":{"_account_id":13104,"name":"Minwoo Bae","email":"minwoob@us.ibm.com","username":"minwoob"},"reviewer":{"_account_id":13104,"name":"Minwoo Bae","email":"minwoob@us.ibm.com","username":"minwoob"},"state":"REVIEWER"},{"updated":"2015-07-23 03:41:03.000000000","updated_by":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"reviewer":{"_account_id":8859,"name":"Daisuke Morita","email":"morita.daisuke@ntti3.com","username":"morrisson"},"state":"REVIEWER"},{"updated":"2015-07-23 16:30:03.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":"2015-07-23 16:44:05.000000000","updated_by":{"_account_id":14867,"name":"Jaivish Kothari(janonymous)","email":"janonymous.codevulture@gmail.com","username":"Janonymous"},"reviewer":{"_account_id":14867,"name":"Jaivish Kothari(janonymous)","email":"janonymous.codevulture@gmail.com","username":"Janonymous"},"state":"REVIEWER"},{"updated":"2015-07-24 04:05:34.000000000","updated_by":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"reviewer":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"state":"REVIEWER"},{"updated":"2015-07-24 06:55:05.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"8515af603c692851fd99b32a231a8336c98fcbe3","author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"date":"2015-07-13 09:31:33.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"9306cae5624a1859730228066ac44a1ba247b85b","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-07-13 12:00:06.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-swift-pep8 http://logs.openstack.org/55/201055/1/check/gate-swift-pep8/98ca20c/ : SUCCESS in 2m 07s\n- gate-swift-docs http://docs-draft.openstack.org/55/201055/1/check/gate-swift-docs/5e8fea0//doc/build/html/ : SUCCESS in 3m 12s\n- gate-swift-python27 http://logs.openstack.org/55/201055/1/check/gate-swift-python27/7aaabb5/ : SUCCESS in 4m 01s\n- gate-swift-tox-func http://logs.openstack.org/55/201055/1/check/gate-swift-tox-func/b1c8c4b/ : SUCCESS in 5m 52s (non-voting)\n- gate-swift-python34 http://logs.openstack.org/55/201055/1/check/gate-swift-python34/115bdd8/ : FAILURE in 2m 31s (non-voting)\n- check-tempest-dsvm-full http://logs.openstack.org/55/201055/1/check/check-tempest-dsvm-full/12e52ad/ : SUCCESS in 42m 57s\n- check-grenade-dsvm http://logs.openstack.org/55/201055/1/check/check-grenade-dsvm/cf86265/ : SUCCESS in 45m 37s\n- check-swift-dsvm-functional http://logs.openstack.org/55/201055/1/check/check-swift-dsvm-functional/0b67e82/ : SUCCESS in 26m 06s","accounts_in_message":[],"_revision_number":1},{"id":"d36e83233c8a60ddb2c6a06268a376595422eb70","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2015-07-14 08:06:33.000000000","message":"Patch Set 1: Code-Review+2\n\n(1 comment)\n\nLooks good, tested it, patch fails on old code, nice work Kota.\n\nI had a bit of a nit (which is even less then a nit) so definitely +2 for me.","accounts_in_message":[],"_revision_number":1},{"id":"5b40d9ab7482a0da4728bb1e5c97e5f4fabdbcdf","author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"date":"2015-07-14 14:12:28.000000000","message":"Patch Set 1: Code-Review+1","accounts_in_message":[],"_revision_number":1},{"id":"94ae73eabe1270a78cf01b8700742ee79ea552f3","author":{"_account_id":14867,"name":"Jaivish Kothari(janonymous)","email":"janonymous.codevulture@gmail.com","username":"Janonymous"},"date":"2015-07-14 18:37:52.000000000","message":"Patch Set 1: Code-Review+1","accounts_in_message":[],"_revision_number":1},{"id":"dc6353454bd447bfbde59e012225fa0c4ee77810","author":{"_account_id":13104,"name":"Minwoo Bae","email":"minwoob@us.ibm.com","username":"minwoob"},"date":"2015-07-16 15:15:32.000000000","message":"Patch Set 1: Code-Review+1\n\nThe change looks good to me.","accounts_in_message":[],"_revision_number":1},{"id":"e3396b2242a4b8d6bc4f7f61c4212ebf9e1806a3","author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"date":"2015-07-17 02:48:57.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"2648400e3c3dcc90464a9355b9489b698f2a999f","author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"date":"2015-07-17 02:58:52.000000000","message":"Patch Set 2:\n\nJust moved 2 lines according to Matthew\u0027s comment.\n\nAt first, I\u0027m a bit worried whether we should call _response_iter() before the resp status handling but it\u0027s unnecessary it affects just successful status and content length.\n\nI checked 416 unsatisfied range by hand and this worked well so there is no reason to block the code moving. I still am working to write some units but I guess it would be ok to maintain the units as follow up patches because we should add them also about replicated case.","accounts_in_message":[],"_revision_number":2},{"id":"e0e38dbedd3b133dc755b865e1e1ef3cb14f908f","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-07-17 03:53:21.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-swift-pep8 http://logs.openstack.org/55/201055/2/check/gate-swift-pep8/bc2a0b0/ : SUCCESS in 2m 39s\n- gate-swift-docs http://docs-draft.openstack.org/55/201055/2/check/gate-swift-docs/99b36eb//doc/build/html/ : SUCCESS in 3m 16s\n- gate-swift-python27 http://logs.openstack.org/55/201055/2/check/gate-swift-python27/c86af24/ : SUCCESS in 4m 59s\n- gate-swift-tox-func http://logs.openstack.org/55/201055/2/check/gate-swift-tox-func/d425b41/ : SUCCESS in 5m 43s (non-voting)\n- gate-swift-python34 http://logs.openstack.org/55/201055/2/check/gate-swift-python34/0e15021/ : FAILURE in 3m 32s (non-voting)\n- gate-tempest-dsvm-full http://logs.openstack.org/55/201055/2/check/gate-tempest-dsvm-full/60c2ad7/ : SUCCESS in 40m 00s\n- gate-grenade-dsvm http://logs.openstack.org/55/201055/2/check/gate-grenade-dsvm/1bd896a/ : SUCCESS in 45m 13s\n- gate-swift-dsvm-functional http://logs.openstack.org/55/201055/2/check/gate-swift-dsvm-functional/86d0ca7/ : SUCCESS in 27m 00s","accounts_in_message":[],"_revision_number":2},{"id":"b5dfc8966ba1d3e41c7715be87e1fb2f931ba51d","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2015-07-22 06:56:08.000000000","message":"Patch Set 2: Code-Review-1\n\nso this *doesn\u0027t* work for me on 416 - the Content-Length is wrong in the response [1] and curl hangs.  It works on replicated of course because the resp that comes out of ReplicatedObjectController.GET is actually a 416 - not a stub that gets translated to a 416 when you call it.\n\nSo I think it\u0027s wrong to try and work around this in COPY, but bug is the ECObjectController is returning a response that has the wrong status and content-length.  The only reason it even works is because all EC PUT\u0027s are chunked encoding - the requests content-length is popped off the headers made to the backends first thing in _connect_put_node.\n\nI think ECObjectController is doing a few questionable things when constructing the resp object returned on GET and swob is thankfully papering over some it for us.  But I think we should endeavor to solve this by making the ECObjectController capable of returning a response object that is reasonable - which may include growing some better interfaces in swob [2]\n\n1.  https://gist.github.com/clayg/cf1c39be98279ae3d7eb \n\n2. https://gist.github.com/clayg/d8fd7fc6f811835b4ccf","accounts_in_message":[],"_revision_number":2},{"id":"35fe76a4c85570654566094c797d203ede7dc697","author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"date":"2015-07-22 07:25:28.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"7e49a41e7e0ad39d8ed94d9761a8782bfa75bfe7","author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"date":"2015-07-22 07:28:13.000000000","message":"Patch Set 3:\n\n＠Clay\n\nThanks for reviewing. I was starting to work on this according to the conversation with you at IRC before the comments submitted so this is tentative. From now, I will start to confirm your patch on github and I\u0027m willing to show the difference for you.","accounts_in_message":[],"_revision_number":3},{"id":"63a32bea4958d00463e6da1f628b69f4ad5a4aed","author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"date":"2015-07-22 08:59:08.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"e80d45dff1e3cd84930a36dc22ed47136302ebc8","author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"date":"2015-07-22 09:10:51.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"edc9b92db5a02cd64790a34d4d5e314efef69973","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2015-07-22 09:16:56.000000000","message":"Patch Set 5: Code-Review+1\n\nmakes sense to me - but I\u0027ve been saying I\u0027m done for the night for like an hour.  Nice work Kota, I\u0027ll star this for tomorrow!","accounts_in_message":[],"_revision_number":5},{"id":"4f0a609ca135c860268050d4ade61bcba4bbbad1","author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"date":"2015-07-22 09:22:42.000000000","message":"Patch Set 5:\n\n@Clay\n\nAs I mentioned at IRC, the curl stuck[1] is related to bug/1475499. I guess, we can remove the stuck easily like [2] *BUT* [2] doesn\u0027t maintain the response body and tests. IMHO, we should consider a way to set response body from object-server in EC *error* case to fix bug/1475499. (ResumingGetter.bodies seems empty for the error case)\n\nAnd I got a E-mail from gerrit during writing this you commented on this, so maybe you know everything!\n\nHave a good night!\n\n1. https://gist.github.com/clayg/cf1c39be98279ae3d7eb\n2. http://paste.openstack.org/show/399105/","accounts_in_message":[],"_revision_number":5},{"id":"35768d9250b3feca0866e2d9b9e13602d593f266","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-07-22 21:24:46.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-swift-pep8 http://logs.openstack.org/55/201055/3/check/gate-swift-pep8/1368c1e/ : SUCCESS in 2m 45s\n- gate-swift-docs http://docs-draft.openstack.org/55/201055/3/check/gate-swift-docs/63da43a//doc/build/html/ : SUCCESS in 3m 17s\n- gate-swift-python27 http://logs.openstack.org/55/201055/3/check/gate-swift-python27/4da89bc/ : SUCCESS in 5m 13s\n- gate-swift-tox-func http://logs.openstack.org/55/201055/3/check/gate-swift-tox-func/e09bb31/ : SUCCESS in 5m 16s (non-voting)\n- gate-swift-python34 http://logs.openstack.org/55/201055/3/check/gate-swift-python34/8e142c9/ : FAILURE in 2m 35s (non-voting)\n- gate-tempest-dsvm-full http://logs.openstack.org/55/201055/3/check/gate-tempest-dsvm-full/6081f00/ : SUCCESS in 39m 41s\n- gate-grenade-dsvm http://logs.openstack.org/55/201055/3/check/gate-grenade-dsvm/b467974/ : SUCCESS in 45m 42s\n- gate-swift-dsvm-functional http://logs.openstack.org/55/201055/3/check/gate-swift-dsvm-functional/13f0ffd/ : SUCCESS in 35m 01s","accounts_in_message":[],"_revision_number":3},{"id":"ea762c67119f8a12fe4df965bba0489939382c25","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2015-07-23 03:31:46.000000000","message":"Patch Set 5:\n\nidk, maybe this is slightly better than what we have now - but I kind of think lp bug #1467677 and lp bug #1475499 are both kind of the same bug - ec ranged get doesn\u0027t know how to return a decent response without some crazy swob stuff that no one understands.\n\nnot calling the fix-response on the error responses [1] is sort of obviously correct to me.  I hadn\u0027t seen that you have to also call for HEAD - the comment makes it sound like there\u0027s \"no fancy EC\" stuff going up - but fixing the content-length in the proxy is as important on an EC HEAD request as anywhere else [4].\n\nThe fact that the bodies are lost on 416 for unsatisfiable EC ranged GET responses is due to a wild mystery of ResumingGetter [2] and swob [3] interaction.  My \"solution\" was just to replace the made up body \u0027\u0027 with the made up body None and let swob magic it for the client [4].\n\nWhat do you think?  Is this all the same bug or not?\n\n1. http://paste.openstack.org/show/399105/\n\n2.https://github.com/openstack/swift/blob/master/swift/proxy/controllers/base.py#L1019\n\n3. https://github.com/openstack/swift/blob/master/swift/common/swob.py#L1313\n\n4. https://gist.github.com/clayg/78c1100fd0d30c35d670","accounts_in_message":[],"_revision_number":5},{"id":"3915589471e765052f551a173ccee1c060c38bc9","author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"date":"2015-07-23 04:21:23.000000000","message":"Patch Set 5:\n\nWhat a man! That\u0027s where I am about bug #1475499. I didn\u0027t find a way to add the error body yet before you suggested but setting None to resp.body seems better and I\u0027m willing to make some tests for that :D\n\n\nAnd then, exactly they are similar kinds of bugs but not same, I guess. If it\u0027s good making one patch to solve more than a bug (e.g. a couple of lines \"Closes-Bug: #xxxxxxxx\" in commit log), I could make a solution on this taking both tickets. That\u0027s just my concern, though maybe it won\u0027t be so big patch.","accounts_in_message":[],"_revision_number":5},{"id":"da3dbfa925594b7640420d2c21778d642cca65e8","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2015-07-23 16:30:03.000000000","message":"Patch Set 5: Code-Review+2\n\n(2 comments)\n\nOk, well if the bugs are \"Copy with a working Range request works but gives the wrong status\" and \"unsatisfiable Range requests return invalid HTTP responses\" I guess I just think the latter should be a higher priority.\n\nBut if the idea is \"since we have this lets just merge it can keep working on the other stuff\" - I\u0027m cool with that.\n\nIs this the other patch?\n\nhttps://review.openstack.org/#/c/204892/","accounts_in_message":[],"_revision_number":5},{"id":"57641d636ae4ead348c90f57f27c0a5af406dc92","author":{"_account_id":14867,"name":"Jaivish Kothari(janonymous)","email":"janonymous.codevulture@gmail.com","username":"Janonymous"},"date":"2015-07-23 16:44:05.000000000","message":"Patch Set 5: Code-Review+1","accounts_in_message":[],"_revision_number":5},{"id":"b32ab21a860388d5297707bfb99f5e29d827439f","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2015-07-24 04:05:34.000000000","message":"Patch Set 5: Code-Review+2 Workflow+1\n\n(1 comment)\n\nSeeing as this is in priority reviews lets get it in, it is fixing the bug, and I\u0027ve tested it in my test env.","accounts_in_message":[],"_revision_number":5},{"id":"d820a3d904c0be13d12b8ed7766535881a5f0ff9","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-07-24 04:05:41.000000000","message":"Patch Set 5:\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":5},{"id":"adf1abdda48cfd0f1720e2176763a687cd97f865","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-07-24 06:55:05.000000000","message":"Patch Set 5: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-swift-docs http://docs-draft.openstack.org/55/201055/5/gate/gate-swift-docs/7b48626//doc/build/html/ : SUCCESS in 2m 58s\n- gate-swift-pep8 http://logs.openstack.org/55/201055/5/gate/gate-swift-pep8/1a385f8/ : SUCCESS in 2m 34s\n- gate-swift-python27 http://logs.openstack.org/55/201055/5/gate/gate-swift-python27/8060a1a/ : SUCCESS in 4m 09s\n- gate-tempest-dsvm-full http://logs.openstack.org/55/201055/5/gate/gate-tempest-dsvm-full/ad3884f/ : SUCCESS in 54m 40s\n- gate-grenade-dsvm http://logs.openstack.org/55/201055/5/gate/gate-grenade-dsvm/10b43d1/ : SUCCESS in 46m 01s\n- gate-swift-dsvm-functional http://logs.openstack.org/55/201055/5/gate/gate-swift-dsvm-functional/34ee33b/ : SUCCESS in 32m 24s","accounts_in_message":[],"_revision_number":5},{"id":"3685135fe34aa4a3753f3cc54dbcb72fb0d9d39f","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-07-24 06:55:06.000000000","message":"Change has been successfully merged into the git repository.","accounts_in_message":[],"_revision_number":5}],"current_revision_number":5,"current_revision":"99d052772a9585e0befdfd292fd03aefde77180a","revisions":{"7b7b872e5285758934ea7786ed36d9485b1a86fc":{"kind":"REWORK","_number":1,"created":"2015-07-13 09:31:33.000000000","uploader":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"ref":"refs/changes/55/201055/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/55/201055/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/55/201055/1"}}},"commit":{"parents":[{"commit":"2f9053b6287d841911b807182eb0054862b7919d","subject":"Merge \"Fix Container Sync example\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2f9053b6287d841911b807182eb0054862b7919d"}]}],"author":{"name":"Kota Tsuyuzaki","email":"tsuyuzaki.kota@lab.ntt.co.jp","date":"2015-07-13 08:12:43.000000000","tz":-420},"committer":{"name":"Kota Tsuyuzaki","email":"tsuyuzaki.kota@lab.ntt.co.jp","date":"2015-07-13 08:50:53.000000000","tz":-420},"subject":"Fix 499 client disconnected on COPY EC object","message":"Fix 499 client disconnected on COPY EC object\n\nCurrently, a COPY request might go to fail as 499 Client disconnected\nbecause of the difference between destination request content length and\nactual transferred bytes.\n\nThat is because actual response status and content length for an EC object\nrange GET is handled at calling the response instance on proxy server.\nTherefore the calling response instance (resp()) will change the status\nint from 200 (HTTP_OK) to 206 (PartialContent) and will change the\ncontent length for the range GET.\n\nHOWEVER _handle_copy_request sets the destination request content length\nfrom source response before calling the response instance. That triggers\nthis bug.\n\nIn replicated case, proxy server doesn\u0027t need to maintain such a translation\nbecause the response from object-server is just 206 PartialContent on\nrange GET.\n\nIn EC case, sometimes Swift needs whole stored contents to decode a segment.\nIt will make 200 HTTP OK response from object-server and proxy-server\nwill unfortunately set whole content length to the destination content\nlength.\n\nThis patch fixes such a bug by calling _resposne_iter() before setting the\ndestination content length. Calling _response_iter() will handle the\nresponse status and content_length according to actual response\niteration.\n\nChange-Id: If85826243f955d2f03c6ad395215c73daab509b1\nCloses-Bug: #1467677\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/7b7b872e5285758934ea7786ed36d9485b1a86fc"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/7b7b872e5285758934ea7786ed36d9485b1a86fc"}]},"branch":"refs/heads/master"},"7fb144e3e235b860e2734c4612bed46792674781":{"kind":"REWORK","_number":2,"created":"2015-07-17 02:48:57.000000000","uploader":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"ref":"refs/changes/55/201055/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/55/201055/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/55/201055/2"}}},"commit":{"parents":[{"commit":"2f9053b6287d841911b807182eb0054862b7919d","subject":"Merge \"Fix Container Sync example\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2f9053b6287d841911b807182eb0054862b7919d"}]}],"author":{"name":"Kota Tsuyuzaki","email":"tsuyuzaki.kota@lab.ntt.co.jp","date":"2015-07-13 08:12:43.000000000","tz":-420},"committer":{"name":"Kota Tsuyuzaki","email":"tsuyuzaki.kota@lab.ntt.co.jp","date":"2015-07-15 12:45:09.000000000","tz":-420},"subject":"Fix 499 client disconnected on COPY EC object","message":"Fix 499 client disconnected on COPY EC object\n\nCurrently, a COPY request might go to fail as 499 Client disconnected\nbecause of the difference between destination request content length and\nactual transferred bytes.\n\nThat is because actual response status and content length for an EC object\nrange GET is handled at calling the response instance on proxy server.\nTherefore the calling response instance (resp()) will change the status\nint from 200 (HTTP_OK) to 206 (PartialContent) and will change the\ncontent length for the range GET.\n\nHOWEVER _handle_copy_request sets the destination request content length\nfrom source response before calling the response instance. That triggers\nthis bug.\n\nIn replicated case, proxy server doesn\u0027t need to maintain such a translation\nbecause the response from object-server is just 206 PartialContent on\nrange GET.\n\nIn EC case, sometimes Swift needs whole stored contents to decode a segment.\nIt will make 200 HTTP OK response from object-server and proxy-server\nwill unfortunately set whole content length to the destination content\nlength.\n\nThis patch fixes such a bug by calling _resposne_iter() before setting the\ndestination content length. Calling _response_iter() will handle the\nresponse status and content_length according to actual response\niteration.\n\nChange-Id: If85826243f955d2f03c6ad395215c73daab509b1\nCloses-Bug: #1467677\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/7fb144e3e235b860e2734c4612bed46792674781"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/7fb144e3e235b860e2734c4612bed46792674781"}]},"branch":"refs/heads/master"},"b08d142b1abba4593fc68348a70ba34e3a7fff9f":{"kind":"REWORK","_number":3,"created":"2015-07-22 07:25:28.000000000","uploader":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"ref":"refs/changes/55/201055/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/55/201055/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/55/201055/3"}}},"commit":{"parents":[{"commit":"2f9053b6287d841911b807182eb0054862b7919d","subject":"Merge \"Fix Container Sync example\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2f9053b6287d841911b807182eb0054862b7919d"}]}],"author":{"name":"Kota Tsuyuzaki","email":"tsuyuzaki.kota@lab.ntt.co.jp","date":"2015-07-13 08:12:43.000000000","tz":-420},"committer":{"name":"Kota Tsuyuzaki","email":"tsuyuzaki.kota@lab.ntt.co.jp","date":"2015-07-22 07:10:04.000000000","tz":-420},"subject":"Fix 499 client disconnected on COPY EC object","message":"Fix 499 client disconnected on COPY EC object\n\nCurrently, a COPY request might go to fail as 499 Client disconnected\nbecause of the difference between destination request content length and\nactual transferred bytes.\n\nThat is because actual response status and content length for an EC object\nrange GET is handled at calling the response instance on proxy server.\nTherefore the calling response instance (resp()) will change the status\nint from 200 (HTTP_OK) to 206 (PartialContent) and will change the\ncontent length for the range GET.\n\nHOWEVER _handle_copy_request sets the destination request content length\nfrom source response before calling the response instance. That triggers\nthis bug.\n\nIn replicated case, proxy server doesn\u0027t need to maintain such a translation\nbecause the response from object-server is just 206 PartialContent on\nrange GET.\n\nIn EC case, sometimes Swift needs whole stored contents to decode a segment.\nIt will make 200 HTTP OK response from object-server and proxy-server\nwill unfortunately set whole content length to the destination content\nlength.\n\nThis patch fixes such a bug by calling _resposne_iter() before setting the\ndestination content length. Calling _response_iter() will handle the\nresponse status and content_length according to actual response\niteration.\n\nChange-Id: If85826243f955d2f03c6ad395215c73daab509b1\nCloses-Bug: #1467677\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b08d142b1abba4593fc68348a70ba34e3a7fff9f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b08d142b1abba4593fc68348a70ba34e3a7fff9f"}]},"branch":"refs/heads/master"},"61afa1d244dd09e225d4f185e36edd7dc0492600":{"kind":"REWORK","_number":4,"created":"2015-07-22 08:59:08.000000000","uploader":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"ref":"refs/changes/55/201055/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/55/201055/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/55/201055/4"}}},"commit":{"parents":[{"commit":"2f9053b6287d841911b807182eb0054862b7919d","subject":"Merge \"Fix Container Sync example\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2f9053b6287d841911b807182eb0054862b7919d"}]}],"author":{"name":"Kota Tsuyuzaki","email":"tsuyuzaki.kota@lab.ntt.co.jp","date":"2015-07-13 08:12:43.000000000","tz":-420},"committer":{"name":"Kota Tsuyuzaki","email":"tsuyuzaki.kota@lab.ntt.co.jp","date":"2015-07-22 08:58:13.000000000","tz":-420},"subject":"Fix 499 client disconnected on COPY EC object","message":"Fix 499 client disconnected on COPY EC object\n\nCurrently, a COPY request might go to fail as 499 Client disconnected\nbecause of the difference between destination request content length and\nactual transferred bytes.\n\nThat is because actual response status and content length for an EC object\nrange GET is handled at calling the response instance on proxy server.\nTherefore the calling response instance (resp()) will change the status\nint from 200 (HTTP_OK) to 206 (PartialContent) and will change the\ncontent length for the range GET.\n\nHOWEVER _handle_copy_request sets the destination request content length\nfrom source response before calling the response instance. That triggers\nthis bug.\n\nIn replicated case, proxy server doesn\u0027t need to maintain such a translation\nbecause the response from object-server is just 206 PartialContent on\nrange GET.\n\nIn EC case, sometimes Swift needs whole stored contents to decode a segment.\nIt will make 200 HTTP OK response from object-server and proxy-server\nwill unfortunately set whole content length to the destination content\nlength.\n\nThis patch fixes such a bug by calling _resposne_iter() before setting the\ndestination content length. Calling _response_iter() will handle the\nresponse status and content_length according to actual response\niteration.\n\nChange-Id: If85826243f955d2f03c6ad395215c73daab509b1\nCloses-Bug: #1467677\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/61afa1d244dd09e225d4f185e36edd7dc0492600"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/61afa1d244dd09e225d4f185e36edd7dc0492600"}]},"branch":"refs/heads/master"},"99d052772a9585e0befdfd292fd03aefde77180a":{"kind":"NO_CODE_CHANGE","_number":5,"created":"2015-07-22 09:10:51.000000000","uploader":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"ref":"refs/changes/55/201055/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/55/201055/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/55/201055/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/55/201055/5"}}},"commit":{"parents":[{"commit":"2f9053b6287d841911b807182eb0054862b7919d","subject":"Merge \"Fix Container Sync example\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/2f9053b6287d841911b807182eb0054862b7919d"}]}],"author":{"name":"Kota Tsuyuzaki","email":"tsuyuzaki.kota@lab.ntt.co.jp","date":"2015-07-13 08:12:43.000000000","tz":-420},"committer":{"name":"Kota Tsuyuzaki","email":"tsuyuzaki.kota@lab.ntt.co.jp","date":"2015-07-22 09:01:32.000000000","tz":-420},"subject":"Fix 499 client disconnected on COPY EC object","message":"Fix 499 client disconnected on COPY EC object\n\nCurrently, a COPY request for an EC object might go to fail as 499 Client\ndisconnected because of the difference between destination request content\nlength and actual transferred bytes.\n\nThat is because the conditional response status and content length for\nan EC object range GET is handled at calling the response instance on\nproxy server. Therefore the calling response instance (resp()) will change\nthe conditional status from 200 (HTTP_OK) to 206 (PartialContent) and will\nchange the content length for the range GET.\n\nIn EC case, sometimes Swift needs whole stored contents to decode a segment.\nIt will make 200 HTTP OK response from object-server and proxy-server\nwill unfortunately set whole content length to the destination content\nlength and it makes the bug 1467677.\n\nThis patch introduces a new method \"fix_conditional_response\" for\nswift.common.swob.Response that calling _response_iter() and cached the\niter in the Response instance. By calling it, Swift can set correct condtional\nresponse any time after setting whole content_length to the response\ninstance like EC case.\n\nChange-Id: If85826243f955d2f03c6ad395215c73daab509b1\nCloses-Bug: #1467677\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/99d052772a9585e0befdfd292fd03aefde77180a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/99d052772a9585e0befdfd292fd03aefde77180a"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
