)]}'
{"id":"openstack%2Fswift~780705","triplet_id":"openstack%2Fswift~master~If71bba48769e9f5b6c51e0d6ccf86d6abee41600","project":"openstack/swift","branch":"master","topic":"active_shards_state_timestamp_epoch","hashtags":[],"change_id":"If71bba48769e9f5b6c51e0d6ccf86d6abee41600","subject":"Sharding: Moving to active state sets state_timestamp","status":"NEW","created":"2021-03-16 06:04:16.000000000","updated":"2021-03-17 12:02:40.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":false,"submittable":false,"total_comment_count":8,"unresolved_comment_count":8,"has_review_started":true,"meta_rev_id":"cc19fdf804911ed67b07dee77e55ff0a49c25efc","_number":780705,"virtual_id_number":780705,"owner":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"tag":"autogenerated:zuul:check","value":1,"date":"2021-03-16 07:45:31.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":-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":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":{"rejected":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"all":[{"value":-1,"date":"2021-03-16 06:09:59.000000000","permitted_voting_range":{"min":-1,"max":1},"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},{"_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":{"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-16 07:45:31.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-17 12:02:40.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":"52696c0942248c1de28e4b42e4e663177a005099","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 1.","accounts_in_message":[],"_revision_number":1},{"id":"e95a822021543d6e0fbe8f5266d4de35a66fb01d","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2021-03-16 06:09:59.000000000","message":"Patch Set 1: Workflow-1\n\nThis is just an idea of how we could do it. Other attempts like using CleavingContexts for only setting ACTIVE on last primary sets sharding state leaves us open to stale cleaving context issues and because shrinking is root driven only really works on root conatiners not sharding shards.\n\nThis approach allows us to simply update the state_timestamp when we mark SR as active. It deals with state_timestamp forcing unwanted updates (from a turned off server or split brain) by also using another timestamp we store.. the epoch. Which tends to get set on all existing other uses when we set the state_timestamp.","accounts_in_message":[],"_revision_number":1},{"id":"6b85eddedfd4cc2eea86930e43d73f95d08405ef","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2021-03-16 06:12:15.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"85af268dd38da3b4a917f0c40a93fb1a94d1c46a","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2021-03-16 07:45:31.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/012532fdbdd5472ea30d2fd26f5d509b : SUCCESS in 8m 57s\n- grenade https://zuul.opendev.org/t/openstack/build/2b76825a31cf4334b0f4576b86358d31 : SUCCESS in 1h 05m 50s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/8deb062bcc5f4e4e8f6ef85f97230fd8 : SUCCESS in 44m 42s\n- swift-build-image https://zuul.opendev.org/t/openstack/build/37055afb511c4035a4f07685f4efdf05 : SUCCESS in 9m 22s (non-voting)\n- swift-build-image-py3 https://zuul.opendev.org/t/openstack/build/891e28eba4c24eda840a70580b6cc058 : SUCCESS in 8m 08s (non-voting)\n- swift-tox-py27 https://zuul.opendev.org/t/openstack/build/2969de9b0d194020a9b440153e28c164 : SUCCESS in 23m 15s\n- swift-tox-py36 https://zuul.opendev.org/t/openstack/build/8301c0437b084e82963fdc8236ab8340 : SUCCESS in 1h 00m 36s\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/0bc78f2e246b4fb695e691a0d6133e98 : SUCCESS in 15m 23s\n- swift-tox-py38 https://zuul.opendev.org/t/openstack/build/f3d0ed933fa740698f5256e20737e2b6 : SUCCESS in 15m 01s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/1c8682279431415baba22680238ed0bc : SUCCESS in 16m 03s\n- swift-tox-func-py27 https://zuul.opendev.org/t/openstack/build/bada18b4b5a1465397ce787ab605b20e : SUCCESS in 14m 52s\n- swift-tox-func-encryption-py27 https://zuul.opendev.org/t/openstack/build/57c255c03673459591b552d442a39ce6 : SUCCESS in 15m 16s\n- swift-tox-func-ec-py27 https://zuul.opendev.org/t/openstack/build/725e82591af44ba69e227cd2219a301c : SUCCESS in 17m 23s\n- swift-tox-func-py37 https://zuul.opendev.org/t/openstack/build/58870587875946e3a3be39b09b9185b4 : SUCCESS in 18m 45s\n- swift-tox-func-encryption-py37 https://zuul.opendev.org/t/openstack/build/92ef97cc15784207a0e5ea54897fb304 : SUCCESS in 20m 11s\n- swift-tox-func-ec-py37 https://zuul.opendev.org/t/openstack/build/ecf73f9980014ceb9cf4020a075d0d93 : SUCCESS in 18m 06s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/d065f9dece3c45549818c21fd778cb0b : SUCCESS in 13m 58s\n- swift-tox-func-s3api-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/bbdb28dd89a34d1ebdecb38ccd5cefbf : SUCCESS in 25m 37s (non-voting)\n- swift-probetests-centos-7 https://zuul.opendev.org/t/openstack/build/7e74ee91f821464b96fcfb8cb65b309b : SUCCESS in 50m 17s\n- swift-probetests-centos-8 https://zuul.opendev.org/t/openstack/build/3bde46d8f8d64168882671abacc89681 : SUCCESS in 50m 30s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/1bb233ad12a2481ebbe9a703cf144965 : SUCCESS in 44m 08s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/615b551fe2cd4acbac9e657fa01e34b0 : SUCCESS in 41m 54s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/ae7d8218d7874a86af108541c1fc460a : SUCCESS in 12m 09s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/64847a5e833544ad97307ba5698fc73d : SUCCESS in 6m 13s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/78127fbfcaae42cc8c7374ae1d120243 : FAILURE in 11m 00s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/fb63fd8b04d94e1a95f0cda1a9d0d425 : SUCCESS in 58m 44s","accounts_in_message":[],"_revision_number":1},{"id":"cc19fdf804911ed67b07dee77e55ff0a49c25efc","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2021-03-17 12:02:40.000000000","message":"Patch Set 1:\n\n(7 comments)\n\nwe\u0027re probably going to need to do voice chat 😊\n\nmaybe the next patch will make it clearer, but if I understand this will move the state_timestamp when the SR\u0027s are made ACTIVE, so that gives us a more accurate time when each shard was sharded, but that time could still be \u0027early\u0027 if it is set on a fast-sharding-replica?","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"189eba187ed827c6d1d3338c48dba37e650c6f46","revisions":{"189eba187ed827c6d1d3338c48dba37e650c6f46":{"kind":"REWORK","_number":1,"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/05/780705/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/05/780705/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/05/780705/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/05/780705/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/05/780705/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/05/780705/1"}}},"commit":{"parents":[{"commit":"d43d59e4c6818b186996583a672ec445e35f7693","subject":"Merge \"Add name to compact output\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/d43d59e4c6818b186996583a672ec445e35f7693"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2021-03-15 23:44:24.000000000","tz":660},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2021-03-16 05:05:39.000000000","tz":660},"subject":"Sharding: Moving to active state sets state_timestamp","message":"Sharding: Moving to active state sets state_timestamp\n\nBe need to be able to know when a shard has moved into the ACTIVE state,\ncurrently there isn\u0027t an easy way to figure that for root and sharding\nshards. We do have a state_timestamp, but it\u0027s used when we need to push\nsomething backwards in the state machine.\n\nBut turns out everytime we use that we also set an epoch. Except for\nwhen we set ACITIVE of root containers when they\u0027re eligible acceptors.\nBut in that case, a root already has an epoch. Epoch\u0027s are related the\ntoe filename of the database, however, only the Timestamp.normal value\nis used for this. This means we can use timestamp offsets to indicate an\nepoch update in the root for collapsing.\n\nWhat does this mean, it means we can start using epochs to make sure\nlate ACTIVE state changes (from a node that was down) can\u0027t break\nsomething that has since moved back or forward in the state machine.\n\nChange-Id: If71bba48769e9f5b6c51e0d6ccf86d6abee41600\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/189eba187ed827c6d1d3338c48dba37e650c6f46"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/189eba187ed827c6d1d3338c48dba37e650c6f46"}]},"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","applied_by":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"}}]}],"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":["label:Workflow\u003dMIN"],"failing_atoms":["label:Workflow\u003dMAX"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
