)]}'
{"id":"openstack%2Fpython-swiftclient~179175","triplet_id":"openstack%2Fpython-swiftclient~master~I90cfdef0d97a2aa16275d1cf69a6176ae12e6d2b","project":"openstack/python-swiftclient","branch":"master","topic":"p-skip-identical","hashtags":[],"change_id":"I90cfdef0d97a2aa16275d1cf69a6176ae12e6d2b","subject":"Fix --skip-identical to allow identical xLO to replace non-xLO","status":"ABANDONED","created":"2015-04-30 17:30:50.000000000","updated":"2015-06-02 09:07:31.000000000","total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"167d1ba0a444e96ed5fdd2dee23165dc3b1d2721","_number":179175,"virtual_id_number":179175,"owner":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"all":[{"value":-1,"date":"2015-06-01 19:11:02.000000000","_account_id":3,"name":"Jenkins","username":"jenkins"},{"date":"2015-05-06 08:34:21.000000000","_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"date":"2015-05-01 23:26:23.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":"","value":-1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","default_value":0,"optional":true},"Workflow":{"all":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":3,"name":"Jenkins","username":"jenkins"},{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2015-05-01 23:26:23.000000000","updated_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"reviewer":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"state":"REVIEWER"},{"updated":"2015-06-01 19:11:02.000000000","updated_by":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"reviewer":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"state":"REVIEWER"}],"messages":[{"id":"a4981c75f404ce605e7afc7363f5d360f4f50a27","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2015-04-30 17:30:50.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"02303e9b1b8e6fe6c5223da01038e1166e9342d3","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-04-30 18:33:56.000000000","message":"Patch Set 1: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see http://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/75/179175/1/check/gate-python-swiftclient-python26/33707a1/ : FAILURE in 59s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/75/179175/1/check/gate-python-swiftclient-pep8/2838b32/ : SUCCESS in 50s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/75/179175/1/check/gate-python-swiftclient-docs/8296043//doc/build/html/ : SUCCESS in 1m 00s\n- gate-python-swiftclient-python27 http://logs.openstack.org/75/179175/1/check/gate-python-swiftclient-python27/00b7101/ : FAILURE in 54s\n- gate-python-swiftclient-python34 http://logs.openstack.org/75/179175/1/check/gate-python-swiftclient-python34/bf962fd/ : FAILURE in 2m 43s\n- gate-python-swiftclient-pypy http://logs.openstack.org/75/179175/1/check/gate-python-swiftclient-pypy/e7caac8/ : FAILURE in 1m 35s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/75/179175/1/check/gate-tempest-dsvm-neutron-src-python-swiftclient/e907b38/ : SUCCESS in 1h 02m 55s\n- check-swift-dsvm-functional http://logs.openstack.org/75/179175/1/check/check-swift-dsvm-functional/8a0241e/ : SUCCESS in 18m 38s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/75/179175/1/check/check-swiftclient-dsvm-functional/5fe9b94/ : SUCCESS in 18m 04s (non-voting)","accounts_in_message":[],"_revision_number":1},{"id":"e15dd5ba10e099617b57ab662bdb602ec8319d8e","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2015-05-01 09:02:40.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"361fa128e5baecee1b95bfcb292aaef9f91e6589","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-05-01 09:55:36.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\n\n- gate-python-swiftclient-python26 http://logs.openstack.org/75/179175/2/check/gate-python-swiftclient-python26/fdfa5f4/ : SUCCESS in 57s\n- gate-python-swiftclient-pep8 http://logs.openstack.org/75/179175/2/check/gate-python-swiftclient-pep8/0616ce7/ : SUCCESS in 1m 15s\n- gate-python-swiftclient-docs http://docs-draft.openstack.org/75/179175/2/check/gate-python-swiftclient-docs/3d625fa//doc/build/html/ : SUCCESS in 40s\n- gate-python-swiftclient-python27 http://logs.openstack.org/75/179175/2/check/gate-python-swiftclient-python27/bf3f256/ : SUCCESS in 47s\n- gate-python-swiftclient-python34 http://logs.openstack.org/75/179175/2/check/gate-python-swiftclient-python34/b48c223/ : SUCCESS in 3m 03s\n- gate-python-swiftclient-pypy http://logs.openstack.org/75/179175/2/check/gate-python-swiftclient-pypy/a2c2847/ : SUCCESS in 1m 30s\n- gate-tempest-dsvm-neutron-src-python-swiftclient http://logs.openstack.org/75/179175/2/check/gate-tempest-dsvm-neutron-src-python-swiftclient/ea9df43/ : SUCCESS in 49m 01s\n- check-swift-dsvm-functional http://logs.openstack.org/75/179175/2/check/check-swift-dsvm-functional/1b07826/ : SUCCESS in 19m 45s\n- check-swiftclient-dsvm-functional http://logs.openstack.org/75/179175/2/check/check-swiftclient-dsvm-functional/34c6bc5/ : SUCCESS in 16m 00s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"85dac4109fe07dd6b10fe79137b685bea87435c4","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-05-01 23:26:23.000000000","message":"Patch Set 2:\n\nWhy selectively ignore --skip-identical, rather than have the user simply not include the argument when they want to change how the object is chunked?\n\nI actually had the same thought as you at first, and the initial version of making --skip-identical work for xLOs computed what the etag would be given the chunk size that was being used for the current upload. But as a user, I ultimately care more about the actual bytes I get out than how Swift stores them. And if I *really* care about how it\u0027s stored (maybe I used a stupidly-small DLO segment size on initial upload), I don\u0027t think removing the --skip-identical flag from my command-line is too high of a barrier.\n\nThanks for updating sample.conf! Sorry I forgot to do that :(","accounts_in_message":[],"_revision_number":2},{"id":"dd3f16875639af795e21c4b5f94da9b0a4f8d794","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2015-05-06 08:34:21.000000000","message":"Patch Set 2:\n\n@Tim - thanks for the comments - I anticipated some debate, which is why I proposed this separately :) I agree, user can just drop --skip-identical. I had in mind batched upload scenarios when user might not know or want to discover the current \u0027xLO state\u0027 of an existing object. And TBH I got drawn into reinstating the existing behavior, but perhaps that was debatable to begin with.\n\nMaybe the sample.conf fixup should go in a separate patch that will no doubt land sooner !)","accounts_in_message":[],"_revision_number":2},{"id":"d6efbcd9403f5e2eb7ce428b0686eb3252b86253","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2015-05-12 21:57:08.000000000","message":"Patch Set 2:\n\n(2 comments)\n\n@Alistair, I get wanting to preserve prior behavior, but I feel like the bytes-in-vs.-bytes-out approach to --skip-identical is about the only way to have the client feel consistent. Provided that the actual content matches, the proposed notion of \"identical\" considers a DLO with 100MB segments to be equivalent to an SLO with 1GB segments or a DLO with a single large segment[1], but not a plain old Swift object.\n\nI think the bytes-in-vs.-bytes-out approach becomes even more important for batched uploads. If you update a non-segmenting script to handle files larger than max_file_size, you must either use an unnecessarily-large segment size or re-upload objects that are between the chosen segment size and max_file_size. Or consider two periodic jobs that upload overlapping data; if one wants segments and the other doesn\u0027t (maybe it handles a subset of the data where everything is below the max_file_size but some files are above the other job\u0027s segment size), they\u0027ll just waste a lot of bandwidth on every run for no reason.\n\n[1] I realize python-swiftclient will avoid creating such a DLO, but some other application may.","accounts_in_message":[],"_revision_number":2},{"id":"7e50cedd05be634e90f62d32360f785cbb71e412","author":{"_account_id":3,"name":"Jenkins","username":"jenkins"},"date":"2015-06-01 19:11:02.000000000","message":"Patch Set 2: Verified-1\n\nMerge Failed.\n\nThis change was unable to be automatically merged with the current state of the repository. Please rebase your change and upload a new patchset.","accounts_in_message":[],"_revision_number":2},{"id":"e9b8fd932d26522d53fbd67184c4306df0a0ebe7","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2015-06-02 09:07:31.000000000","message":"Abandoned\n\nTim\u0027s arguments against this change are sound!","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"8d1a969ca869dd224318c64c91119f1a3612b1bc","revisions":{"8f589c4be506efbab126d8fed6dbb3546d0d74d4":{"kind":"REWORK","_number":1,"created":"2015-04-30 17:30:50.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/75/179175/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/75/179175/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/75/179175/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/75/179175/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/75/179175/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/75/179175/1"}}},"commit":{"parents":[{"commit":"a4fb70ece189aff85f234ab6b3f275b69e936c03","subject":"Compare each chunk of large objects when uploading","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/a4fb70ece189aff85f234ab6b3f275b69e936c03"}]}],"author":{"name":"Alistair Coles","email":"alistair.coles@hp.com","date":"2015-04-30 17:12:06.000000000","tz":60},"committer":{"name":"Alistair Coles","email":"alistair.coles@hp.com","date":"2015-04-30 17:28:39.000000000","tz":60},"subject":"Fix --skip-identical to allow identical xLO to replace non-xLO","message":"Fix --skip-identical to allow identical xLO to replace non-xLO\n\nWhen --skip-identical option is used with an object upload, a\nsegmented xLO upload will currently not replace a regular object\nwith the same content. Similarly a non-segmented upload will not\nreplace an existing manifest pointing to segments that compose to\nhave the same content.\n\nThis patch makes --skip-identical option be ignored if the existing\nobject is a manifest and the upload is not, and vice-versa.\n\nPlus drive-by fix to add account_username option to sample.conf for\nfuntional tests.\n\nChange-Id: I90cfdef0d97a2aa16275d1cf69a6176ae12e6d2b\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/8f589c4be506efbab126d8fed6dbb3546d0d74d4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/8f589c4be506efbab126d8fed6dbb3546d0d74d4"}]},"branch":"refs/heads/master"},"8d1a969ca869dd224318c64c91119f1a3612b1bc":{"kind":"REWORK","_number":2,"created":"2015-05-01 09:02:40.000000000","uploader":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"ref":"refs/changes/75/179175/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/python-swiftclient","ref":"refs/changes/75/179175/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/75/179175/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/75/179175/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/python-swiftclient refs/changes/75/179175/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/python-swiftclient refs/changes/75/179175/2"}}},"commit":{"parents":[{"commit":"766cf73247678509a5da74add5d746c3ce5d097b","subject":"Merge \"Compare each chunk of large objects when uploading\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/766cf73247678509a5da74add5d746c3ce5d097b"}]}],"author":{"name":"Alistair Coles","email":"alistair.coles@hp.com","date":"2015-04-30 17:12:06.000000000","tz":60},"committer":{"name":"Alistair Coles","email":"alistair.coles@hp.com","date":"2015-05-01 09:02:07.000000000","tz":60},"subject":"Fix --skip-identical to allow identical xLO to replace non-xLO","message":"Fix --skip-identical to allow identical xLO to replace non-xLO\n\nWhen --skip-identical option is used with an object upload, a\nsegmented xLO upload will currently not replace a regular object\nwith the same content. Similarly a non-segmented upload will not\nreplace an existing manifest pointing to segments that compose to\nhave the same content.\n\nThis patch makes --skip-identical option be ignored if the existing\nobject is a manifest and the upload is not, and vice-versa.\n\nPlus drive-by fix to add account_username option to sample.conf for\nfuntional tests.\n\nChange-Id: I90cfdef0d97a2aa16275d1cf69a6176ae12e6d2b\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/8d1a969ca869dd224318c64c91119f1a3612b1bc"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/python-swiftclient/commit/8d1a969ca869dd224318c64c91119f1a3612b1bc"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"submit_requirements":[]}
