)]}'
{"id":"openstack%2Fswift~184479","triplet_id":"openstack%2Fswift~master~I2c4e585221387dd02a8679a50398d6b614407b12","project":"openstack/swift","branch":"master","topic":"184479","hashtags":[],"change_id":"I2c4e585221387dd02a8679a50398d6b614407b12","subject":"Allow SLO PUTs to forgo per-segment integrity checks","status":"MERGED","created":"2015-05-20 13:09:52.000000000","updated":"2015-05-27 16:07:31.000000000","submitted":"2015-05-27 16:07:29.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":3,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"e751d64500f054b98150608273ebca5d043495e8","_number":184479,"virtual_id_number":184479,"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":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},{"value":0,"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"value":0,"_account_id":6968,"name":"Christian Schwede","email":"cschwede@redhat.com","username":"cschwede"},{"value":0,"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},{"value":0,"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"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":2,"date":"2015-05-27 16:07:29.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":6968,"name":"Christian Schwede","email":"cschwede@redhat.com","username":"cschwede"},"all":[{"value":0,"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},{"value":0,"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"value":2,"date":"2015-05-27 13:40:10.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":6968,"name":"Christian Schwede","email":"cschwede@redhat.com","username":"cschwede"},{"value":0,"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},{"value":2,"date":"2015-05-27 15:30:51.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"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":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":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"all":[{"value":0,"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},{"value":0,"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"value":0,"_account_id":6968,"name":"Christian Schwede","email":"cschwede@redhat.com","username":"cschwede"},{"value":0,"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},{"value":1,"date":"2015-05-27 15:30:51.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"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":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":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@redhat.com","username":"cschwede"},{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-05-20 15:06:03.000000000","updated_by":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"reviewer":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"state":"REVIEWER"},{"updated":"2015-05-21 18:29:43.000000000","updated_by":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"reviewer":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"state":"REVIEWER"},{"updated":"2015-05-25 19:22:44.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-05-27 11:18:35.000000000","updated_by":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"reviewer":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"state":"REVIEWER"},{"updated":"2015-05-27 13:40:10.000000000","updated_by":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@redhat.com","username":"cschwede"},"reviewer":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@redhat.com","username":"cschwede"},"state":"REVIEWER"},{"updated":"2015-05-27 15:30:51.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":"2015-05-27 16:07:29.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"6229c0d2edd8eeb9dbf09439887e38e5404ad26e","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-05-20 13:09:52.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"7b0fb674da57931c825990a0c72bece3f6f5a084","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-20 13:47:29.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-swift-pep8 http://logs.openstack.org/79/184479/1/check/gate-swift-pep8/cde10dd/ : SUCCESS in 2m 24s\n- gate-swift-docs http://docs-draft.openstack.org/79/184479/1/check/gate-swift-docs/af3e616//doc/build/html/ : SUCCESS in 2m 55s\n- gate-swift-python27 http://logs.openstack.org/79/184479/1/check/gate-swift-python27/9d3c9e1/ : SUCCESS in 4m 35s\n- gate-swift-tox-func http://logs.openstack.org/79/184479/1/check/gate-swift-tox-func/eb227b2/ : SUCCESS in 4m 59s (non-voting)\n- check-tempest-dsvm-full http://logs.openstack.org/79/184479/1/check/check-tempest-dsvm-full/fe58d1c/ : SUCCESS in 36m 30s\n- check-grenade-dsvm http://logs.openstack.org/79/184479/1/check/check-grenade-dsvm/12560fa/ : SUCCESS in 37m 28s\n- check-swift-dsvm-functional http://logs.openstack.org/79/184479/1/check/check-swift-dsvm-functional/d3d4617/ : SUCCESS in 20m 08s","accounts_in_message":[],"_revision_number":1},{"id":"7174a835154786719230dcf39c7fa8ee12eb9e79","author":{"_account_id":9625,"name":"Thiago da Silva","email":"thiagodasilva@gmail.com","username":"thiago"},"date":"2015-05-20 15:06:03.000000000","message":"Patch Set 1: Code-Review+1\n\n@Tim, the change and tests looks good, but since it is a behavior change it would be nice to add a comment about it in the commit message, just so we understand the in the future. How has the use case changed? weren\u0027t the etags and size a way to enforce the correct segments were being used?\n\nAlso, it would be nice to see some functional tests.\n\nOverall I think this will be handy for slo+obj. versioning since users will be able to just update/revert versions of a segment without having to worry about sending a new manifest.","accounts_in_message":[],"_revision_number":1},{"id":"fb0059e3c29f03d60fd389eaf172139c13b6a6f4","author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"date":"2015-05-20 16:43:03.000000000","message":"Patch Set 1: Code-Review-1\n\n(1 comment)\n\nChange looks good, but needs docs. At the top of slo.py is a giant docstring that\u0027s the closest thing we have to proper documentation; that\u0027s probably where the updates need to go.\n\nYou should also mention that this only affects initial manifest creation, not validation at GET-time. If I\u0027m reading this code correctly, you can\u0027t change a segment without uploading a new manifest. (If not, then there are bigger problems, like Range requests being completely broken if you change a segment\u0027s size.)","accounts_in_message":[],"_revision_number":1},{"id":"0d197d655431b562bfb11a66562e4bb22cb7449f","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-05-20 21:23:47.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"2b115374370e6b7435992bc949eabf16810f8943","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-05-20 21:25:47.000000000","message":"Patch Set 2:\n\n@Thiago, added a functional test. Sam is right that this only affects initial manifest creation; we will still verify that the segments haven\u0027t changed on download. This was something that came up last night while Sam and I were talking to some Cloud-A guys last night; I ought to find them and refresh my memory about why *exactly* they felt this would be useful, but I think this was close-ish:\n\nSuppose you\u0027re doing some log rotation, and at the end of some period (say, a month), you want to create an SLO to provide an easy one-request method to download all the logs for that period. Since the segment PUTs are smeared out in the time domain, it\u0027s not really practical (or at any rate, desirable) to track the response from each PUT (which is the documented way to establish etag and size_bytes). I hear you say, \"Well, why not just do a container listing (probably with a prefix-param) and put the result?\" First, we\u0027re left trusting Swift\u0027s consistency anyway; there\u0027s no real benefit to the extra request. Second, you\u0027ll have to translate the manifest keys (hash -\u003e etag, size -\u003e size_bytes). Third, you may need to reorder the segments if you didn\u0027t give yourself proper sequence-number padding, as log-9.txt will sort after log-10.txt.\n\n@Sam, added docs. Clarified that this preserves download validation in both the docs and commit message.","accounts_in_message":[],"_revision_number":2},{"id":"f6f9d4301a55a11c0256377aed235386bd533727","author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"date":"2015-05-20 21:33:34.000000000","message":"Patch Set 2: Code-Review+1\n\n(1 comment)\n\nSeems sane. I\u0027ll go try it out and see what happens.\n\nAlso, could you put \"DocImpact\" on its own line in the commit message? That\u0027ll trigger a ticket creation for the docs team when the patch lands.","accounts_in_message":[],"_revision_number":2},{"id":"698166b957186320dc46171b4ee1931451f638a6","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-20 22:02:41.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-swift-pep8 http://logs.openstack.org/79/184479/2/check/gate-swift-pep8/89bca74/ : FAILURE in 2m 17s\n- gate-swift-docs http://docs-draft.openstack.org/79/184479/2/check/gate-swift-docs/53d263d//doc/build/html/ : SUCCESS in 2m 18s\n- gate-swift-python27 http://logs.openstack.org/79/184479/2/check/gate-swift-python27/8a307fb/ : SUCCESS in 4m 06s\n- gate-swift-tox-func http://logs.openstack.org/79/184479/2/check/gate-swift-tox-func/eef6121/ : FAILURE in 2m 14s (non-voting)\n- check-tempest-dsvm-full http://logs.openstack.org/79/184479/2/check/check-tempest-dsvm-full/461c99f/ : SUCCESS in 36m 14s\n- check-grenade-dsvm http://logs.openstack.org/79/184479/2/check/check-grenade-dsvm/4584588/ : SUCCESS in 37m 49s\n- check-swift-dsvm-functional http://logs.openstack.org/79/184479/2/check/check-swift-dsvm-functional/b818db5/ : SUCCESS in 18m 52s","accounts_in_message":[],"_revision_number":2},{"id":"5f03fc9d0e07010abb2ec21519d721ba0bfa9f47","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-05-20 22:21:43.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"45195289f3afabf7b61ff147dded819e4e15e00e","author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"date":"2015-05-20 22:32:32.000000000","message":"Patch Set 3: Code-Review+1\n\nDoes what it says. How do you feel about a few more functional tests? http://paste.openstack.org/show/dNzi5yKnxUpIeKoWwMuL/","accounts_in_message":[],"_revision_number":3},{"id":"63a1b86bb64ed8b9132bb74873ca6a24807efdcd","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-20 23:11:10.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-swift-pep8 http://logs.openstack.org/79/184479/3/check/gate-swift-pep8/3a40080/ : SUCCESS in 2m 39s\n- gate-swift-docs http://docs-draft.openstack.org/79/184479/3/check/gate-swift-docs/4576ead//doc/build/html/ : SUCCESS in 2m 58s\n- gate-swift-python27 http://logs.openstack.org/79/184479/3/check/gate-swift-python27/3d7ec6a/ : SUCCESS in 3m 52s\n- gate-swift-tox-func http://logs.openstack.org/79/184479/3/check/gate-swift-tox-func/9d18e82/ : FAILURE in 4m 48s (non-voting)\n- check-tempest-dsvm-full http://logs.openstack.org/79/184479/3/check/check-tempest-dsvm-full/2903685/ : SUCCESS in 48m 47s\n- check-grenade-dsvm http://logs.openstack.org/79/184479/3/check/check-grenade-dsvm/6cd52af/ : SUCCESS in 40m 25s\n- check-swift-dsvm-functional http://logs.openstack.org/79/184479/3/check/check-swift-dsvm-functional/3c67cf4/ : SUCCESS in 21m 24s","accounts_in_message":[],"_revision_number":3},{"id":"fd2225453b6d480799a9c67adc2ef943a36f7a0b","author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"date":"2015-05-20 23:45:04.000000000","message":"Uploaded patch set 4.","accounts_in_message":[],"_revision_number":4},{"id":"a9f4c5ce2bb518acc70a43d7d67acf02df8d419b","author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"date":"2015-05-20 23:46:26.000000000","message":"Patch Set 4: Code-Review+2\n\nI fixed up the busted functional test. SLO stores more than just name/hash/bytes, so the fetch-the-manifest test was failing due to extraneous (to the test) crud in the fetched manifest.","accounts_in_message":[],"_revision_number":4},{"id":"e45d2a9bcda6b1e1dc7af91b6590ce0c45b71625","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-21 00:23:08.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-swift-pep8 http://logs.openstack.org/79/184479/4/check/gate-swift-pep8/c037701/ : SUCCESS in 1m 54s\n- gate-swift-docs http://docs-draft.openstack.org/79/184479/4/check/gate-swift-docs/dadc4b7//doc/build/html/ : SUCCESS in 2m 19s\n- gate-swift-python27 http://logs.openstack.org/79/184479/4/check/gate-swift-python27/41ef6a6/ : SUCCESS in 4m 03s\n- gate-swift-tox-func http://logs.openstack.org/79/184479/4/check/gate-swift-tox-func/e63fd00/ : SUCCESS in 5m 21s (non-voting)\n- check-tempest-dsvm-full http://logs.openstack.org/79/184479/4/check/check-tempest-dsvm-full/fc2c1df/ : SUCCESS in 36m 36s\n- check-grenade-dsvm http://logs.openstack.org/79/184479/4/check/check-grenade-dsvm/0b27df1/ : SUCCESS in 37m 51s\n- check-swift-dsvm-functional http://logs.openstack.org/79/184479/4/check/check-swift-dsvm-functional/8883184/ : SUCCESS in 16m 54s","accounts_in_message":[],"_revision_number":4},{"id":"9d43d77248432143cdbd9b6dab125091ee581250","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-05-21 18:12:57.000000000","message":"Uploaded patch set 5.","accounts_in_message":[],"_revision_number":5},{"id":"38212072fb151dee9b84401afe216248137d85f3","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-05-21 18:13:39.000000000","message":"Patch Set 5:\n\nAdded more tests, per Sam\u0027s suggestion.","accounts_in_message":[],"_revision_number":5},{"id":"17c428e52e367c12264073779f1dd06165d0407c","author":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"date":"2015-05-21 18:29:43.000000000","message":"Patch Set 5: Code-Review+2","accounts_in_message":[],"_revision_number":5},{"id":"e55be14396866086d78dc64927552de2fc2a1a1d","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-21 19:00:44.000000000","message":"Patch Set 5: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-swift-pep8 http://logs.openstack.org/79/184479/5/check/gate-swift-pep8/23e3a79/ : SUCCESS in 2m 07s\n- gate-swift-docs http://docs-draft.openstack.org/79/184479/5/check/gate-swift-docs/66be445//doc/build/html/ : SUCCESS in 2m 51s\n- gate-swift-python27 http://logs.openstack.org/79/184479/5/check/gate-swift-python27/017e404/ : SUCCESS in 5m 00s\n- gate-swift-tox-func http://logs.openstack.org/79/184479/5/check/gate-swift-tox-func/a31a033/ : SUCCESS in 4m 56s (non-voting)\n- check-tempest-dsvm-full http://logs.openstack.org/79/184479/5/check/check-tempest-dsvm-full/f4d071f/ : SUCCESS in 46m 55s\n- check-grenade-dsvm http://logs.openstack.org/79/184479/5/check/check-grenade-dsvm/651d8b9/ : SUCCESS in 37m 57s\n- check-swift-dsvm-functional http://logs.openstack.org/79/184479/5/check/check-swift-dsvm-functional/a7a9816/ : SUCCESS in 14m 35s","accounts_in_message":[],"_revision_number":5},{"id":"5d0f8bf68db1bc047965b71e1c016ee4f2580ba4","author":{"_account_id":12279,"name":"Janie Richling","email":"jrichli@us.ibm.com","username":"jrichli"},"date":"2015-05-25 19:22:44.000000000","message":"Patch Set 5: Code-Review+1","accounts_in_message":[],"_revision_number":5},{"id":"de64b12d21c0772d7260056a104d060f79dd7666","author":{"_account_id":4608,"name":"Kota Tsuyuzaki","email":"bloodeagle40234@gmail.com","username":"tsuyuzaki-kota"},"date":"2015-05-27 11:18:35.000000000","message":"Patch Set 5: Code-Review+1\n\n(1 comment)\n\nThis patch set worked well on my lab environment.","accounts_in_message":[],"_revision_number":5},{"id":"c9e7f45c32b9010a6326f26c3e0e309e9f746c3a","author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@redhat.com","username":"cschwede"},"date":"2015-05-27 13:38:45.000000000","message":"Patch Set 6: Commit message was updated","accounts_in_message":[],"_revision_number":6},{"id":"55d9f47aa3ca7f6be0d8f6650ed0cdcc2a4c4ae3","author":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@redhat.com","username":"cschwede"},"date":"2015-05-27 13:40:10.000000000","message":"Patch Set 6: Code-Review+2\n\nEh, just fixed a typo in the commit message, didn\u0027t want to block this by waiting for the fix. Unfortunately applied reviews got lost then, sorry for that.\n\nPatch itself looks good to me, so +2 from my side.","accounts_in_message":[],"_revision_number":6},{"id":"410904e93a89d6c2201517674b2327c477a2bb04","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-27 14:31:42.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-swift-pep8 http://logs.openstack.org/79/184479/6/check/gate-swift-pep8/46c5b51/ : SUCCESS in 2m 16s\n- gate-swift-docs http://docs-draft.openstack.org/79/184479/6/check/gate-swift-docs/ad710d7//doc/build/html/ : SUCCESS in 2m 28s\n- gate-swift-python27 http://logs.openstack.org/79/184479/6/check/gate-swift-python27/bf4c3bf/ : SUCCESS in 4m 32s\n- gate-swift-tox-func http://logs.openstack.org/79/184479/6/check/gate-swift-tox-func/992b46f/ : SUCCESS in 5m 05s (non-voting)\n- check-tempest-dsvm-full http://logs.openstack.org/79/184479/6/check/check-tempest-dsvm-full/1c9c950/ : SUCCESS in 49m 38s\n- check-grenade-dsvm http://logs.openstack.org/79/184479/6/check/check-grenade-dsvm/df54522/ : SUCCESS in 40m 13s\n- check-swift-dsvm-functional http://logs.openstack.org/79/184479/6/check/check-swift-dsvm-functional/2d9d98d/ : SUCCESS in 18m 55s","accounts_in_message":[],"_revision_number":6},{"id":"36edc0a3b0efb91cfacd8b41f86a92f3789c9801","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2015-05-27 15:30:51.000000000","message":"Patch Set 6: Code-Review+2 Workflow+1\n\nlgtm!","accounts_in_message":[],"_revision_number":6},{"id":"38928755e7644cadb400c8230549a3aeca7bc02b","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-27 15:32:41.000000000","message":"Patch Set 6: -Verified\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":6},{"id":"17aed99f80d14c299a6832c15287c4ed7e99ad2d","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-27 16:07:29.000000000","message":"Patch Set 6: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-swift-docs http://docs-draft.openstack.org/79/184479/6/gate/gate-swift-docs/7a5c994//doc/build/html/ : SUCCESS in 4m 37s\n- gate-swift-pep8 http://logs.openstack.org/79/184479/6/gate/gate-swift-pep8/579b768/ : SUCCESS in 2m 27s\n- gate-swift-python27 http://logs.openstack.org/79/184479/6/gate/gate-swift-python27/e0cc282/ : SUCCESS in 4m 14s\n- gate-swift-tox-func http://logs.openstack.org/79/184479/6/gate/gate-swift-tox-func/8ebe18e/ : SUCCESS in 5m 13s (non-voting)\n- gate-tempest-dsvm-full http://logs.openstack.org/79/184479/6/gate/gate-tempest-dsvm-full/4eab1b1/ : SUCCESS in 33m 20s\n- gate-grenade-dsvm http://logs.openstack.org/79/184479/6/gate/gate-grenade-dsvm/f3ba9f8/ : SUCCESS in 34m 22s\n- gate-swift-dsvm-functional http://logs.openstack.org/79/184479/6/gate/gate-swift-dsvm-functional/7ec558e/ : SUCCESS in 15m 54s","accounts_in_message":[],"_revision_number":6},{"id":"cde601f0fa1fe4e6377910233ab1ca9fd838ad3a","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-27 16:07:31.000000000","message":"Change has been successfully merged into the git repository.","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"bb716573ab5c8455348ec013feb894421e0e1f1c","revisions":{"ecedf14fbd8ea0365a442596c7e03a68b927e1a4":{"kind":"REWORK","_number":1,"created":"2015-05-20 13:09:52.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/79/184479/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/79/184479/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/79/184479/1"}}},"commit":{"parents":[{"commit":"e9a032f8964409e9637f43e8884b3b9eab682258","subject":"Merge \"Remove 1 line of dead code from EC reconstructor\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e9a032f8964409e9637f43e8884b3b9eab682258"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-05-20 07:39:41.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-05-20 13:01:05.000000000","tz":-420},"subject":"Allow SLO PUTs to forgo per-segment integrity checks","message":"Allow SLO PUTs to forgo per-segment integrity checks\n\nWhile manifests still require \u0027etag\u0027 and \u0027size_bytes\u0027 fields for each\nsegment (to catch user errors like \u0027etaf\u0027 or \u0027size_btyes\u0027), an explicit\nnull for either will skip that particular integrity check and instead\nuse whatever value is retrieved when HEADing the segment.\n\nChange-Id: I2c4e585221387dd02a8679a50398d6b614407b12\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ecedf14fbd8ea0365a442596c7e03a68b927e1a4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ecedf14fbd8ea0365a442596c7e03a68b927e1a4"}]},"branch":"refs/heads/master"},"40a4260d7fd51aff018a55e54846943effbcfe05":{"kind":"REWORK","_number":2,"created":"2015-05-20 21:23:47.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/79/184479/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/79/184479/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/79/184479/2"}}},"commit":{"parents":[{"commit":"e9a032f8964409e9637f43e8884b3b9eab682258","subject":"Merge \"Remove 1 line of dead code from EC reconstructor\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e9a032f8964409e9637f43e8884b3b9eab682258"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-05-20 07:39:41.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-05-20 21:22:09.000000000","tz":-420},"subject":"Allow SLO PUTs to forgo per-segment integrity checks","message":"Allow SLO PUTs to forgo per-segment integrity checks\n\nWhile manifests still require \u0027etag\u0027 and \u0027size_bytes\u0027 fields for each\nsegment (to catch user errors like \u0027etaf\u0027 or \u0027size_btyes\u0027), an explicit\nnull for either will skip that particular integrity check and instead\nuse whatever value is retrieved when HEADing the segment. So, if a user\nuploads a manifest like:\n\n    [{\"path\": \"/con/obj_seg_1\", \"etag\": null, \"size_bytes\": 1048576},\n     {\"path\": \"/con/obj_seg_2\", \"etag\": \"etag2\", \"size_bytes\": null},\n     {\"path\": \"/con/obj_seg_3\", \"etag\": null, \"size_bytes\": null}]\n\nthen the etag will only be verified for the /con/obj_seg_2 segment,\nand the segment size will only be verified for the /con/obj_seg_3\nsegment. However, the manifest that\u0027s ultimately stored (and can be\nretrieved with a ?multipart-manifest\u003dget query-string) will still look\nlike:\n\n    [{\"name\": \"/con/obj_seg_1\", \"hash\": \"etag1\", \"bytes\": 1048576, ...},\n     {\"name\": \"/con/obj_seg_2\", \"hash\": \"etag2\", \"bytes\": 1048576, ...},\n     {\"name\": \"/con/obj_seg_3\", \"hash\": \"etag3\", \"bytes\": 1234, ...}]\n\nThis allows the middleware to continue performing integrity checks on\nobject GET.\n\nChange-Id: I2c4e585221387dd02a8679a50398d6b614407b12\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/40a4260d7fd51aff018a55e54846943effbcfe05"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/40a4260d7fd51aff018a55e54846943effbcfe05"}]},"branch":"refs/heads/master"},"17e382902a459b7142f16ad3f05a755c4e5dc03a":{"kind":"REWORK","_number":3,"created":"2015-05-20 22:21:43.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/79/184479/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/79/184479/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/79/184479/3"}}},"commit":{"parents":[{"commit":"e9a032f8964409e9637f43e8884b3b9eab682258","subject":"Merge \"Remove 1 line of dead code from EC reconstructor\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e9a032f8964409e9637f43e8884b3b9eab682258"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-05-20 07:39:41.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-05-20 22:21:31.000000000","tz":-420},"subject":"Allow SLO PUTs to forgo per-segment integrity checks","message":"Allow SLO PUTs to forgo per-segment integrity checks\n\nWhile manifests still require \u0027etag\u0027 and \u0027size_bytes\u0027 fields for each\nsegment (to catch user errors like \u0027etaf\u0027 or \u0027size_btyes\u0027), an explicit\nnull for either will skip that particular integrity check and instead\nuse whatever value is retrieved when HEADing the segment. So, if a user\nuploads a manifest like:\n\n    [{\"path\": \"/con/obj_seg_1\", \"etag\": null, \"size_bytes\": 1048576},\n     {\"path\": \"/con/obj_seg_2\", \"etag\": \"etag2\", \"size_bytes\": null},\n     {\"path\": \"/con/obj_seg_3\", \"etag\": null, \"size_bytes\": null}]\n\nthen the etag will only be verified for the /con/obj_seg_2 segment,\nand the segment size will only be verified for the /con/obj_seg_3\nsegment. However, the manifest that\u0027s ultimately stored (and can be\nretrieved with a ?multipart-manifest\u003dget query-string) will still look\nlike:\n\n    [{\"name\": \"/con/obj_seg_1\", \"hash\": \"etag1\", \"bytes\": 1048576, ...},\n     {\"name\": \"/con/obj_seg_2\", \"hash\": \"etag2\", \"bytes\": 1048576, ...},\n     {\"name\": \"/con/obj_seg_3\", \"hash\": \"etag3\", \"bytes\": 1234, ...}]\n\nThis allows the middleware to continue performing integrity checks on\nobject GET.\n\nChange-Id: I2c4e585221387dd02a8679a50398d6b614407b12\nDocImpact\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/17e382902a459b7142f16ad3f05a755c4e5dc03a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/17e382902a459b7142f16ad3f05a755c4e5dc03a"}]},"branch":"refs/heads/master"},"66af061de7f43805685847aabd7ddeda543ab15b":{"kind":"REWORK","_number":4,"created":"2015-05-20 23:45:04.000000000","uploader":{"_account_id":2622,"name":"Samuel Merritt","email":"spam+launchpad@andcheese.org","username":"torgomatic"},"ref":"refs/changes/79/184479/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/79/184479/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/79/184479/4"}}},"commit":{"parents":[{"commit":"e9a032f8964409e9637f43e8884b3b9eab682258","subject":"Merge \"Remove 1 line of dead code from EC reconstructor\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e9a032f8964409e9637f43e8884b3b9eab682258"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-05-20 07:39:41.000000000","tz":-420},"committer":{"name":"Samuel Merritt","email":"sam@swiftstack.com","date":"2015-05-20 23:44:48.000000000","tz":-420},"subject":"Allow SLO PUTs to forgo per-segment integrity checks","message":"Allow SLO PUTs to forgo per-segment integrity checks\n\nWhile manifests still require \u0027etag\u0027 and \u0027size_bytes\u0027 fields for each\nsegment (to catch user errors like \u0027etaf\u0027 or \u0027size_btyes\u0027), an explicit\nnull for either will skip that particular integrity check and instead\nuse whatever value is retrieved when HEADing the segment. So, if a user\nuploads a manifest like:\n\n    [{\"path\": \"/con/obj_seg_1\", \"etag\": null, \"size_bytes\": 1048576},\n     {\"path\": \"/con/obj_seg_2\", \"etag\": \"etag2\", \"size_bytes\": null},\n     {\"path\": \"/con/obj_seg_3\", \"etag\": null, \"size_bytes\": null}]\n\nthen the etag will only be verified for the /con/obj_seg_2 segment,\nand the segment size will only be verified for the /con/obj_seg_3\nsegment. However, the manifest that\u0027s ultimately stored (and can be\nretrieved with a ?multipart-manifest\u003dget query-string) will still look\nlike:\n\n    [{\"name\": \"/con/obj_seg_1\", \"hash\": \"etag1\", \"bytes\": 1048576, ...},\n     {\"name\": \"/con/obj_seg_2\", \"hash\": \"etag2\", \"bytes\": 1048576, ...},\n     {\"name\": \"/con/obj_seg_3\", \"hash\": \"etag3\", \"bytes\": 1234, ...}]\n\nThis allows the middleware to continue performing integrity checks on\nobject GET.\n\nChange-Id: I2c4e585221387dd02a8679a50398d6b614407b12\nDocImpact\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/66af061de7f43805685847aabd7ddeda543ab15b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/66af061de7f43805685847aabd7ddeda543ab15b"}]},"branch":"refs/heads/master"},"8bbb0b320d4ff6c8434878b73389499e771e6ad4":{"kind":"REWORK","_number":5,"created":"2015-05-21 18:12:57.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/79/184479/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/79/184479/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/79/184479/5"}}},"commit":{"parents":[{"commit":"e9a032f8964409e9637f43e8884b3b9eab682258","subject":"Merge \"Remove 1 line of dead code from EC reconstructor\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e9a032f8964409e9637f43e8884b3b9eab682258"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-05-20 07:39:41.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-05-21 18:10:45.000000000","tz":-420},"subject":"Allow SLO PUTs to forgo per-segment integrity checks","message":"Allow SLO PUTs to forgo per-segment integrity checks\n\nWhile manifests still require \u0027etag\u0027 and \u0027size_bytes\u0027 fields for each\nsegment (to catch user errors like \u0027etaf\u0027 or \u0027size_btyes\u0027), an explicit\nnull for either will skip that particular integrity check and instead\nuse whatever value is retrieved when HEADing the segment. So, if a user\nuploads a manifest like:\n\n    [{\"path\": \"/con/obj_seg_1\", \"etag\": null, \"size_bytes\": 1048576},\n     {\"path\": \"/con/obj_seg_2\", \"etag\": \"etag2\", \"size_bytes\": null},\n     {\"path\": \"/con/obj_seg_3\", \"etag\": null, \"size_bytes\": null}]\n\nthen the etag will only be verified for the /con/obj_seg_2 segment,\nand the segment size will only be verified for the /con/obj_seg_3\nsegment. However, the manifest that\u0027s ultimately stored (and can be\nretrieved with a ?multipart-manifest\u003dget query-string) will still look\nlike:\n\n    [{\"name\": \"/con/obj_seg_1\", \"hash\": \"etag1\", \"bytes\": 1048576, ...},\n     {\"name\": \"/con/obj_seg_2\", \"hash\": \"etag2\", \"bytes\": 1048576, ...},\n     {\"name\": \"/con/obj_seg_3\", \"hash\": \"etag3\", \"bytes\": 1234, ...}]\n\nThis allows the middleware to continue performing integrity checks on\nobject GET.\n\nChange-Id: I2c4e585221387dd02a8679a50398d6b614407b12\nDocImpact\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/8bbb0b320d4ff6c8434878b73389499e771e6ad4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/8bbb0b320d4ff6c8434878b73389499e771e6ad4"}]},"branch":"refs/heads/master"},"bb716573ab5c8455348ec013feb894421e0e1f1c":{"kind":"NO_CODE_CHANGE","_number":6,"created":"2015-05-27 13:38:45.000000000","uploader":{"_account_id":6968,"name":"Christian Schwede","email":"cschwede@redhat.com","username":"cschwede"},"ref":"refs/changes/79/184479/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/79/184479/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/79/184479/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/79/184479/6"}}},"commit":{"parents":[{"commit":"e9a032f8964409e9637f43e8884b3b9eab682258","subject":"Merge \"Remove 1 line of dead code from EC reconstructor\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e9a032f8964409e9637f43e8884b3b9eab682258"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-05-20 07:39:41.000000000","tz":-420},"committer":{"name":"Christian Schwede","email":"cschwede@redhat.com","date":"2015-05-27 13:38:45.000000000","tz":0},"subject":"Allow SLO PUTs to forgo per-segment integrity checks","message":"Allow SLO PUTs to forgo per-segment integrity checks\n\nWhile manifests still require \u0027etag\u0027 and \u0027size_bytes\u0027 fields for each\nsegment (to catch user errors like \u0027etaf\u0027 or \u0027size_btyes\u0027), an explicit\nnull for either will skip that particular integrity check and instead\nuse whatever value is retrieved when HEADing the segment. So, if a user\nuploads a manifest like:\n\n    [{\"path\": \"/con/obj_seg_1\", \"etag\": null, \"size_bytes\": 1048576},\n     {\"path\": \"/con/obj_seg_2\", \"etag\": \"etag2\", \"size_bytes\": null},\n     {\"path\": \"/con/obj_seg_3\", \"etag\": null, \"size_bytes\": null}]\n\nthen the etag will only be verified for the /con/obj_seg_2 segment,\nand the segment size will only be verified for the /con/obj_seg_1\nsegment. However, the manifest that\u0027s ultimately stored (and can be\nretrieved with a ?multipart-manifest\u003dget query-string) will still look\nlike:\n\n    [{\"name\": \"/con/obj_seg_1\", \"hash\": \"etag1\", \"bytes\": 1048576, ...},\n     {\"name\": \"/con/obj_seg_2\", \"hash\": \"etag2\", \"bytes\": 1048576, ...},\n     {\"name\": \"/con/obj_seg_3\", \"hash\": \"etag3\", \"bytes\": 1234, ...}]\n\nThis allows the middleware to continue performing integrity checks on\nobject GET.\n\nChange-Id: I2c4e585221387dd02a8679a50398d6b614407b12\nDocImpact\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/bb716573ab5c8455348ec013feb894421e0e1f1c"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/bb716573ab5c8455348ec013feb894421e0e1f1c"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
