)]}'
{"id":"openstack%2Fswift~777927","triplet_id":"openstack%2Fswift~master~I23e3a31c7b1ebfffdbdb51f340a54ec47977abd4","project":"openstack/swift","branch":"master","topic":"active_shards_state_timestamp_epoch","hashtags":[],"change_id":"I23e3a31c7b1ebfffdbdb51f340a54ec47977abd4","subject":"Shrinking: Add an active age","status":"NEW","created":"2021-03-01 06:20:48.000000000","updated":"2021-03-18 00:34:49.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":false,"submittable":false,"total_comment_count":6,"unresolved_comment_count":6,"has_review_started":true,"meta_rev_id":"35a9843588bc977f574654827f7621cb43ff1148","_number":777927,"virtual_id_number":777927,"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-03-16 07:35:19.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"}],"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"]},{"value":0,"permitted_voting_range":{"min":-2,"max":2},"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"}],"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"]},{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"CC":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"}],"REVIEWER":[{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2021-03-01 07:58:43.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-03-01 10:13:17.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":"24e985ea8cc8578ec8f86197144b0354ec5cbe82","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2021-03-01 06:20:48.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"7ab13c98bbcc9caef68f3ecce92032b9f18cc279","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2021-03-01 06:23:12.000000000","message":"Patch Set 1: Workflow-1\n\nAother option means we really need to start using the sharding conf for s-m-s-r.\n\nThis is still WIP. Just plumbed the option through all the module level functions. Looks a bit ugly, need to play with this some more, but wanted to get it off my machine as it\u0027s getting to the end of the day.","accounts_in_message":[],"_revision_number":1},{"id":"f83f0d1f5c91eed2075ab64941e0c3c8da1ee005","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-01 07:58:43.000000000","message":"Patch Set 1: 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/c451976cc9894661885d708201f6d7ff : SUCCESS in 9m 08s\n- grenade https://zuul.opendev.org/t/openstack/build/e6a26f44bbac4ff1b3f6e12a9acd41cf : SUCCESS in 1h 04m 06s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/a869d9f63ef3498b8dd51309353f4639 : SUCCESS in 46m 56s\n- swift-build-image https://zuul.opendev.org/t/openstack/build/27b705811ad34e0cba1f4432cf7532ee : SUCCESS in 10m 38s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/4477f62fb7314345bf30c53678192a25 : SUCCESS in 8m 59s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/eb9935c67e82453f85a3148433437649 : FAILURE in 14m 51s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/83acdc438a3f4f879481abc928f8b587 : FAILURE in 17m 37s\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/84126226fb8f4035841712f842b425ce : FAILURE in 15m 37s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/788cb495ffee44708e8fb38a560eb6c7 : FAILURE in 33m 07s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/98fb15f9d7cd4afeaeb5b8b11f15fd19 : FAILURE in 16m 36s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/1838a0821d4f4815a8d22bfcd8bd5a3d : SUCCESS in 17m 20s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/cc8d0c2d547a4876867dfee421c122fc : SUCCESS in 16m 57s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/3fa423666cff4874a2a1940fdcf62376 : SUCCESS in 20m 00s\n- swift-tox-func-py37 https://zuul.opendev.org/t/openstack/build/ad258460c7454f40921038822fed6e4f : SUCCESS in 20m 09s\n- swift-tox-func-encryption-py37 https://zuul.opendev.org/t/openstack/build/0032ddf7d9754292a5e218af3beb4aee : SUCCESS in 28m 44s\n- swift-tox-func-ec-py37 https://zuul.opendev.org/t/openstack/build/182705e7abb74055836bf8ba9fb3a78a : SUCCESS in 19m 36s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/e0582217c43144f7be656aac54700a4b : SUCCESS in 23m 00s (non-voting)\n- swift-probetests-centos-7 https://zuul.opendev.org/t/openstack/build/8d7328823ad5495da51a659aa049a170 : FAILURE in 47m 41s\n- swift-probetests-centos-8 https://zuul.opendev.org/t/openstack/build/707314e18ea5482a844f848447f23722 : FAILURE in 49m 45s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/5293e6e04fa84a15b88e79999cfa2ad8 : SUCCESS in 43m 39s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/414d685841ea4f06a11f402a32e55dab : SUCCESS in 37m 07s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/86eef0f88c6c4e3eb3482034ceb5f9af : FAILURE in 16m 59s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/cc054b8e2c4041f3ac5fa4f5a9a75473 : SUCCESS in 7m 18s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/78a7df128cf54882a29b1db125b15a9c : FAILURE in 11m 08s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/b7f8940be933469696b0e9f514837740 : SUCCESS in 56m 55s","accounts_in_message":[],"_revision_number":1},{"id":"a2831ae63e0d1c5fa9beafec267d977def41852b","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2021-03-01 10:13:17.000000000","message":"Patch Set 1:\n\n(5 comments)\n\nOn a root container we could have an additional check on the cleaving contexts, which I think boils down to \u0027do not shrink anything if this container is still reporting sharding progress in recon\u0027. That would prevent shrinking if *any* replica is still sharding.\n\nUnfortunately we don\u0027t have any visibility at the root of the sharding progress of shards, so the per-shard range checking here is best bet.\n\nThe worst case is a really big container being sharded and that taking many sharder cycles for most replicas but goes quickly for one replica. The cleaving context on root containers would take care of that, but not on sharding shards.\n\nI wonder if we should be conservative about the default time (i.e. much longer that 2 days), with doc for ops that if you start to see more small shards than you like then you can reduce this time, but be aware if you have slowly sharding containers.","accounts_in_message":[],"_revision_number":1},{"id":"f05a31b398aeecfb399da12f5a26c1599888b413","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2021-03-02 05:22:24.000000000","message":"Patch Set 1:\n\nOK been looking into different possibilities.\n\n1. created_age (rather the timeout). This is mostly how this patch currently stands. Problem is, on\nlarge containers who knows what a good default is. So feels like just adding a sleep to the problem.. not always the best solution.\n\n2. Use cleave contexts. I have code that does this, but this only works when the root container is cleaving. So only gives fixes the problem for sharding root containers. I can\u0027t think of an easy way to add the same thing to sharding shards.\n\n  - There were some other interesting tidbits. If there is a small primary that shards quickly then it could shard and still be the only context in place when the check is done. Of course this would be completed so doesn\u0027t actaully fix the problem, just narrows it\u0027s scope. I got around this by having a stict mode that said their needed to be more then one context in the done state, but that would make single replica containers have issues (but I don\u0027t think we really care about that).\n  - I wanted to use something like the replica count to make sure we could check that there was more then 1, but that doesn\u0027t work because we don\u0027t want to ring in s-m-s-rs.\n  - So I looked at what we could use in just the broker. Went down the rabble hole of looking at syncs and check if it\u0027s replicated with anyone else etc.. but the simple fact is replication could have happened in the CREATED state, so again this isn\u0027t an indication of anything.\n\n3. Make the last sharding replica change SRs to ACTIVE. So if things are active we know they are done.\n\n - CLEAVED state is pretty much the same as ACTIVE. Ie it does listings etc. Getting to the code that gets the stats, we just need the container db_state to be in SHARDED (which they would be) which just leaves the broker.get_shard_usage() code that only collects stats from SHARD_STATS_STATES. \n \n   SHARD_STATS_STATES \u003d [ShardRange.ACTIVE, ShardRange.SHARDING,\n                         ShardRange.SHRINKING]\n\n - But CLEAVED is in the listing states, so we trust it for that, I wonder if we should just start trusting it for more up to date stats too?\n \n  - This seems feasible, so am going to continue playing with a patch that leaves everything in CLEAVED until sharding had been completed by all primaries. Then see what else happens. it means if we see something in CLEAVED state we know the statemachine is still SHARDING somewhere, or at least thinks it is. And we then should be able to safely say anything in ACTIVE can be shrunk.\n - Although I wonder if this means we might need to think about an audit for things that get stuck in CLEAVED.","accounts_in_message":[],"_revision_number":1},{"id":"85183edd204ecb546a03b92b5b5814e8563a3e25","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2021-03-16 06:04:16.000000000","message":"Uploaded patch set 2.","accounts_in_message":[],"_revision_number":2},{"id":"063e7f55eaf1fa03d7f97c9c1375b0c2c729838e","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-16 07:35:19.000000000","message":"Patch Set 2: 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/761444dfdfa3428e86ee042397946f53 : SUCCESS in 12m 15s\n- grenade https://zuul.opendev.org/t/openstack/build/5c06d025b63748d0b7678eac37b445e3 : SUCCESS in 1h 08m 42s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/b2b988b67b324506886426e92d63dd5c : SUCCESS in 47m 50s\n- swift-build-image https://zuul.opendev.org/t/openstack/build/6d388e430efe41308b9f67ca5c4d97f4 : SUCCESS in 11m 08s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/da719674e5584379a892c2bf40f9122a : SUCCESS in 9m 48s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/8b24e827c0e140d892f727c68ede548a : FAILURE in 16m 37s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/60b06834707c4d7396ea0bab5cc63616 : FAILURE in 18m 18s\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/02aea623a3794201b9932bd7b053b922 : FAILURE in 17m 01s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/4f1c54e7f747436c889d3fd91f6d4336 : FAILURE in 16m 57s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/ad80b70e35774154a183174961b3c8dd : FAILURE in 19m 17s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/617a8bd2e78e4899b90752f74a6e74fb : SUCCESS in 19m 30s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/420bd051f33240228ee4ba13f7ba5c19 : SUCCESS in 21m 05s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/1a5cb1bc86364f308ed70f92cd7d3e21 : SUCCESS in 22m 46s\n- swift-tox-func-py37 https://zuul.opendev.org/t/openstack/build/50b1d16170bf466c9075da120644f319 : SUCCESS in 19m 12s\n- swift-tox-func-encryption-py37 https://zuul.opendev.org/t/openstack/build/11a240a779484641a7894ba6808f364b : SUCCESS in 19m 32s\n- swift-tox-func-ec-py37 https://zuul.opendev.org/t/openstack/build/c2042b4fb51a4f2480e704abad9e9353 : SUCCESS in 19m 57s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/85e2ca9c7b6e43f79997a1b907de9cdc : SUCCESS in 10m 33s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/905b1f3d24c341cb8c997547791653c4 : SUCCESS in 21m 53s (non-voting)\n- swift-probetests-centos-7 https://zuul.opendev.org/t/openstack/build/75707aea8a334fc8b09587d8c770322a : FAILURE in 1h 12m 00s\n- swift-probetests-centos-8 https://zuul.opendev.org/t/openstack/build/def014cef8dc415fb55fb4854274f7f2 : FAILURE in 48m 23s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/08ba3ef1847743cfb18897091b3ebd00 : SUCCESS in 58m 46s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/eb9614f2601d432e9c00dfcaabd56562 : SUCCESS in 42m 20s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/b521059a254f4dcfb3584b998ae3f31c : FAILURE in 19m 44s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/94ddae7637974fcfbd121888eb69eb2e : SUCCESS in 9m 38s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/b1b4f1c60b604ad9adc0bf3104620182 : FAILURE in 15m 25s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/afdd3935c1f640c393ed02e1983ac780 : SUCCESS in 1h 12m 10s","accounts_in_message":[],"_revision_number":2},{"id":"b5ce686dbcec55e606c3e59c9b3899074c0f0131","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2021-03-16 20:35:57.000000000","message":"Patch Set 2:\n\n(1 comment)\n\nI think I need to understand the previous patch better to be able to evaluate this one.\n\nStepping back from the detail, our goal is to be defensive about shrinking an under-populated shard which is only under-populated because it was created and cleaved from a replica that didn\u0027t have all the object rows...\n\nWe already know the time that the shard range was FOUND i.e. state_timestamp. What if we simply say \u0027don\u0027t shrink until X hours after the state_timestamp\u0027? The risk is that the FOUND ranges aren\u0027t enabled promptly, so sharding starts after X-1 hours, the small replica completes and becomes a shrink candidate before the big replicas complete.\n\nWhat if we knew when the shard range went to ACTIVE, t_active, and wait for X hours after that before shrinking? Now, at t_active + X we can be more confident that sharding was enabled more than X hours before, so hope that X hours was sufficient for the big replicas to shard after the small shard completed, but there\u0027s still a risk: we have to guess what X should be.\n\nWhat if we knew the time at which *all* replicas completed sharding, t_complete? well, we do, that\u0027s the time we stop reporting progress in the recon cache, based on cleave contexts, but we only know that at the container, not at the root.\n\nCan we communicate t_complete from the shard to container? Brainstorming...can we update state_timestamp *offset* with t_complete?? But ignore the offset in merge_shards. So we just use the offset to piggyback t_complete to the root.\n\nThen, at the root, before shrinking we need shard range state to be active, and state_timestamp offset to be non-zero, and t_now  \u003e (state_timestamp + offset) + X. (X could now be smaller, it\u0027s no longer guess work how long to wait.","accounts_in_message":[],"_revision_number":2},{"id":"35a9843588bc977f574654827f7621cb43ff1148","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2021-03-18 00:34:49.000000000","message":"Patch Set 2:\n\nStarting putting active_age dicussions in this etherpad: https://etherpad.opendev.org/p/swift-shrinking-active-age","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"0f970a67a8ddb6647089985c1757ecda718b7768","revisions":{"934aa003bce1af66670813110e420a1c2a35ffd8":{"kind":"REWORK","_number":1,"created":"2021-03-01 06:20:48.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/27/777927/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/27/777927/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/27/777927/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/27/777927/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/27/777927/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/27/777927/1"}}},"commit":{"parents":[{"commit":"01dec1240e58c9f94094ffa9a9675e908d57a049","subject":"sharder: only shrink to root if all ranges are involved","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/01dec1240e58c9f94094ffa9a9675e908d57a049"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2021-03-01 06:11:52.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2021-03-01 06:11:52.000000000","tz":660},"subject":"Shrinking: Add a created timeout","message":"Shrinking: Add a created timeout\n\nIt is possible that a replica of a container has very few objects and shards\nvery quickly, creating active shard ranges that temporarily appear to be\nunder-populated.\n\nWe don\u0027t want this to become candidates for shrinking. So this patch\nadds a new option `shrinking_created_timeout` which indicates how long\nnewly created shard is safe from becoming a shrinking candidate.\n\nThis is the first version and is still WIP, where I\u0027m just attempting to bolt\non the option. This area of the code has been in constant flux over the last\nfew weeks, so just starting to play with how it\u0027ll look.\nBecause we are using so many module level functions for shrinking it\u0027s getting\na little ugly to plumb a new timeout throughout all the calls. Will\ncontinue trying to clean it up.\n\nChange-Id: I23e3a31c7b1ebfffdbdb51f340a54ec47977abd4\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/934aa003bce1af66670813110e420a1c2a35ffd8"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/934aa003bce1af66670813110e420a1c2a35ffd8"}]},"branch":"refs/heads/master"},"0f970a67a8ddb6647089985c1757ecda718b7768":{"kind":"REWORK","_number":2,"created":"2021-03-16 06:04:16.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/27/777927/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/27/777927/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/27/777927/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/27/777927/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/27/777927/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/27/777927/2"}}},"commit":{"parents":[{"commit":"189eba187ed827c6d1d3338c48dba37e650c6f46","subject":"Sharding: Moving to active state sets state_timestamp","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/189eba187ed827c6d1d3338c48dba37e650c6f46"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2021-03-01 06:11:52.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2021-03-16 06:03:43.000000000","tz":660},"subject":"Shrinking: Add an active age","message":"Shrinking: Add an active age\n\nIt is possible that a replica of a container has very few objects and shards\nvery quickly, creating active shard ranges that temporarily appear to be\nunder-populated.\n\nWe don\u0027t want this to become candidates for shrinking. So this patch\nadds a new option `shrinking_active_age` which indicates how long\nnewly active shard is safe from becoming a shrinking candidate.\n\nChange-Id: I23e3a31c7b1ebfffdbdb51f340a54ec47977abd4\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/0f970a67a8ddb6647089985c1757ecda718b7768"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/0f970a67a8ddb6647089985c1757ecda718b7768"}]},"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":""}}}]}
