)]}'
{"id":"openstack%2Fswift~771343","triplet_id":"openstack%2Fswift~master~Ie44cd975e827d4cd95dc126f4379840a21e79e01","project":"openstack/swift","branch":"master","topic":"collapse_empty_followup","hashtags":[],"change_id":"Ie44cd975e827d4cd95dc126f4379840a21e79e01","subject":"Add root aceptor as root if root has been deleted","status":"NEW","created":"2021-01-19 05:15:13.000000000","updated":"2021-01-20 21:38:30.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":false,"submittable":false,"total_comment_count":3,"unresolved_comment_count":2,"has_review_started":true,"meta_rev_id":"029fcd90ba303697709f37314c7babbea497dcae","_number":771343,"virtual_id_number":771343,"owner":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2021-01-19 06:17:07.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"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":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"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":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"CC":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2021-01-19 06:17:07.000000000","updated_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"reviewer":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"state":"REVIEWER"},{"updated":"2021-01-19 16:14: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":"CC"}],"messages":[{"id":"8ebaf35a5e6c5ca17a8e19252ea39b5c2f1fa280","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2021-01-19 05:15:13.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"9ff6a876a7cd4c59cc7f62241f240dfe801a6e68","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-01-19 06:17:07.000000000","message":"Patch Set 1: Verified-1\n\n(1 comment)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\n\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/fab56cdbf41345f6ab31ffa5aa496398 : SUCCESS in 8m 34s\n- grenade https://zuul.opendev.org/t/openstack/build/6ae906cf504a4fd3a22bfbf2d90ad5a7 : SUCCESS in 1h 00m 23s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/cb95fb0957814d488665f59a7c67aeea : SUCCESS in 43m 16s\n- swift-build-image https://zuul.opendev.org/t/openstack/build/95b68c99e16548f4a89d989db0da16cd : SUCCESS in 8m 05s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/2afc30f29cde483abacae152f217c668 : SUCCESS in 7m 27s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/f7eb57adcaa24fe5a44c073fc029d0a9 : FAILURE in 14m 44s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/a6547f59c32a404491a1cef16ae5e980 : FAILURE in 14m 27s\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/dd18083436304b9bab86d5379a6bddf1 : FAILURE in 12m 58s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/c2c001263de042b297b7c9e0794f922e : FAILURE in 13m 53s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/21ed66e773eb4561bac4e87bb41ac335 : SUCCESS in 20m 43s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/7176aef07ef64c74aeda421889041b39 : SUCCESS in 17m 26s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/adb5bdaf67ff4aa2a5580a65524dc6df : SUCCESS in 21m 33s\n- swift-tox-func-py37 https://zuul.opendev.org/t/openstack/build/26a3a7299bf54fa3879e4cefc74fe1c7 : SUCCESS in 17m 08s\n- swift-tox-func-encryption-py37 https://zuul.opendev.org/t/openstack/build/6536c5aad096490daec9f122a6346f3a : SUCCESS in 16m 55s\n- swift-tox-func-ec-py37 https://zuul.opendev.org/t/openstack/build/7cebdaf0596643c881ebd16c5899961b : SUCCESS in 19m 01s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/bb514aeff920421d91fc66ce43feda21 : FAILURE in 22m 12s (non-voting)\n- swift-probetests-centos-7 https://zuul.opendev.org/t/openstack/build/006dc33165224bf5b5f752ae8fa7e297 : FAILURE in 27m 39s\n- swift-probetests-centos-8 https://zuul.opendev.org/t/openstack/build/2beae447e7364fdea9d94e9c44bf1c6c : FAILURE in 29m 13s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/b6d6c117ef944e84a479d5722f713c99 : SUCCESS in 32m 04s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/105176ba14a1441296f803eecd93ee49 : SUCCESS in 44m 26s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/b59f730929eb43b6a1f7d7fc4eccbdde : FAILURE in 13m 33s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/ce453e92937c4bada23f325541d67bc2 : FAILURE in 5m 53s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/a7f73eb905fe4912bc9c8ccd4378c7b3 : FAILURE in 7m 29s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/dfe55b41f9114050bc42be37701daa88 : SUCCESS in 54m 12s","accounts_in_message":[],"_revision_number":1},{"id":"215bfedbdb355d7958ea1ef65ffa97fbd2cdb2d2","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2021-01-19 16:14:15.000000000","message":"Patch Set 1:\n\n(2 comments)\n\nI think the desired outcome here *is* what we want (i.e. shards learn to shrink into root) but I\u0027m in favour of driving it from the root rather than inferring it on the shard.\n\nOnce we do end up driving shrinks and acceptors from the root, this change could potentially conflict with that strategy if shards are also making their own decision to shrink to roots.","accounts_in_message":[],"_revision_number":1},{"id":"029fcd90ba303697709f37314c7babbea497dcae","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2021-01-20 21:38:30.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"34fd06ab0b832991be4e6a79355902e9f6a7f145","revisions":{"34fd06ab0b832991be4e6a79355902e9f6a7f145":{"kind":"REWORK","_number":1,"created":"2021-01-19 05:15:13.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/43/771343/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/43/771343/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/43/771343/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/43/771343/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/43/771343/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/43/771343/1"}}},"commit":{"parents":[{"commit":"5cd2f0b2402709bbba9bdaf43947be42d72a971d","subject":"Do not reclaim sharded roots until they shrink","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/5cd2f0b2402709bbba9bdaf43947be42d72a971d"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2021-01-19 00:52:10.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2021-01-19 05:03:29.000000000","tz":660},"subject":"Add root aceptor as root if root has been deleted","message":"Add root aceptor as root if root has been deleted\n\nThe basic idea is this. Clay\u0027s patch before this one adds to\nthe container backend so that a root container isn\u0027t reclaimable\nif there are still shard ranges.\n\nThis means until we have autosharding or rather auto shrinking enabled\nthese empty sharded containers (roots and shards) could hang around\nindefinitely.\n\nThis patch makes it possible for someone, say an op or in the future the\nautosharder, to mark all the shards in the empty and deleted root\ncontainer SHRINKING. And when the shards pull these into themselves\nthey\u0027ll collapse into the root container.\n\nCurrently when we shrink, the shard needs to have an acceptor pushed\ninto it\u0027s shard range table. And that\u0027s alot of work for an op. This\npatch makes is that:\n  - If the root is deleted\n  - the delete timestamp is older then reclaim_age\n  - and the shardrange the shard pulls from the deleted root is in the\n    SHRINKING state.\nIt\u0027ll insert the root shardrange as an acceptor so it can cleave and\ndelete itself back into the root (collapse).\n\nBonus here, is if there does happen to be an object in a shard somewhere\nit\u0027ll push it back into the root where an op can deal with it.\n\nWe may still need to think about what happens if the root container\nactually doesn\u0027t exist (404s), but if there is nothing the shard, it\n\"should\" be an no-op. Maybe 404s after reclaim should warn so an op can\nlook?\n\nChange-Id: Ie44cd975e827d4cd95dc126f4379840a21e79e01\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/34fd06ab0b832991be4e6a79355902e9f6a7f145"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/34fd06ab0b832991be4e6a79355902e9f6a7f145"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"OK","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY"},{"label":"Workflow","status":"MAY"}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Verified\u003dMAX","label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Code-Review\u003dMAX","label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"UNSATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":false,"status":"FAIL","passing_atoms":[],"failing_atoms":["label:Workflow\u003dMAX","label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
