)]}'
{"id":"openstack%2Fpython-swiftclient~161043","triplet_id":"openstack%2Fpython-swiftclient~master~Ic484e9a0c186c9283c4012c6a2fa77b96b8edf8a","project":"openstack/python-swiftclient","branch":"master","topic":"bug/1251507","hashtags":[],"change_id":"Ic484e9a0c186c9283c4012c6a2fa77b96b8edf8a","subject":"Compare each chunk of large objects when uploading","status":"MERGED","created":"2015-03-04 00:38:06.000000000","updated":"2015-04-30 18:49:00.000000000","submitted":"2015-04-30 18:48:59.000000000","submitter":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"total_comment_count":6,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"e166fe9c091955deec8966b544a8ba741d398967","_number":161043,"virtual_id_number":161043,"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":"2015-04-30 18:48:59.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"_account_id":10068,"name":"Welcome, new contributor!","username":"welcome-message"},{"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,"date":"2015-03-24 01:45:50.000000000","_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"recommended":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"all":[{"value":1,"date":"2015-04-29 18:32:39.000000000","permitted_voting_range":{"min":1,"max":1},"_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":10068,"name":"Welcome, new contributor!","username":"welcome-message"},{"value":2,"date":"2015-04-30 17:47:15.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":2,"date":"2015-04-21 21:09:57.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":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":"","value":1,"default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"all":[{"value":0,"_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":10068,"name":"Welcome, new contributor!","username":"welcome-message"},{"value":1,"date":"2015-04-30 17:47:15.000000000","permitted_voting_range":{"min":1,"max":1},"_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":10068,"name":"Welcome, new contributor!","username":"welcome-message"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-03-04 00:38:16.000000000","updated_by":{"_account_id":10068,"name":"Welcome, new contributor!","username":"welcome-message"},"reviewer":{"_account_id":10068,"name":"Welcome, new contributor!","username":"welcome-message"},"state":"REVIEWER"},{"updated":"2015-04-21 21:09:57.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-04-29 18:32:39.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":"2015-04-30 17:47:15.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-04-30 18:48:59.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"9515f6bf9d0034d28f732428725fe1eb73946b10","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-03-04 00:38:06.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"c205de282f0237cc9998b3e832ed623f40c8bfef","author":{"_account_id":10068,"name":"Welcome, new contributor!","username":"welcome-message"},"date":"2015-03-04 00:38:16.000000000","message":"Patch Set 1:\n\nThank you for your first contribution to OpenStack.\n\n    Your patch will now be tested automatically by OpenStack testing frameworks\n    and once the automatic tests pass, it will be reviewed by other friendly\n    developers. They will give you feedback and may require you to refine it.\n\n    People seldom get their patch approved on the first try, so don\u0027t be\n    concerned if requested to make corrections. Feel free to modify your patch\n    and resubmit a new change-set.\n\n    Patches usually take 3 to 7 days to be reviewed so be patient and be\n    available on IRC to ask and answer questions about your work. The more you\n    participate in the community the more rewarding it is for you. You may also\n    notice that the more you get to know people and get to be known, the faster\n    your patches will be reviewed and eventually approved. Get to know others\n    and become known by doing code reviews: anybody can do it, and it\u0027s a\n    great way to learn the code base.\n\n    Thanks again for supporting OpenStack, we look forward to working with you.\n\n    IRC: https://wiki.openstack.org/wiki/IRC\n    Workflow: http://docs.openstack.org/infra/manual/developers.html\n    Commit Messages: https://wiki.openstack.org/wiki/GitCommitMessages","accounts_in_message":[],"_revision_number":1},{"id":"a5c47d6bd74a180ad3e860f41e13ab2db2931911","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2015-03-04 02:24:34.000000000","message":"Patch Set 1:\n\njust looking this over, no score, but I am surprised...\n\nThis checks if the file on disk, chopped up according to the segment size given as the command line argument would result in the made up checksum of the uploaded manifest\n\n... which seems backwards ...\n\nWhat I think our client *really* want to know is the file represented by the manifest for this object is the same file as I have on disk (if so, don\u0027t re-upload regardless of whatever segment size was used in the original upload or however swift is making up etags on manifests this week etc) - so it seems like a multipart-manfiest\u003dget would be in order...\n\nBTW, those test fixups look AWESOME, that nose thing has driven me crazy for ages - i can\u0027t wait to hear the story of how you tracked it down.","accounts_in_message":[],"_revision_number":1},{"id":"697af4591d3f00e634a3d67683b1da6db1ea5a5c","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-03-04 02:33:28.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/43/161043/1/check/gate-python-swiftclient-python26/53e5fa7/ : SUCCESS in 48s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/43/161043/1/check/gate-python-swiftclient-pep8/01253fd/ : SUCCESS in 46s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/43/161043/1/check/gate-python-swiftclient-docs/85a2972//doc/build/html/ : SUCCESS in 49s\n- gate-python-swiftclient-python27 http://logs.openstack.org/43/161043/1/check/gate-python-swiftclient-python27/15a6feb/ : SUCCESS in 52s\n- gate-python-swiftclient-python34 http://logs.openstack.org/43/161043/1/check/gate-python-swiftclient-python34/e1177c0/ : SUCCESS in 3m 54s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse http://logs.openstack.org/43/161043/1/check/gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse/fc8900b/ : SUCCESS in 24m 21s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-juno http://logs.openstack.org/43/161043/1/check/gate-tempest-dsvm-neutron-src-python-swiftclient-juno/575fa2f/ : SUCCESS in 40m 13s\n- gate-python-swiftclient-pypy http://logs.openstack.org/43/161043/1/check/gate-python-swiftclient-pypy/77b604b/ : SUCCESS in 1m 38s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/43/161043/1/check/gate-tempest-dsvm-neutron-src-python-swiftclient/ecab787/ : SUCCESS in 50m 30s\n- check-swift-dsvm-functional http://logs.openstack.org/43/161043/1/check/check-swift-dsvm-functional/45a1608/ : SUCCESS in 26m 49s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/43/161043/1/check/check-swiftclient-dsvm-functional/4950d40/ : SUCCESS in 22m 11s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"b3afe45b695d7d0fbec2e8b1689c95f6104e3ce2","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-03-04 23:58:28.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"5445cec87046a7a1f986b5636b716927557a5993","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-03-05 01:01:46.000000000","message":"Patch Set 2:\n\nUpdated to compare using the already-stored chunking rather than the chunking the client is currently trying to use. In addition to Clay\u0027s comments, this covers DLOs with more segments than will fit in a single container listing.","accounts_in_message":[],"_revision_number":2},{"id":"157fae6c54a7226e276b9b4d688de1394317892c","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-03-05 05:26:41.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/43/161043/2/check/gate-python-swiftclient-python26/e31c24f/ : SUCCESS in 46s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/43/161043/2/check/gate-python-swiftclient-pep8/552f680/ : SUCCESS in 55s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/43/161043/2/check/gate-python-swiftclient-docs/2609ca1//doc/build/html/ : SUCCESS in 41s\n- gate-python-swiftclient-python27 http://logs.openstack.org/43/161043/2/check/gate-python-swiftclient-python27/4a88b28/ : SUCCESS in 1m 14s\n- gate-python-swiftclient-python34 http://logs.openstack.org/43/161043/2/check/gate-python-swiftclient-python34/5c186d6/ : SUCCESS in 3m 37s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse http://logs.openstack.org/43/161043/2/check/gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse/2c5c641/ : SUCCESS in 29m 20s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-juno http://logs.openstack.org/43/161043/2/check/gate-tempest-dsvm-neutron-src-python-swiftclient-juno/89dbb6a/ : SUCCESS in 41m 51s\n- gate-python-swiftclient-pypy http://logs.openstack.org/43/161043/2/check/gate-python-swiftclient-pypy/e23872b/ : SUCCESS in 2m 06s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/43/161043/2/check/gate-tempest-dsvm-neutron-src-python-swiftclient/dc988bf/ : SUCCESS in 57m 20s\n- check-swift-dsvm-functional http://logs.openstack.org/43/161043/2/check/check-swift-dsvm-functional/27aafb1/ : SUCCESS in 27m 59s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/43/161043/2/check/check-swiftclient-dsvm-functional/a160166/ : SUCCESS in 28m 12s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"ef676811394a629cf28048c8e5e475698aa01825","author":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"date":"2015-03-23 14:27:25.000000000","message":"Patch Set 2:\n\nReally like the idea and approach of this patch, but I need time to look at it more closely. I\u0027ve got a couple of local branches aimed at solving the skip-identical for large objects problem, but I was never completely happy with them.\n\nDo you think this approach could be easily extended to cover recursive large objects?","accounts_in_message":[],"_revision_number":2},{"id":"6a489844fcd2760d439a645a717f0c3e7fa76ef1","author":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"date":"2015-03-23 14:32:27.000000000","message":"Patch Set 2:\n\n(2 comments)\n\nJust a couple of suggestions for keeping the nosetest fix without adding all those extra if clauses.","accounts_in_message":[],"_revision_number":2},{"id":"2d0a626f401311002b5da390c86b1c885842c9b9","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-03-24 01:36:51.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"6da979a0c97b42a88a213eb6ec98871832810e3d","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-03-24 01:45:50.000000000","message":"Patch Set 3:\n\nUpdated to cover SLOs-within-SLOs and incorporate Joel\u0027s code simplification.\n\nFrom testing, it looks like DLOs-within-DLOs isn\u0027t supported (and I can\u0027t imagine why it would be necessary). Nor is mixing DLOs and SLOs: for DLOs-within-SLOs, the SLO manifest needs to list the DLO as having zero bytes (and so it gets ignored on download); for SLOs-within-DLOs, the proxy eventually chokes with `SegmentError: Not enough bytes for /v1/\u003caccount\u003e/\u003ccontainer\u003e/\u003cDLO\u003e; closing connection`.","accounts_in_message":[],"_revision_number":3},{"id":"4851f499c9ddc8cbe917a2a116db89179994c3bc","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-03-24 02:33:33.000000000","message":"Patch Set 3: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/43/161043/3/check/gate-python-swiftclient-python26/1548fb4/ : SUCCESS in 50s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/43/161043/3/check/gate-python-swiftclient-pep8/51567a7/ : SUCCESS in 48s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/43/161043/3/check/gate-python-swiftclient-docs/75bd4c2//doc/build/html/ : SUCCESS in 54s\n- gate-python-swiftclient-python27 http://logs.openstack.org/43/161043/3/check/gate-python-swiftclient-python27/52f3e26/ : SUCCESS in 1m 01s\n- gate-python-swiftclient-python34 http://logs.openstack.org/43/161043/3/check/gate-python-swiftclient-python34/f4783e6/ : SUCCESS in 3m 19s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse http://logs.openstack.org/43/161043/3/check/gate-tempest-dsvm-neutron-src-python-swiftclient-icehouse/0007169/ : SUCCESS in 29m 47s\n- gate-tempest-dsvm-neutron-src-python-swiftclient-juno http://logs.openstack.org/43/161043/3/check/gate-tempest-dsvm-neutron-src-python-swiftclient-juno/8d5bf22/ : SUCCESS in 56m 26s\n- gate-python-swiftclient-pypy http://logs.openstack.org/43/161043/3/check/gate-python-swiftclient-pypy/fb69270/ : SUCCESS in 1m 19s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/43/161043/3/check/gate-tempest-dsvm-neutron-src-python-swiftclient/e0a0bf8/ : SUCCESS in 56m 38s\n- check-swift-dsvm-functional http://logs.openstack.org/43/161043/3/check/check-swift-dsvm-functional/3ef87e2/ : SUCCESS in 23m 03s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/43/161043/3/check/check-swiftclient-dsvm-functional/b2a6b52/ : SUCCESS in 18m 36s (non-voting)","accounts_in_message":[],"_revision_number":3},{"id":"665835d3efd49a33eaa89ca3bee3ab1cf5af5f02","author":{"_account_id":1179,"name":"Clay Gerrard","email":"clay.gerrard@gmail.com","username":"clay-gerrard"},"date":"2015-04-21 21:09:57.000000000","message":"Patch Set 3: Code-Review+2\n\n(3 comments)\n\nthis looks good!","accounts_in_message":[],"_revision_number":3},{"id":"84d8866442e7d4444423a00aa3e928c17cb116f0","author":{"_account_id":9216,"name":"Joel Wright","email":"joel.wright@gmail.com","username":"jjw-sohonet"},"date":"2015-04-29 18:32:39.000000000","message":"Patch Set 3: Code-Review+1\n\nLooks great.","accounts_in_message":[],"_revision_number":3},{"id":"11940106b894d9ed795b84dfd6820aba3dd1ada5","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2015-04-30 17:47:15.000000000","message":"Patch Set 3: Code-Review+2 Workflow+1\n\n(1 comment)\n\nVery nice.\n\nI agree with Clay about losing the capture stream output.\n\nThere is a minor regression (or not depending on opinion!) - currently a non-segmented upload with --skip-identical will replace an existing identical xLO because the etags do not match, but a segmented upload will not replace an identical non-xLO (because the etags do match).\n\nWith this neither cases will replace - with --skip-identical you cannot change a manifest to be a regular object or vice-versa if contents are identical.\n\nI am inclined to think that --skip-identical should be ignored if the intent is to replace a manifest with a regular object or vice-versa. But given that this review has been around a while and at least makes behavior consistent, I\u0027m happy to +2A.\n\nThe dependent patch [1] addresses that - I think it makes sense to keep that separate so the desired behavior can be debated.\n\npatch [1] also adds the new option to sample.conf\n\n[1] https://review.openstack.org/179175","accounts_in_message":[],"_revision_number":3},{"id":"fdd5198282e6a44cb76328fd94fa14524aa8ddcf","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-04-30 17:47:20.000000000","message":"Patch Set 3: -Verified\n\nStarting gate jobs.\nhttp://status.openstack.org/zuul/","accounts_in_message":[],"_revision_number":3},{"id":"d7256afe6e6f9a9bc3e979bc9df59388e9020c93","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-04-30 18:48:59.000000000","message":"Patch Set 3: Verified+2\n\nBuild succeeded (gate pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/43/161043/3/gate/gate-python-swiftclient-python26/a4c0e1b/ : SUCCESS in 52s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/43/161043/3/gate/gate-python-swiftclient-docs/7136569//doc/build/html/ : SUCCESS in 1m 02s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/43/161043/3/gate/gate-python-swiftclient-pep8/f6d0c55/ : SUCCESS in 54s\n- gate-python-swiftclient-python27 http://logs.openstack.org/43/161043/3/gate/gate-python-swiftclient-python27/bd56dda/ : SUCCESS in 59s\n- gate-python-swiftclient-python34 http://logs.openstack.org/43/161043/3/gate/gate-python-swiftclient-python34/3295887/ : SUCCESS in 3m 36s\n- gate-python-swiftclient-pypy http://logs.openstack.org/43/161043/3/gate/gate-python-swiftclient-pypy/36b4c58/ : SUCCESS in 1m 28s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/43/161043/3/gate/gate-tempest-dsvm-neutron-src-python-swiftclient/407c644/ : SUCCESS in 54m 32s\n- gate-swift-dsvm-functional http://logs.openstack.org/43/161043/3/gate/gate-swift-dsvm-functional/bc6c17a/ : SUCCESS in 19m 07s","accounts_in_message":[],"_revision_number":3},{"id":"a9da8bcfd3c1ab9d5e3d75bf6366961f34d9e268","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-04-30 18:49:00.000000000","message":"Change has been successfully merged into the git repository.","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"a4fb70ece189aff85f234ab6b3f275b69e936c03","revisions":{"c0c7e1308fffedba6f8b052766d0987766a9bcd1":{"kind":"REWORK","_number":1,"created":"2015-03-04 00:38:06.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/43/161043/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/43/161043/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/1"}}},"commit":{"parents":[{"commit":"925c01ebfbdfb6478a3786f24a9572deae40f8f8","subject":"Merge \"Release connection after consuming the content\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/925c01ebfbdfb6478a3786f24a9572deae40f8f8"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-03-03 20:35:03.000000000","tz":-480},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-03-03 22:49:43.000000000","tz":-480},"subject":"Use proper checksum algorithm for large objects","message":"Use proper checksum algorithm for large objects\n\nPreviously, we compared the ETag from Swift against the MD5 of the\nentire large object. However, the stored ETag for large objects is the\nMD5 of the concatenation of the ETags for each segment. Correcting this\nallows the use of --skip-identical when uploading SLOs and DLOs.\n\nAdditionally, there are several test-related improvements:\n * The default arguments for OutputManager are now evaluated on\n   construction, rather than on definition, so that\n   TestOutputManager.test_instantiation will succeed when using nosetest\n   as a test runner. (See also: bug 1251507)\n * An account_username option is now available in the functional tests\n   config file for auth systems that do not follow the account:username\n   format.\n * CaptureOutput no longer writes to the captured stream, and\n   MockHttpTest now captures output. These were polluting test output\n   unnecessarily. (See also: bug 1201376)\n\nChange-Id: Ic484e9a0c186c9283c4012c6a2fa77b96b8edf8a\nCloses-Bug: #1201376\nCloses-Bug: #1379252\nRelated-Bug: #1251507\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/c0c7e1308fffedba6f8b052766d0987766a9bcd1"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/c0c7e1308fffedba6f8b052766d0987766a9bcd1"}]},"branch":"refs/heads/master"},"3a4c0116bf91fb43767916a6a3b4d7b4ae05d607":{"kind":"REWORK","_number":2,"created":"2015-03-04 23:58:28.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/43/161043/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/43/161043/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/2"}}},"commit":{"parents":[{"commit":"925c01ebfbdfb6478a3786f24a9572deae40f8f8","subject":"Merge \"Release connection after consuming the content\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/925c01ebfbdfb6478a3786f24a9572deae40f8f8"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-03-03 20:35:03.000000000","tz":-480},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-03-04 23:10:17.000000000","tz":-480},"subject":"Compare each chunk of large objects when uploading","message":"Compare each chunk of large objects when uploading\n\nPreviously, we compared the ETag from Swift against the MD5 of the\nentire large object. However, the ETag for large objects is generally\nthe MD5 of the concatenation of the ETags for each segment, unless the\nobject is a DLO whose segments span more than one page of a container\nlisting. Rather than worry about ETags, just compare each chunk of the\nsegmented file. This allows the use of --skip-identical when uploading\nSLOs and DLOs.\n\nAdditionally, there are several test-related improvements:\n * The default arguments for OutputManager are now evaluated on\n   construction, rather than on definition, so that\n   TestOutputManager.test_instantiation will succeed when using nosetest\n   as a test runner. (See also: bug 1251507)\n * An account_username option is now available in the functional tests\n   config file for auth systems that do not follow the account:username\n   format.\n * CaptureOutput no longer writes to the captured stream, and\n   MockHttpTest now captures output. These were polluting test output\n   unnecessarily. (See also: bug 1201376)\n\nChange-Id: Ic484e9a0c186c9283c4012c6a2fa77b96b8edf8a\nCloses-Bug: #1201376\nCloses-Bug: #1379252\nRelated-Bug: #1251507\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/3a4c0116bf91fb43767916a6a3b4d7b4ae05d607"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/3a4c0116bf91fb43767916a6a3b4d7b4ae05d607"}]},"branch":"refs/heads/master"},"a4fb70ece189aff85f234ab6b3f275b69e936c03":{"kind":"REWORK","_number":3,"created":"2015-03-24 01:36:51.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/43/161043/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/43/161043/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/43/161043/3"}}},"commit":{"parents":[{"commit":"925c01ebfbdfb6478a3786f24a9572deae40f8f8","subject":"Merge \"Release connection after consuming the content\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/925c01ebfbdfb6478a3786f24a9572deae40f8f8"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-03-03 20:35:03.000000000","tz":-480},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2015-03-24 01:35:45.000000000","tz":-420},"subject":"Compare each chunk of large objects when uploading","message":"Compare each chunk of large objects when uploading\n\nPreviously, we compared the ETag from Swift against the MD5 of the\nentire large object. However, the ETag for large objects is generally\nthe MD5 of the concatenation of the ETags for each segment, unless the\nobject is a DLO whose segments span more than one page of a container\nlisting. Rather than worry about ETags, just compare each chunk of the\nsegmented file. This allows the use of --skip-identical when uploading\nSLOs and DLOs.\n\nAdditionally, there are several test-related improvements:\n * The default arguments for OutputManager are now evaluated on\n   construction, rather than on definition, so that\n   TestOutputManager.test_instantiation will succeed when using nosetest\n   as a test runner. (See also: bug 1251507)\n * An account_username option is now available in the functional tests\n   config file for auth systems that do not follow the account:username\n   format.\n * CaptureOutput no longer writes to the captured stream, and\n   MockHttpTest now captures output. These were polluting test output\n   unnecessarily. (See also: bug 1201376)\n\nChange-Id: Ic484e9a0c186c9283c4012c6a2fa77b96b8edf8a\nCloses-Bug: #1201376\nCloses-Bug: #1379252\nRelated-Bug: #1251507\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/a4fb70ece189aff85f234ab6b3f275b69e936c03"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/a4fb70ece189aff85f234ab6b3f275b69e936c03"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
