)]}'
{"id":"openstack%2Fswift~670674","triplet_id":"openstack%2Fswift~master~Id0010ee5d9034f48eb6a96c147a5f72a73269253","project":"openstack/swift","branch":"master","topic":"ring-as-a-service","hashtags":[],"change_id":"Id0010ee5d9034f48eb6a96c147a5f72a73269253","subject":"WIP: Allow ring lookups via a service","status":"NEW","created":"2019-07-12 23:10:44.000000000","updated":"2021-04-01 20:26:47.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":false,"submittable":false,"total_comment_count":9,"unresolved_comment_count":7,"has_review_started":true,"meta_rev_id":"f058661c145c2bea39f3522b1475674475b5af23","_number":670674,"virtual_id_number":670674,"owner":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"tag":"autogenerated:zuul:check","value":-1,"date":"2021-01-05 19:43:37.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_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":-2,"max":2},"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"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":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"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":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2019-07-13 00:19:17.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":"2019-07-15 00:00:18.000000000","updated_by":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"reviewer":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"state":"REVIEWER"},{"updated":"2021-02-03 17:58:15.000000000","updated_by":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"reviewer":{"_account_id":597,"name":"Pete Zaitcev","email":"zaitcev@kotori.zaitcev.us","username":"zaitcev"},"state":"REVIEWER"}],"messages":[{"id":"4dd5fba37aa7e7be9649608b0e78252ffb34f56a","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2019-07-12 23:10:44.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"04267abd42031390b8d155a36683a1da3926055f","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2019-07-12 23:21:08.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.","accounts_in_message":[],"_revision_number":2},{"id":"b69326f23caa37e89ffe49db8425fb2df73e3222","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2019-07-13 00:19:17.000000000","message":"Patch Set 2: Verified-1\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttp://docs.openstack.org/infra/manual/developers.html#automated-testing\n\n\n- openstack-tox-docs http://logs.openstack.org/74/670674/2/check/openstack-tox-docs/17dd680/html/ : SUCCESS in 5m 00s\n- swift-build-image http://logs.openstack.org/74/670674/2/check/swift-build-image/103f23c/ : SUCCESS in 8m 55s (non-voting)\n- swift-tox-py27 http://logs.openstack.org/74/670674/2/check/swift-tox-py27/de17139/ : SUCCESS in 11m 24s\n- swift-tox-py36 http://logs.openstack.org/74/670674/2/check/swift-tox-py36/789b398/ : SUCCESS in 17m 31s (non-voting)\n- swift-tox-py37 http://logs.openstack.org/74/670674/2/check/swift-tox-py37/2320f4f/ : SUCCESS in 10m 58s\n- swift-tox-func http://logs.openstack.org/74/670674/2/check/swift-tox-func/21e67b9/ : SUCCESS in 14m 26s\n- swift-tox-func-py37 http://logs.openstack.org/74/670674/2/check/swift-tox-func-py37/46080f0/ : SUCCESS in 8m 47s\n- swift-tox-func-encryption http://logs.openstack.org/74/670674/2/check/swift-tox-func-encryption/8324425/ : SUCCESS in 14m 16s\n- swift-tox-func-domain-remap-staticweb http://logs.openstack.org/74/670674/2/check/swift-tox-func-domain-remap-staticweb/df1ad70/ : SUCCESS in 8m 23s\n- swift-tox-func-ec http://logs.openstack.org/74/670674/2/check/swift-tox-func-ec/650c18e/ : SUCCESS in 14m 45s\n- swift-tox-func-s3api http://logs.openstack.org/74/670674/2/check/swift-tox-func-s3api/d309cbd/ : SUCCESS in 12m 22s\n- swift-tox-func-domain-remap-staticweb-py37 http://logs.openstack.org/74/670674/2/check/swift-tox-func-domain-remap-staticweb-py37/1489efa/ : SUCCESS in 11m 20s\n- swift-tox-func-s3api-ceph-s3tests-tempauth http://logs.openstack.org/74/670674/2/check/swift-tox-func-s3api-ceph-s3tests-tempauth/6189b74/ : SUCCESS in 14m 12s (non-voting)\n- swift-probetests-centos-7 http://logs.openstack.org/74/670674/2/check/swift-probetests-centos-7/8cfc219/ : SUCCESS in 34m 14s\n- swift-dsvm-functional http://logs.openstack.org/74/670674/2/check/swift-dsvm-functional/b7424e5/ : SUCCESS in 26m 21s\n- swift-dsvm-functional-py3 http://logs.openstack.org/74/670674/2/check/swift-dsvm-functional-py3/6e4dcb5/ : SUCCESS in 33m 31s\n- swift-dsvm-functional-ipv6 http://logs.openstack.org/74/670674/2/check/swift-dsvm-functional-ipv6/9e494d8/ : SUCCESS in 26m 18s\n- swift-tox-lower-constraints http://logs.openstack.org/74/670674/2/check/swift-tox-lower-constraints/bc82e8d/ : SUCCESS in 14m 13s\n- openstack-tox-pep8 http://logs.openstack.org/74/670674/2/check/openstack-tox-pep8/8f07f54/ : FAILURE in 4m 58s\n- swift-multinode-rolling-upgrade http://logs.openstack.org/74/670674/2/check/swift-multinode-rolling-upgrade/2700f76/ : FAILURE in 8m 30s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"5ad409e4c49e4cc669324acba365f61ef3806181","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2019-07-15 00:00:18.000000000","message":"Patch Set 2:\n\nhmm, very interesting idea. I do like the idea of only having to load the ring once per server. The only thing we would have to be careful of is this new service must be running for some other daemons to work, but we can add that to swift manager and a requirement in systemd for people who start swift that way.","accounts_in_message":[],"_revision_number":2},{"id":"363a63127624e458563b440b9c69500ba9c6021e","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2019-10-05 02:22:27.000000000","message":"Patch Set 2:\n\n(2 comments)","accounts_in_message":[],"_revision_number":2},{"id":"effde17da1fb56365f7ae86cfff524bfba01d787","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2021-01-05 16:28:01.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"efefe312a0763f72f1a854334517b347d39b2113","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-01-05 19:43:37.000000000","message":"Patch Set 3: Verified-1\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/772902e928644c25976c0cf60bf39dcb : SUCCESS in 8m 08s\n- grenade https://zuul.opendev.org/t/openstack/build/c726a96be9d94167a6a076171d0eb776 : SUCCESS in 1h 12m 49s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/c0958f07e97e422794be7fcabe41a261 : SUCCESS in 48m 26s\n- swift-build-image https://zuul.opendev.org/t/openstack/build/119d4a073a364543830e4bec7baff890 : SUCCESS in 9m 05s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/8a34e33bf1e54564a2a21986edd572ec : SUCCESS in 9m 32s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/fcbc7d2958564162bdfb983b7cf1e445 : FAILURE in 12m 36s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/49431f54422f42d6b2d5233c66ee7ab0 : FAILURE in 13m 04s\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/bdf90266556244ee8f163f14217bcd43 : FAILURE in 12m 39s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/569589dc73564af997d8f8e91f011ed9 : FAILURE in 12m 26s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/9610c107eeb54fde9c51e1b7bc7bc6f0 : SUCCESS in 15m 49s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/41ed8e3fab4949fabc495784674a039c : FAILURE in 16m 37s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/a1591da063b24edeaab77a18cbd63385 : SUCCESS in 17m 44s\n- swift-tox-func-py37 https://zuul.opendev.org/t/openstack/build/fb6dc51122be4cbe8bd5a8d59b9b4552 : SUCCESS in 16m 15s\n- swift-tox-func-encryption-py37 https://zuul.opendev.org/t/openstack/build/b32a9823be8a44949ac14e614a9c3801 : SUCCESS in 17m 57s\n- swift-tox-func-ec-py37 https://zuul.opendev.org/t/openstack/build/407f8ac0749f4ac4bf93b2b5e687dfd4 : SUCCESS in 28m 45s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/6a25286d526343d2851fb28e05a63b93 : FAILURE in 1h 13m 10s (non-voting)\n- swift-probetests-centos-7 https://zuul.opendev.org/t/openstack/build/ee3fe36bb77d4b56bfe5a36f742e8b96 : SUCCESS in 41m 00s\n- swift-probetests-centos-8 https://zuul.opendev.org/t/openstack/build/cfd8773045414d9daa5f63f3a28f50d6 : SUCCESS in 41m 04s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/bd55b2455f3c49428ff5eaefbf407833 : SUCCESS in 37m 25s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/117749cf32ae4e23a125a860f4eda1bc : SUCCESS in 36m 41s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/0c52c205efcc48efb6e8ab994c5afd18 : FAILURE in 11m 40s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/90352b845b724b21a18ff0ee7bea7ec0 : SUCCESS in 5m 58s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/77cb0a49e3d64dfea1d795990f9cce96 : FAILURE in 10m 04s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/aa439c088d664b10ae141f39e0fc75c1 : SUCCESS in 46m 19s","accounts_in_message":[],"_revision_number":3},{"id":"03c8172b224d40f4264dc2d9f157f635a8491cbc","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2021-02-03 18:52:29.000000000","message":"Patch Set 3:\n\n(2 comments)","accounts_in_message":[],"_revision_number":3},{"id":"f058661c145c2bea39f3522b1475674475b5af23","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2021-04-01 20:26:47.000000000","message":"Patch Set 3:\n\n(5 comments)","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"b8933889342a4360872e7547b7ea53b07d6f6ae4","revisions":{"81fe50678345a4f9825400f11a088924569e2621":{"kind":"REWORK","_number":1,"created":"2019-07-12 23:10:44.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/74/670674/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/74/670674/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/74/670674/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/74/670674/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/74/670674/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/74/670674/1"}}},"commit":{"parents":[{"commit":"fe93cd71e1d3cb8246fd317f678c12929ff3a3fc","subject":"ring: Track more properties of the ring","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/fe93cd71e1d3cb8246fd317f678c12929ff3a3fc"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2019-07-12 23:02:08.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2019-07-12 23:02:13.000000000","tz":-420},"subject":"WIP: Allow ring lookups via a service","message":"WIP: Allow ring lookups via a service\n\nWe keep worrying about the memory footprint involved in adding a ring to\na service that does not currently use one. Why not have an isolated\nprocess per node which is solely responsible for doing ring lookups?\n\nWe can continue to do things like plumbing object-update targets through\nto the object-server from the proxy -- if it makes sense, do it! But\nnow:\n\n  - We don\u0027t have to worry about loading up rings in a container-server\n    to answer questions about the state of its ring, and\n  - We can reduce the overall memory overhead by removing rings from\n    background daemons in favor of querying the ring service.\n\nPrototype it as a Flask app -- at some point we\u0027ll need to deploy and\nstart it in a more Swift-y way.\n\nTODO:\n  - Figure out a way to (cheaply) resume handoff enumeration\n  - Think about other useful questions to ask of rings (maybe \"what are\n    all the partitions this device is responsible for?\", for example)\n  - Actually try swapping a daemon to use the service; will maybe\n    involve some sort of RingProxy that mirrors the Ring API but talks\n    to a socket?\n\nChange-Id: Id0010ee5d9034f48eb6a96c147a5f72a73269253\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/81fe50678345a4f9825400f11a088924569e2621"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/81fe50678345a4f9825400f11a088924569e2621"}]},"branch":"refs/heads/master"},"9087e2267cb3a938f42237a2740648dcb92dc014":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2019-07-12 23:21:08.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/74/670674/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/74/670674/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/74/670674/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/74/670674/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/74/670674/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/74/670674/2"}}},"commit":{"parents":[{"commit":"425ed4e77790df25f973fc8a09311210f324cf7c","subject":"ring: Track more properties of the ring","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/425ed4e77790df25f973fc8a09311210f324cf7c"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2019-07-12 23:02:08.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2019-07-12 23:21:01.000000000","tz":-420},"subject":"WIP: Allow ring lookups via a service","message":"WIP: Allow ring lookups via a service\n\nWe keep worrying about the memory footprint involved in adding a ring to\na service that does not currently use one. Why not have an isolated\nprocess per node which is solely responsible for doing ring lookups?\n\nWe can continue to do things like plumbing object-update targets through\nto the object-server from the proxy -- if it makes sense, do it! But\nnow:\n\n  - We don\u0027t have to worry about loading up rings in a container-server\n    to answer questions about the state of its ring, and\n  - We can reduce the overall memory overhead by removing rings from\n    background daemons in favor of querying the ring service.\n\nPrototype it as a Flask app -- at some point we\u0027ll need to deploy and\nstart it in a more Swift-y way.\n\nTODO:\n  - Figure out a way to (cheaply) resume handoff enumeration\n  - Think about other useful questions to ask of rings (maybe \"what are\n    all the partitions this device is responsible for?\", for example)\n  - Actually try swapping a daemon to use the service; will maybe\n    involve some sort of RingProxy that mirrors the Ring API but talks\n    to a socket?\n\nChange-Id: Id0010ee5d9034f48eb6a96c147a5f72a73269253\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/9087e2267cb3a938f42237a2740648dcb92dc014"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/9087e2267cb3a938f42237a2740648dcb92dc014"}]},"branch":"refs/heads/master"},"b8933889342a4360872e7547b7ea53b07d6f6ae4":{"kind":"REWORK","_number":3,"created":"2021-01-05 16:28:01.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/74/670674/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/74/670674/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/74/670674/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/74/670674/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/74/670674/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/74/670674/3"}}},"commit":{"parents":[{"commit":"5e3302649584b2aec523e5966671e43ea959ed27","subject":"Use CloseableChain when creating iterator of SLO response","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/5e3302649584b2aec523e5966671e43ea959ed27"}]}],"author":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2019-07-12 23:02:08.000000000","tz":-420},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2021-01-05 16:24:38.000000000","tz":-480},"subject":"WIP: Allow ring lookups via a service","message":"WIP: Allow ring lookups via a service\n\nWe keep worrying about the memory footprint involved in adding a ring to\na service that does not currently use one. Why not have an isolated\nprocess per node which is solely responsible for doing ring lookups?\n\nWe can continue to do things like plumbing object-update targets through\nto the object-server from the proxy -- if it makes sense, do it! But\nnow:\n\n  - We don\u0027t have to worry about loading up rings in a container-server\n    to answer questions about the state of its ring, and\n  - We can reduce the overall memory overhead by removing rings from\n    background daemons in favor of querying the ring service.\n\nTODO:\n  - Figure out a way to (cheaply) resume handoff enumeration rather than\n    always requesting \"a bunch\"\n  - Think about other useful questions to ask of rings (maybe \"what are\n    all the partitions this device is responsible for?\", for example)\n  - Have backend daemons include response headers indicating whether\n    they think they\u0027re a primary for a resource\n\nChange-Id: Id0010ee5d9034f48eb6a96c147a5f72a73269253\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b8933889342a4360872e7547b7ea53b07d6f6ae4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/b8933889342a4360872e7547b7ea53b07d6f6ae4"}]},"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":""}}}]}
