)]}'
{"id":"openstack%2Fswift~959009","triplet_id":"openstack%2Fswift~master~Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d","project":"openstack/swift","branch":"master","topic":"rebase-relink-err3","attention_set":{"7233":{"account":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"last_update":"2025-09-23 05:42:30.000000000","reason":"A robot voted negatively on a label"},"15343":{"account":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"last_update":"2025-09-19 05:17:53.000000000","reason":"\u003cGERRIT_ACCOUNT_7233\u003e replied on the change","reason_account":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"}}},"removed_from_attention_set":{},"hashtags":[],"change_id":"Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d","subject":"Add a unique proxy number to each proxy","status":"NEW","created":"2025-09-01 07:23:51.000000000","updated":"2025-11-19 18:38:14.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":false,"submittable":false,"total_comment_count":10,"unresolved_comment_count":4,"has_review_started":true,"meta_rev_id":"57348de6a0804bc454aa2a11ffe0541f2f3e0236","_number":959009,"virtual_id_number":959009,"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":"2025-11-17 07:44:10.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":{"CC":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"}],"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-09-01 08:30:50.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":"CC"},{"updated":"2025-09-01 08:35:55.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":"2025-09-18 20:28:46.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":"CC"},{"updated":"2025-09-25 14:24:21.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"},{"updated":"2025-10-21 18:32:03.000000000","updated_by":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"reviewer":{"_account_id":34892,"name":"ASHWIN A NAIR","display_name":"indianwhocodes","email":"nairashwin952013@gmail.com","username":"indianwhocodes","status":"Nvidia"},"state":"CC"}],"messages":[{"id":"b3a5dc9f7b671ca54d6813262188efe54ac8ed11","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-01 07:23:51.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"f7a72c247a0ec334072b3913ba1b1a4af6e73d67","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-01 08:30:50.000000000","message":"Patch Set 1:\n\nBuild failed (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/4fb8f9b77c19401bb9244db14d21b56a\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/e4b9ac1c931c4f39836c9b4a747891ae : FAILURE in 1h 05m 22s","accounts_in_message":[],"_revision_number":1},{"id":"bbec1881cb7a9dace61ce723221fb152208480de","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-01 08:35:55.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\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/1bb19220057e40d98b25f94b38088fbf\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/7e8f30a9896c4e7fb234b0d5017cd8c7 : SUCCESS in 10m 03s\n- grenade https://zuul.opendev.org/t/openstack/build/57c8f41a3206498db32d7e8118507a86 : SUCCESS in 1h 02m 20s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/21b09070fd1541e4acac70d804b3d15a : SUCCESS in 1h 04m 52s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/60b03eccadc149dd87ce53a9fdd9d500 : SUCCESS in 38m 02s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/3b3714992a0e49a092cdce76127795db : SUCCESS in 44m 44s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/90b5cc29b357448facf6582160232d3c : SUCCESS in 15m 31s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/547cb60e5e094e359eea1667b21c0a81 : SUCCESS in 21m 52s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/dec4b7e402764e979b233fd787e6ff9b : SUCCESS in 10m 40s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/1fd59fb47c0e455197793929350e6ab0 : SUCCESS in 4m 48s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/b8e36d3401f94d1daf5d66dba43c9f19 : FAILURE in 10m 29s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/db2c21c2f1594be1b29c421e7f5a8cf6 : FAILURE in 16m 30s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/334f7c029236439ab7a1f10bd25f3bc7 : FAILURE in 11m 12s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/604cca0ac80847c380092ec3b246e6d0 : FAILURE in 28m 49s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/0566e85a545e4acfa28ad49b49da9cb0 : SUCCESS in 15m 31s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/5493955db5874c5f91c8a5c3f74ee49a : SUCCESS in 15m 02s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/57daf7f4714d4abe892816007cd5b085 : SUCCESS in 8m 45s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/f26471c2adcc4aadb1b3ff8fb84df9bd : SUCCESS in 6m 39s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/192048c1817748d2a3d870271cd76d7e : SUCCESS in 18m 44s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/9911fac1781f4378ad56e4c73f1137ff : SUCCESS in 11m 49s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/d1de30ff62d749fe8fe70664e73e8c8b : FAILURE in 1h 00m 18s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/15973ca75ea84734bb4690cd0e36d903 : SUCCESS in 54m 04s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/22e90716130942b79b061d2a6dab45f6 : SUCCESS in 38m 52s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/c488202d7b60428ab8e6740a7484f4ff : FAILURE in 28m 46s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d31632694f8b4bafb1a083bf6105b5d2 : SUCCESS in 5m 14s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/88f61033c5074b83a912c8135fd914c0 : SUCCESS in 20m 41s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/798798056aa04767a1d23af5ce03bb87 : SUCCESS in 34m 31s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/48fa2a1718ce47418c0b18c9888b361b : FAILURE in 53m 52s","accounts_in_message":[],"_revision_number":1},{"id":"3f76b26b50ae602d0e85b77aea845a7b3da2e7a1","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-04 06:40:01.000000000","message":"Uploaded patch set 2.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":2},{"id":"02c7d663824d80a6e1c9649385777757093b3242","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-04 06:45:35.000000000","message":"Patch Set 2:\n\n(1 comment)","accounts_in_message":[],"_revision_number":2},{"id":"2168a3a109b3c3a20782c424e83263b6f7f3fd87","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-04 07:47:57.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\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/7a68f28322d14994932a940db71bcb1a\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6ce4097acc104ca7a8b3711835d254bd : SUCCESS in 10m 25s\n- grenade https://zuul.opendev.org/t/openstack/build/ef5b264b74d644c0aa2fdb7406265513 : SUCCESS in 57m 34s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/b278fbd5fed342a29a2bf18c6affa237 : SUCCESS in 1h 06m 18s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/1fe062e4125c449bb7ca78d54b566e2c : SUCCESS in 45m 27s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/6f403a59fabf4424b80dfd6d98ba5777 : SUCCESS in 1h 00m 25s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/10c1a2385df6493d865192bfc3b066c7 : SUCCESS in 19m 44s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/0f463e13dd5947dbab4a2c89a7690df7 : SUCCESS in 17m 39s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/f33f0a4cfc19468ab5bb336927c4b799 : SUCCESS in 20m 43s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/198f06e1b1c04c00a42b8eacf738fae5 : SUCCESS in 5m 09s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/33d137bc180148e7a2560e81dc204a96 : FAILURE in 25m 08s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/765d730e2e284a7286fc620ed0ccf984 : FAILURE in 25m 01s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/b9d9952dc7d64566927e12a6a8158a5d : FAILURE in 28m 30s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/c8792d8fa6ae40d4bc714d62eb2ac760 : FAILURE in 30m 33s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/dbfac9ed8e3d4827b60392b624d5514f : SUCCESS in 13m 23s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/2712bca100af4094bd425dfa5ce8844d : SUCCESS in 15m 55s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/6bc5f9c0b11c4872a5e6119857b3bd03 : SUCCESS in 8m 25s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/56f84979b8504cecb11faf414d27fa30 : SUCCESS in 7m 45s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/c5e773e6998e40f1a63a9ab202220de9 : SUCCESS in 16m 42s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/2b0c0a1b2488409abd7b885b76b6eecd : SUCCESS in 8m 39s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/e6813fa685a44e1d8677caf885d4185b : FAILURE in 59m 30s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/ca421bd788224a12b03d1b60949e5a77 : SUCCESS in 54m 23s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/16f90cc64d624dde9ad914f17b237c25 : SUCCESS in 37m 40s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/382efb392b994401983fe2c2b328db0f : FAILURE in 24m 46s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/186db3b80b6144f7a485e336d1ffba65 : SUCCESS in 4m 05s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/84dd1f48b31d4d44bbff07329f4d1727 : SUCCESS in 18m 45s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/4848f44ddb3a41a0aaf219fbd4106056 : SUCCESS in 34m 03s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/7e9c935288f148db92750f42f10651df : SUCCESS in 40m 56s","accounts_in_message":[],"_revision_number":2},{"id":"87d26f0ab67f7cbcbce15f0f39878ccdb7ccb690","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-04 07:51:00.000000000","message":"Patch Set 2:\n\nBuild failed (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/de023fe4f0404bd78ffa4972895b86ce\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/f98bdcada62f4ee69a01ab92b0aa5d84 : FAILURE in 1h 09m 18s","accounts_in_message":[],"_revision_number":2},{"id":"f77d2b188c60f91cd9de8446dd619e3fbba58a26","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-05 05:11:23.000000000","message":"Uploaded patch set 3.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":3},{"id":"deba53c5666ebad95596e4611c4c568b7f10d90c","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-05 05:15:12.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"b0ac8343e784fe876b371d10e3ff0ab670a25161","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-05 06:01:03.000000000","message":"Patch Set 3:\n\nBuild failed (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/0a824a88be0346f799c3ab6af4efb9a7\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/0a34ab7e876548868e6c2f41a0d15867 : FAILURE in 47m 51s","accounts_in_message":[],"_revision_number":3},{"id":"08056dc3d256766346b0d33289ace0d460a0adf6","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-05 06:24:09.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\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/052f257aebef4b20a909df63300c6471\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/71ef9ef138dc418bb477efcf47d450f5 : SUCCESS in 10m 03s\n- grenade https://zuul.opendev.org/t/openstack/build/0bce5ed731564a5ebe51c874f4639f09 : SUCCESS in 1h 06m 13s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/df2a6c3c7ab14d5085e94bdc2102483f : SUCCESS in 30m 44s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/b60d5325e53b4d1b9de6ebd2d5d6f2ca : SUCCESS in 55m 00s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/62be6899e8ae4d87a23d24cec176f396 : SUCCESS in 36m 04s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/e14632e236204a469aaee534a074cc75 : SUCCESS in 16m 14s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/e54b23fe37ff42df927f784f7bd53194 : SUCCESS in 19m 26s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/2e04d4bca9754fd6b7258dd396e63011 : SUCCESS in 19m 38s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/40a4c3c69de942df887f0d8c875376e8 : SUCCESS in 6m 35s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/4fc6c1bc974f4724aaaeff4600a3b63a : FAILURE in 19m 38s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/fc0b2fb6c170423aa2fea7123f67aed0 : FAILURE in 15m 34s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/ff167f9750b3463f97ed22e71b2dc650 : FAILURE in 10m 46s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/6e6c70578e6748c89fb4e606928c7852 : FAILURE in 13m 10s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/b4116abec12f4a7ca9a3cf3759890956 : SUCCESS in 13m 41s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/f86273665825426d806af312f50cfe00 : SUCCESS in 14m 39s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/c07d9eef4de64f188e6ac86e35bdd6f7 : SUCCESS in 12m 38s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/b5edb357be6d444cbff537f11ce9f31b : SUCCESS in 6m 04s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/a9608c9dc756487784ab053b2beee7c5 : SUCCESS in 18m 58s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/8f9a753635cd416da28c37e4f1c95a99 : SUCCESS in 8m 16s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/70b063669a7e4e4da4193ff909ca269b : FAILURE in 57m 04s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/9cb4f5e2821941bdb6c13fd6d748f98b : SUCCESS in 48m 44s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/4001a3fde9d645c2a97b706094681d9c : SUCCESS in 48m 36s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/a35ade60dced46e691f42a016f3cc438 : FAILURE in 21m 40s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c4543e53711146e6b1605ec0ff3586b5 : SUCCESS in 4m 20s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/cfa516d1f77e443e80f34e01ea149aee : SUCCESS in 18m 43s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/676b6a816b3445e6acb8eed34fbad51f : SUCCESS in 43m 09s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/6e813bd5b4f34db3a398b35840b5120c : SUCCESS in 46m 32s","accounts_in_message":[],"_revision_number":3},{"id":"8728fd2ea0db295c4cdc9d992c07040b6ed02b83","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-09 06:59:45.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":4},{"id":"4ba7816584b9d6ca9405a7659fe63ecd38d8ddc4","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-09 07:48:35.000000000","message":"Patch Set 4:\n\nBuild failed (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/4ece2114bf0b421ab81d1c2b8fb7c4bf\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/56338f2765a74910aec8f9596746318f : FAILURE in 46m 44s","accounts_in_message":[],"_revision_number":4},{"id":"73ec0f4f432906a11886e1dc2b771da99fe0dd15","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-09 08:06:21.000000000","message":"Patch Set 4: 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\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/efb7fcc4a3d743c9af0bd345434f0f49\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/87086d75bca049ef81b2ecf4c9c08262 : SUCCESS in 4m 47s\n- grenade https://zuul.opendev.org/t/openstack/build/622be984844a486abde7eb35b705a00a : SUCCESS in 50m 06s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/0e8d06e210054f11841fc317c5bf3285 : SUCCESS in 1h 01m 34s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/0b81204248bd48fd99707a2c9b6116ef : SUCCESS in 54m 28s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/5c57c4b80f2043c89b008876ea49ccae : SUCCESS in 32m 33s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/5b5105a175794715a189c7383ee9af9c : SUCCESS in 15m 23s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/0a7e2b8f3c204e32923085eb8c377ce7 : SUCCESS in 15m 45s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/7c4ca00539d048b1b3eee5c6c9d04956 : SUCCESS in 16m 22s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/8a596d3c238a4a3bb501150d5a49dee4 : SUCCESS in 9m 03s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/07c5b226ef0749deba2ba6d7e5fc7608 : FAILURE in 23m 59s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/0a3433d2d0e44fe194e1cae2e7aa5172 : FAILURE in 20m 44s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/3decb9ae10a34b7a86a80fe297347748 : FAILURE in 26m 58s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/037ad0b3a86a4f2485d410ee39d49101 : FAILURE in 11m 16s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/24b66969bfa64d62a61e47e8bb75c2e9 : SUCCESS in 7m 49s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/1c9055a9a8ec4c84b7efda790a8df1de : SUCCESS in 15m 15s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/ceca4edd41d54599bd1395e4a7c63fce : SUCCESS in 8m 20s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/1c83472ae24846fba3772d30401bed13 : SUCCESS in 3m 47s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/5334fd025f1d47fabde9dbaff8e60bff : SUCCESS in 15m 53s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/5a4d17628fc14e10820e57184eafa8ca : SUCCESS in 12m 12s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/b1999a52dc9e43b3883af999f42b0881 : FAILURE in 57m 49s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/7b352c8072274d3fb11d7e0adc8dddd4 : SUCCESS in 24m 56s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/b5966d1642f1430493192f883cba4079 : SUCCESS in 36m 16s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/41eb7883d70c487cb84550173dfa812c : FAILURE in 21m 47s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/6419ff32a4404f87b7f469e71c19fa96 : SUCCESS in 4m 12s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/4934970566364f88a9f21547ddb9480f : SUCCESS in 16m 44s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/2787ec6ed2614a3d88bd2b2fcdee75ad : SUCCESS in 50m 23s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/b417b8557aeb496bb84073a9207db60f : SUCCESS in 54m 47s","accounts_in_message":[],"_revision_number":4},{"id":"c06b1aac89c8d0d4d00afcac39f3e014bf6b2c53","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-10 13:05:40.000000000","message":"Uploaded patch set 5.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":5},{"id":"780edb12cdd9857b410bb637becf33a987365958","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-10 14:18:05.000000000","message":"Patch Set 5: 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\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/5e8d0a49b90044b1b283ceaf52922319\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/1d574335c5924ae4b856f2fba283483a : SUCCESS in 4m 50s\n- grenade https://zuul.opendev.org/t/openstack/build/d0f0574b670b4d3fb9800c744c73a19b : SUCCESS in 28m 35s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/f03b4ff9ce6a4911b3aca3c9f0a368f4 : SUCCESS in 51m 30s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/eb0d122d461b41e89d8520402b7bc823 : SUCCESS in 48m 39s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/cb07c9721529429287e3e26dd097a14e : SUCCESS in 1h 06m 02s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/307fdbc613e14a72bc30bdaf5e50dcd7 : SUCCESS in 17m 23s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/2bbe14d5c4d944ffbdce00416a235d24 : SUCCESS in 20m 18s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/329760d6131348ee8c6bebdea3a6e3f1 : SUCCESS in 10m 41s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/410c2ce22cbd4ea7b55a07ba1fac04da : SUCCESS in 6m 39s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/47d1319ecd7f45db9862504fcc5506ec : SUCCESS in 10m 00s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/293b554b47be4058a8e8dcceddb6d703 : SUCCESS in 16m 38s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/0a61a84b630843feb53c42924923830d : SUCCESS in 36m 45s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/af9e117782724c419388d87b106c612b : SUCCESS in 25m 00s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/4387707ba21a4a1ab1730f67f6b78f4c : SUCCESS in 9m 23s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/ea979770cef24fc79c5f7fe49362a11e : SUCCESS in 14m 13s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/e730c269f0f04c469e1176b8cee9f03f : SUCCESS in 15m 03s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/0fe618c10fe74b8daf513ca75c999647 : SUCCESS in 6m 51s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/376008e843294d6c8d74bce0dd5feb07 : SUCCESS in 16m 39s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/7f3cb2dce1e7476597a24a24ff1b8230 : SUCCESS in 4m 49s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/093ee33d4ed74a2e81b3a7f298d94282 : FAILURE in 1h 01m 26s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/e7d25aeafbf046e49af270b56a2c74e0 : SUCCESS in 49m 51s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/954dd3f6380a4988a963efb81d3af3a3 : SUCCESS in 27m 50s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/93137eab6216467cabedecc282eb4a5f : SUCCESS in 26m 22s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f0186e86f7374c2bb315613715c77748 : FAILURE in 3m 33s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/df270788f1ab46079754e66305438f22 : SUCCESS in 17m 49s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/8f945fccd417462ca9caa5bab562e0f9 : SUCCESS in 49m 52s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/b0c075293a6a49fe9c63fcb64eb182b4 : SUCCESS in 43m 25s","accounts_in_message":[],"_revision_number":5},{"id":"9a72f9cba32df08bac4114bbc370e0c6c1c1eba9","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-10 16:03:50.000000000","message":"Patch Set 5:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/308b687855a8448aaebe6bd47873d941\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/f7d3c80bb36d426580a417bdab7cd6fe : SUCCESS in 31m 14s","accounts_in_message":[],"_revision_number":5},{"id":"a106c7672b56ee15875ecc1de0accf5a289ede00","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-15 13:00:56.000000000","message":"Patch Set 5:\n\n(1 comment)","accounts_in_message":[],"_revision_number":5},{"id":"406b0708e1786e8591862a1b24b70abaf202f594","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-15 13:05:21.000000000","message":"Uploaded patch set 6.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":6},{"id":"5427bc7e46f99467d15b00242acc1ab248995c6b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-15 14:31:20.000000000","message":"Patch Set 6: 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\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/cb3fff5cd9cf416d9c5d7466f81bdfba\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/38aad383a0e444ddbb800e7b82bad13b : SUCCESS in 8m 48s\n- grenade https://zuul.opendev.org/t/openstack/build/d709d82d36b542929c2e29046370ada2 : SUCCESS in 53m 20s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/4bc7ee1328a24859b25e26d120f0f318 : SUCCESS in 50m 37s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/7ee6063438af4e9ebff492266604159f : SUCCESS in 1h 00m 51s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/ea4c481edc6241d3935d47ab0911acf1 : SUCCESS in 1h 01m 46s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/2c1283d537c54c86a929012f6380901e : SUCCESS in 20m 51s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/afeb6c7356224b53b0a0307d5e1433b4 : SUCCESS in 18m 02s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/640c0864cc874335a73b3e9ed001266e : SUCCESS in 20m 48s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/5dded41065f446da8da8926d27862acd : SUCCESS in 6m 59s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/8e5ed7c556fa47878e36010e8191cb5e : SUCCESS in 25m 17s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/4a528bad0b3b47a78a5a324b423a82f1 : SUCCESS in 17m 05s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/cae4bab2b9164e7ea4a48add9a670b91 : SUCCESS in 23m 26s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/8ff8590e4809412b8c3a5ca609066483 : SUCCESS in 28m 53s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/53c4b72060cd48e7ad025f07660b2dba : SUCCESS in 13m 27s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/4b14dc9f5d0a4d959f84d36707b61304 : SUCCESS in 17m 00s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/de0b95fbe1fc4d13a9909889184ff73b : SUCCESS in 15m 40s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/484d6da34fe647a285c7cbf078084060 : SUCCESS in 6m 18s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/1850b1119b6b4e968bcc15d7e1405e47 : SUCCESS in 14m 26s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/38255394fb964454ad8472665ed655d6 : SUCCESS in 8m 04s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/38e36dfd479b4acbab7c7b84755d6b40 : FAILURE in 54m 31s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/002afa45f95b47ceb6cb2043efb91959 : SUCCESS in 56m 32s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/814e84fad1ef4101bcfd5c2efafd57a7 : SUCCESS in 56m 01s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/e692e6a482b44112bccb7c0c442b5b5d : SUCCESS in 23m 59s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/97e4cc147c23420aa8dc60feffc702da : SUCCESS in 4m 27s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/1111f3a789124f9ba8d49e5397b3f013 : SUCCESS in 20m 01s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/06f2a4b8f6764528abc30b90d987e37c : SUCCESS in 49m 38s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/3a99d7cb4b6e43ef87678f19a8183b22 : SUCCESS in 50m 02s","accounts_in_message":[],"_revision_number":6},{"id":"f3663ad68b94d291653f793d4250c643542a1660","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-15 17:40:59.000000000","message":"Patch Set 6:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/8cf6d78fba7e487e8a5ac925614f3853\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/020b9ddc173e4b6b9b7a20f9a6d59051 : SUCCESS in 1h 00m 09s","accounts_in_message":[],"_revision_number":6},{"id":"b8ddf2a60e9ef29decc833de3169d6128e229a6a","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2025-09-18 20:28:46.000000000","message":"Patch Set 6:\n\n(2 comments)","accounts_in_message":[],"_revision_number":6},{"id":"52625d78afa452abf3ca134000676aaa6966796d","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2025-09-18 20:57:30.000000000","message":"Patch Set 6:\n\n(1 comment)","accounts_in_message":[],"_revision_number":6},{"id":"11cd2b44a98f603faf8e142b129afd37b7edc53e","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-19 05:17:53.000000000","message":"Patch Set 6:\n\n(2 comments)","accounts_in_message":[],"_revision_number":6},{"id":"97010dea9ebb1cdd9f7f1271784455eb92e4551c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-22 06:30:08.000000000","message":"Uploaded patch set 7.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":7},{"id":"b5d80050a540505edeeb592138e1270a6a752aa9","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-09-23 04:32:54.000000000","message":"Uploaded patch set 8.","accounts_in_message":[],"_revision_number":8},{"id":"9ce09fcae986c67a92826976feea951071a95ff0","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-23 05:31:04.000000000","message":"Patch Set 8:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/f3d84248fc56454ab23dafe10517df82\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/5922f54a5018404eb5eb7015ed7bba57 : SUCCESS in 55m 33s","accounts_in_message":[],"_revision_number":8},{"id":"87db3bb1493991fc3487b7dcfc15703214b1d6b1","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-09-23 05:42:30.000000000","message":"Patch Set 8: 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\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/3e7d225414c540d0954f6da44be591ab\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/3a80324e3bec403c9307ca747a589f47 : SUCCESS in 10m 17s\n- grenade https://zuul.opendev.org/t/openstack/build/e5437b54b57e445ea70ee365e80ff943 : SUCCESS in 57m 28s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/a04e4198d4224109a29c5b66d65871e5 : SUCCESS in 31m 06s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/092f5f0628f1435c8490d0e3218e0848 : SUCCESS in 29m 55s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/80da95ff3d2945b9b03df0eb0de6573d : SUCCESS in 59m 40s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/ca738e7c7260469188022c552e12677f : SUCCESS in 10m 32s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/474f1a9fb1394563961b405e5da84ee8 : SUCCESS in 14m 25s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/f678365879794e89bbd4e9ae5f2969f2 : SUCCESS in 10m 29s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/37b39f95170f42c289a1998916c4d233 : SUCCESS in 4m 57s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/5ced4770986b423aa4580fa2e89bfc44 : SUCCESS in 18m 49s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/a29b00a1b4504ec7a00d99e9bf709971 : SUCCESS in 9m 01s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/9c1e1705fbeb4ff4a9ae38323915b25d : SUCCESS in 22m 58s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/b43b27ea3bf345b884ecefb2cf236df9 : SUCCESS in 28m 15s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/b116696134944d908b3f5e4fa14b1b83 : SUCCESS in 13m 58s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/be5760c7e375410e9fc61f092474d2a2 : SUCCESS in 14m 27s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/739875656ba54176b49c84686514e7d8 : SUCCESS in 12m 56s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/7c76d1cd8fae4ab5a64d9ec53dce8e90 : SUCCESS in 6m 38s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/e130921eca9c4309a8e5bed6654c6b01 : SUCCESS in 14m 40s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/2b2fdb943e8b4daa92738fd70d4de6eb : SUCCESS in 7m 27s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/1cd94a469ba44a2b98ec1a9cf7fe8555 : FAILURE in 1h 04m 39s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/b1276aa2692b441086bbe7bafd481855 : SUCCESS in 53m 03s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/f89d00d737a34275b6ac71b84fd9cae0 : SUCCESS in 27m 17s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/7e1edac20256430fb7cb28184e97e08c : SUCCESS in 27m 21s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/c2e593403cab427aaec4d0c7d41d3188 : SUCCESS in 3m 17s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/a54b4eeabb3c404599bd96db330a3d52 : SUCCESS in 19m 58s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/870b22181ba64be5b57d9d97c9cd2600 : SUCCESS in 48m 15s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/2eb09c8cdf8b4bb7977b85d0186fa493 : SUCCESS in 48m 01s","accounts_in_message":[],"_revision_number":8},{"id":"872cd6d933d7bd55443191b268a43439a604edd7","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-09-25 14:24:21.000000000","message":"Patch Set 8:\n\n(1 comment)","accounts_in_message":[],"_revision_number":8},{"id":"9775999e09b568466b676665e0fd1ea6d630b561","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-11-11 07:59:12.000000000","message":"Uploaded patch set 9.\n\nOutdated Votes:\n* Verified-1\n","accounts_in_message":[],"_revision_number":9},{"id":"876771c3bb180b5ae04c74090e0f5d3945dd9692","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-11-12 03:41:25.000000000","message":"Uploaded patch set 10.","accounts_in_message":[],"_revision_number":10},{"id":"ec658677955145dc8ae418fe3856a54707b96396","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-11-12 06:43:19.000000000","message":"Uploaded patch set 11.","accounts_in_message":[],"_revision_number":11},{"id":"5021fdd1b2dbc7575da1ba39c363bbffa83e9805","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-11-13 06:07:21.000000000","message":"Uploaded patch set 12.","accounts_in_message":[],"_revision_number":12},{"id":"de3b9eb1c67bbaddd0d36ed940364a3b787158f0","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"date":"2025-11-17 06:37:08.000000000","message":"Uploaded patch set 13.","accounts_in_message":[],"_revision_number":13},{"id":"e6cd01da553af441e431f37f1e4843a7456160ac","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-11-17 07:16:11.000000000","message":"Patch Set 13:\n\nBuild failed (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/00484754ee0545ba86ea00bc863b91f2\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/2208d45fa9d249b18748d567f79590ec : FAILURE in 37m 04s","accounts_in_message":[],"_revision_number":13},{"id":"0c752e59aadbcff7310e2ff02387e2f06810398b","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-11-17 07:44:10.000000000","message":"Patch Set 13: Verified-1\n\n(2 comments)\n\nBuild failed (check pipeline).  For information on how to proceed, see\nhttps://docs.opendev.org/opendev/infra-manual/latest/developers.html#automated-testing\nand https://docs.openstack.org/project-team-guide/testing.html#how-to-handle-test-failures\n\nhttps://zuul.opendev.org/t/openstack/buildset/8e9fd4d2ace740f6b4e42bac095b6b08\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/6c9aff252c974ce497f75beac9b2c9bf : SUCCESS in 8m 17s\n- grenade https://zuul.opendev.org/t/openstack/build/926c0611d3cb453eb2954aa16629348d : SUCCESS in 59m 11s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/005a29c416324d839808c0c428b9e861 : SUCCESS in 42m 10s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/a5c14e73ace74840a51020b2a97c9c20 : SUCCESS in 36m 11s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/2afdf4a2f1be4e499242bc71e166e7eb : SUCCESS in 1h 05m 18s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/6a8bf698aac246e597d9ee4ae424eda1 : SUCCESS in 18m 54s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/0914a36473784342a50455c98518dac4 : SUCCESS in 16m 20s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/b9e22e5a9281435f9fa8ddacff2f8d98 : SUCCESS in 15m 49s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/ec0e959e337b4774bed4dc0acfc11802 : FAILURE in 4m 29s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/d5dfcfefba0c4338b9e3ef3a54f78a9b : FAILURE in 22m 17s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/526b9e105de74aaf8f10441a997d0d10 : FAILURE in 21m 32s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/d130722d541d4ebca0b41e1d451eea91 : FAILURE in 10m 53s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/e57194842de047349a8c7bdeeaac26a3 : FAILURE in 18m 08s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/04c1886364af4cdd9eb05533ce5fb117 : SUCCESS in 12m 57s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/45c0495c0df748b5b6f41becb8a240e2 : SUCCESS in 14m 45s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/9598b230636b4a4697b09a157166cd06 : SUCCESS in 15m 22s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/14a4b77e46b040f9ad7c6e4b28dc0fd7 : SUCCESS in 3m 41s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/54b5059230834d67b2647bf2589bc539 : SUCCESS in 12m 55s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/9c969d14ae52464b8fb23b93daed7b9d : SUCCESS in 8m 20s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/4e5d41836bed40ea9a1004ca938057be : FAILURE in 48m 39s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/9be82ddadf25462aadafbded0f9d5d0f : SUCCESS in 34m 19s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/7ac3b42cd5c84a0fbd4a786b7f9c3520 : SUCCESS in 21m 20s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/4ba59934dae24253b06a4b2034f26d1e : FAILURE in 27m 35s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/7ff01995ad804b849031086d57460215 : FAILURE in 2m 29s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/7fafd8db3a9a418295970dafc552fdd1 : SUCCESS in 14m 21s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/04943d2ffcaf472ba2897ecb3ff9c7ae : SUCCESS in 35m 33s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/55cbc36375e948589510f635fe491256 : SUCCESS in 56m 00s","accounts_in_message":[],"_revision_number":13},{"id":"57348de6a0804bc454aa2a11ffe0541f2f3e0236","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2025-11-19 18:38:14.000000000","message":"Patch Set 13:\n\n(1 comment)","accounts_in_message":[],"_revision_number":13}],"current_revision_number":13,"current_revision":"410bb21f7299c5c811da3b9a34f18d7330909241","revisions":{"9da369bf6847ed1fe1ad2472d9d28c4cf06f21bc":{"kind":"REWORK","_number":1,"created":"2025-09-01 07:23:51.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/1"}}},"commit":{"parents":[{"commit":"182f85a2353528332911b72dff40d3f854dcaf80","subject":"wip: probe testing timestamp collison","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/182f85a2353528332911b72dff40d3f854dcaf80"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 07:23:33.000000000","tz":600},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lampart clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the abiltiy to not just\nprovide the a timestamp but also an offset/counter. We can easily\nintergrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request make by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIn an ideal world you\u0027d use something the unique machine number so the\nnumber can be truely unique, but that might be getting a bit big a\nnumber. So this patch either allows you to define a unique number:\n\n  proxy_number: \u003csome number\u003e\n\nOr the default, which is \u0027auto\u0027. Which will use randint and the\nmax_proxy_number, default 10000, constraint to randomly pick a number.\n\nThis isn\u0027t full proof, but much better then what we have now.. and also\nallows you not have to define a unique proxy number for every proxy.\n\nThe generated unique proxy number, number + pid, will be logged to info:\n\n   Unique proxy number (proxy_number): 116779\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/9da369bf6847ed1fe1ad2472d9d28c4cf06f21bc"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/9da369bf6847ed1fe1ad2472d9d28c4cf06f21bc"}]},"branch":"refs/heads/master"},"ac5b9fe501d1054688f0084ada1a6e1c1cbc7cd5":{"kind":"REWORK","_number":2,"created":"2025-09-04 06:40:01.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/2"}}},"commit":{"parents":[{"commit":"182f85a2353528332911b72dff40d3f854dcaf80","subject":"wip: probe testing timestamp collison","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/182f85a2353528332911b72dff40d3f854dcaf80"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-04 06:37:58.000000000","tz":600},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lampart clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the abiltiy to not just\nprovide the a timestamp but also an offset/counter. We can easily\nintergrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request make by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIn an ideal world you\u0027d use something the unique machine number so the\nnumber can be truely unique, but that might be getting a bit big a\nnumber. So this patch either allows you to define a unique number:\n\n  proxy_number: \u003csome number\u003e\n\nOr the default, which is \u0027auto\u0027. Which will use randint and the\nmax_proxy_number, default 10000, constraint to randomly pick a number.\n\nThis isn\u0027t full proof, but much better then what we have now.. and also\nallows you not have to define a unique proxy number for every proxy.\n\nThe generated unique proxy number, number + pid, will be logged to info:\n\n   Unique proxy number (proxy_number): 116779\n\nAlso add the option to specify `uuid` as the proxy_number option, in\nthis case it uses uuid1\u0027s unique machine id as the proxy number. This is\nsuppose to be generated from a mac address or randomly generated.\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ac5b9fe501d1054688f0084ada1a6e1c1cbc7cd5"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ac5b9fe501d1054688f0084ada1a6e1c1cbc7cd5"}]},"branch":"refs/heads/master"},"87e2a0462c4782299bc927c0a7e0f589814910b4":{"kind":"REWORK","_number":3,"created":"2025-09-05 05:11:23.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/3"}}},"commit":{"parents":[{"commit":"182f85a2353528332911b72dff40d3f854dcaf80","subject":"wip: probe testing timestamp collison","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/182f85a2353528332911b72dff40d3f854dcaf80"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-05 05:10:51.000000000","tz":600},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lampart clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the abiltiy to not just\nprovide the a timestamp but also an offset/counter. We can easily\nintergrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request make by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIn an ideal world you\u0027d use something the unique machine number so the\nnumber can be truely unique, but that might be getting a bit big a\nnumber. So this patch either allows you to define a unique number:\n\n  proxy_number: \u003csome number\u003e\n\nOr the default, which is \u0027auto\u0027. Which will use randint and the\nmax_proxy_number, default 10000, constraint to randomly pick a number.\n\nThis isn\u0027t full proof, but much better then what we have now.. and also\nallows you not have to define a unique proxy number for every proxy.\n\nThe generated unique proxy number, number + pid, will be logged to info:\n\n   Unique proxy number (proxy_number): 116779\n\nAlso add the option to specify `uuid` as the proxy_number option, in\nthis case it uses uuid1\u0027s unique machine id as the proxy number. This is\nsuppose to be generated from a mac address or randomly generated.\n\nWhen adding the final proxy_number to the offset, we bitshift it to the\nleft 4 bits to leave the last hex character untouched in the datafile\nfilename. This still makes it easy to see changes due to things that use\nthe offset like the reconciler, eg:\n\n  /srv/node2/sdb2/objects/972/dc8/f32d2481dd87c5bd3e6aca9d1725fdc8/1757048967.85051_0014efc4af5f5ff0.data\n  /srv/node3/sdb3/objects-1/960/889/f02df5ca8360360525554fbee37a1889/1757048929.53682_0007f58d4c7c7d10#5#d.data\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/87e2a0462c4782299bc927c0a7e0f589814910b4"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/87e2a0462c4782299bc927c0a7e0f589814910b4"}]},"branch":"refs/heads/master"},"3f42c6dfa966ea3103c7050b6449381756d646f9":{"kind":"REWORK","_number":4,"created":"2025-09-09 06:59:45.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/4"}}},"commit":{"parents":[{"commit":"553a4049b7b36d6e7fde50aa04f2553f5ccbf897","subject":"Test: timestamp collisons when uploading same EC object.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/553a4049b7b36d6e7fde50aa04f2553f5ccbf897"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-09 06:55:08.000000000","tz":600},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lampart clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the ability to not just\nprovide a timestamp but also an offset/counter. We can easily\nintegrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request made by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIf you want to be explicit you can use:\n\n  proxy_number: \u003csome number\u003e\n\nTo define a unique proxy number. But to make life easier if you use\n\u0027auto\u0027 (the default) then `uuid.getnode()` is used instead.\nThe `getnode()` function will generate the hardware address as a 48-bit\npositive integer or failing that generate a random 48-bit number.\nThis should be unique enough to generate a different proxy_number for\nevery proxy.\n\nTo keep the proxy number unique amongst workers, we then add the worker\npid. This will be logged at the info level:\n\n   Unique proxy number (proxy_number): 116779\n\nBecause we use eventlet within each worker, there is a slight chance\nthat greenthread could collide. So in the conroller.base where we make\nsure x-timestamp is set, we also grab the current eventlet thread id and\ninclude that too:\n\n  if eventlet.getcurrent():\n      unique_offset +\u003d id(eventlet.getcurrent())\n\nWhen adding the final proxy_number to the offset, we bitshift it to the\nleft 4 bits to leave the last hex character untouched in the datafile\nfilename. This still makes it easy to see changes due to things that use\nthe offset like the reconciler, eg:\n\n  /srv/node2/sdb2/objects/972/dc8/f32d2481dd87c5bd3e6aca9d1725fdc8/1757048967.85051_0014efc4af5f5ff0.data\n  /srv/node3/sdb3/objects-1/960/889/f02df5ca8360360525554fbee37a1889/1757048929.53682_0007f58d4c7c7d10#5#d.data\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/3f42c6dfa966ea3103c7050b6449381756d646f9"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/3f42c6dfa966ea3103c7050b6449381756d646f9"}]},"branch":"refs/heads/master"},"343f80fdb77f91c24159dff62756492383a07ccb":{"kind":"REWORK","_number":5,"created":"2025-09-10 13:05:40.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/5"}}},"commit":{"parents":[{"commit":"553a4049b7b36d6e7fde50aa04f2553f5ccbf897","subject":"Test: timestamp collisons when uploading same EC object.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/553a4049b7b36d6e7fde50aa04f2553f5ccbf897"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-10 13:04:41.000000000","tz":600},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lampart clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the ability to not just\nprovide a timestamp but also an offset/counter. We can easily\nintegrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request made by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIf you want to be explicit you can use:\n\n  proxy_number: \u003csome number\u003e\n\nA 0 will disable this feature and was mostly added to aid in tests.\nTo define a unique proxy number. But to make life easier if you use\n\u0027auto\u0027 (the default) then `uuid.getnode()` is used instead.\nThe `getnode()` function will generate the hardware address as a 48-bit\npositive integer or failing that generate a random 48-bit number.\nThis should be unique enough to generate a different proxy_number for\nevery proxy.\n\nTo keep the proxy number unique amongst workers, we then add the worker\npid. This will be logged at the info level:\n\n   Unique proxy number (proxy_number): 116779\n\nBecause we use eventlet within each worker, there is a slight chance\nthat greenthread could collide. So in the conroller.base where we make\nsure x-timestamp is set, we also grab the current eventlet thread id and\ninclude that too:\n\n  if eventlet.getcurrent():\n      unique_offset +\u003d id(eventlet.getcurrent())\n\nWhen adding the final proxy_number to the offset, we bitshift it to the\nleft 4 bits to leave the last hex character untouched in the datafile\nfilename. This still makes it easy to see changes due to things that use\nthe offset like the reconciler, eg:\n\n  /srv/node2/sdb2/objects/972/dc8/f32d2481dd87c5bd3e6aca9d1725fdc8/1757048967.85051_0014efc4af5f5ff0.data\n  /srv/node3/sdb3/objects-1/960/889/f02df5ca8360360525554fbee37a1889/1757048929.53682_0007f58d4c7c7d10#5#d.data\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/343f80fdb77f91c24159dff62756492383a07ccb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/343f80fdb77f91c24159dff62756492383a07ccb"}]},"branch":"refs/heads/master"},"59cc10f0c681cc280f6982fcd7d8730d721e9638":{"kind":"REWORK","_number":6,"created":"2025-09-15 13:05:21.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/6"}}},"commit":{"parents":[{"commit":"553a4049b7b36d6e7fde50aa04f2553f5ccbf897","subject":"Test: timestamp collisons when uploading same EC object.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/553a4049b7b36d6e7fde50aa04f2553f5ccbf897"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-15 13:04:58.000000000","tz":600},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lamport clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the ability to not just\nprovide a timestamp but also an offset/counter. We can easily\nintegrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request made by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIf you want to be explicit you can use:\n\n  proxy_number: \u003csome number\u003e\n\nA 0 will disable this feature and was mostly added to aid in tests.\nTo define a unique proxy number. But to make life easier if you use\n\u0027auto\u0027 (the default) then `uuid.getnode()` is used instead.\nThe `getnode()` function will generate the hardware address as a 48-bit\npositive integer or failing that generate a random 48-bit number.\nThis should be unique enough to generate a different proxy_number for\nevery proxy.\n\nTo keep the proxy number unique amongst workers, we then add the worker\npid. This will be logged at the info level:\n\n   Unique proxy number (proxy_number): 116779\n\nBecause we use eventlet within each worker, there is a slight chance\nthat greenthread could collide. So in the conroller.base where we make\nsure x-timestamp is set, we also grab the current eventlet thread id and\ninclude that too:\n\n  if eventlet.getcurrent():\n      unique_offset +\u003d id(eventlet.getcurrent())\n\nWhen adding the final proxy_number to the offset, we bitshift it to the\nleft 4 bits to leave the last hex character untouched in the datafile\nfilename. This still makes it easy to see changes due to things that use\nthe offset like the reconciler, eg:\n\n  /srv/node2/sdb2/objects/972/dc8/f32d2481dd87c5bd3e6aca9d1725fdc8/1757048967.85051_0014efc4af5f5ff0.data\n  /srv/node3/sdb3/objects-1/960/889/f02df5ca8360360525554fbee37a1889/1757048929.53682_0007f58d4c7c7d10#5#d.data\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/59cc10f0c681cc280f6982fcd7d8730d721e9638"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/59cc10f0c681cc280f6982fcd7d8730d721e9638"}]},"branch":"refs/heads/master"},"904ce0796de0af46f67e87f0a68d4554dd4a14b3":{"kind":"REWORK","_number":7,"created":"2025-09-22 06:30:08.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/7","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/7","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/7 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/7 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/7 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/7"}}},"commit":{"parents":[{"commit":"553a4049b7b36d6e7fde50aa04f2553f5ccbf897","subject":"Test: timestamp collisons when uploading same EC object.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/553a4049b7b36d6e7fde50aa04f2553f5ccbf897"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-22 06:26:15.000000000","tz":600},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lamport clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the ability to not just\nprovide a timestamp but also an offset/counter. We can easily\nintegrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request made by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIf you want to be explicit you can use:\n\n  proxy_number: \u003csome number\u003e\n\nA 0 will disable this feature and was mostly added to aid in tests.\nTo define a unique proxy number. But to make life easier if you use\n\u0027auto\u0027 (the default) then `uuid.getnode()` is used instead.\nThe `getnode()` function will generate the hardware address as a 48-bit\npositive integer or failing that generate a random 48-bit number.\nThis should be unique enough to generate a different proxy_number for\nevery proxy.\n\nTo keep the proxy number unique amongst workers, we then add the worker\npid. This will be logged at the info level:\n\n   Unique proxy number (proxy_number): 116779\n\nBecause we use eventlet within each worker, there is a slight chance\nthat greenthread could collide. So in the conroller.base where we make\nsure x-timestamp is set, we also grab the current eventlet thread id and\ninclude that too:\n\n  if eventlet.getcurrent():\n      unique_offset +\u003d id(eventlet.getcurrent())\n\nWhen adding the final proxy_number to the offset, we bitshift it to the\nleft 4 bits to leave the last hex character untouched in the datafile\nfilename. This still makes it easy to see changes due to things that use\nthe offset like the reconciler, eg:\n\n  /srv/node2/sdb2/objects/972/dc8/f32d2481dd87c5bd3e6aca9d1725fdc8/1757048967.85051_0014efc4af5f5ff0.data\n  /srv/node3/sdb3/objects-1/960/889/f02df5ca8360360525554fbee37a1889/1757048929.53682_0007f58d4c7c7d10#5#d.data\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/904ce0796de0af46f67e87f0a68d4554dd4a14b3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/904ce0796de0af46f67e87f0a68d4554dd4a14b3"}]},"branch":"refs/heads/master"},"d0a08152f49dde21906efa3c7ef4a8fb7d31797a":{"kind":"REWORK","_number":8,"created":"2025-09-23 04:32:54.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/8","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/8","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/8 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/8 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/8 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/8"}}},"commit":{"parents":[{"commit":"c14a2e46b2a676529bf4fbd168831d8a66782b87","subject":"object-server: raise 500 on ec timestamp collision","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c14a2e46b2a676529bf4fbd168831d8a66782b87"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-23 04:32:13.000000000","tz":0},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lamport clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the ability to not just\nprovide a timestamp but also an offset/counter. We can easily\nintegrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request made by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIf you want to be explicit you can use:\n\n  proxy_number: \u003csome number\u003e\n\nA 0 will disable this feature and was mostly added to aid in tests.\nTo define a unique proxy number. But to make life easier if you use\n\u0027auto\u0027 (the default) then `uuid.getnode()` is used instead.\nThe `getnode()` function will generate the hardware address as a 48-bit\npositive integer or failing that generate a random 48-bit number.\nThis should be unique enough to generate a different proxy_number for\nevery proxy.\n\nTo keep the proxy number unique amongst workers, we then add the worker\npid. This will be logged at the info level:\n\n   Unique proxy number (proxy_number): 116779\n\nBecause we use eventlet within each worker, there is a slight chance\nthat greenthread could collide. So in the conroller.base where we make\nsure x-timestamp is set, we also grab the current eventlet thread id and\ninclude that too:\n\n  if eventlet.getcurrent():\n      unique_offset +\u003d id(eventlet.getcurrent())\n\nWhen adding the final proxy_number to the offset, we bitshift it to the\nleft 4 bits to leave the last hex character untouched in the datafile\nfilename. This still makes it easy to see changes due to things that use\nthe offset like the reconciler, eg:\n\n  /srv/node2/sdb2/objects/972/dc8/f32d2481dd87c5bd3e6aca9d1725fdc8/1757048967.85051_0014efc4af5f5ff0.data\n  /srv/node3/sdb3/objects-1/960/889/f02df5ca8360360525554fbee37a1889/1757048929.53682_0007f58d4c7c7d10#5#d.data\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/d0a08152f49dde21906efa3c7ef4a8fb7d31797a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/d0a08152f49dde21906efa3c7ef4a8fb7d31797a"}]},"branch":"refs/heads/master"},"dff861b7b7468559ef27658a9055105f3a6c0ddb":{"kind":"REWORK","_number":9,"created":"2025-11-11 07:59:12.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/9","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/9","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/9 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/9 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/9 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/9"}}},"commit":{"parents":[{"commit":"c14a2e46b2a676529bf4fbd168831d8a66782b87","subject":"object-server: raise 500 on ec timestamp collision","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c14a2e46b2a676529bf4fbd168831d8a66782b87"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-11-11 07:58:42.000000000","tz":660},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lamport clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the ability to not just\nprovide a timestamp but also an offset/counter. We can easily\nintegrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request made by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIf you want to be explicit you can use:\n\n  proxy_number: \u003csome number\u003e\n\nA 0 will disable this feature and was mostly added to aid in tests.\nTo define a unique proxy number. But to make life easier if you use\n\u0027auto\u0027 (the default) then `uuid.getnode()` is used instead.\nThe `getnode()` function will generate the hardware address as a 48-bit\npositive integer or failing that generate a random 48-bit number.\nThis should be unique enough to generate a different proxy_number for\nevery proxy.\n\nTo keep the proxy number unique amongst workers, we then add the worker\npid. This will be logged at the info level:\n\n   Unique proxy number (proxy_number): 116779\n\nBecause we use eventlet within each worker, there is a slight chance\nthat greenthread could collide. So in the conroller.base where we make\nsure x-timestamp is set, we also grab the current eventlet thread id and\ninclude that too:\n\n  if eventlet.getcurrent():\n      unique_offset +\u003d id(eventlet.getcurrent())\n\nWhen adding the final proxy_number to the offset, we bitshift it to the\nleft 4 bits to leave the last hex character untouched in the datafile\nfilename. This still makes it easy to see changes due to things that use\nthe offset like the reconciler, eg:\n\n  /srv/node2/sdb2/objects/972/dc8/f32d2481dd87c5bd3e6aca9d1725fdc8/1757048967.85051_0014efc4af5f5ff0.data\n  /srv/node3/sdb3/objects-1/960/889/f02df5ca8360360525554fbee37a1889/1757048929.53682_0007f58d4c7c7d10#5#d.data\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/dff861b7b7468559ef27658a9055105f3a6c0ddb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/dff861b7b7468559ef27658a9055105f3a6c0ddb"}]},"branch":"refs/heads/master"},"089ff0c6de2ac5d30a58c26b7d70bfa749241b51":{"kind":"REWORK","_number":10,"created":"2025-11-12 03:41:25.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/10","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/10","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/10 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/10 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/10 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/10"}}},"commit":{"parents":[{"commit":"c14a2e46b2a676529bf4fbd168831d8a66782b87","subject":"object-server: raise 500 on ec timestamp collision","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c14a2e46b2a676529bf4fbd168831d8a66782b87"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-11-12 03:28:48.000000000","tz":660},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lamport clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the ability to not just\nprovide a timestamp but also an offset/counter. We can easily\nintegrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request made by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIf you want to be explicit you can use:\n\n  proxy_number: \u003csome number\u003e\n\nA 0 will disable this feature and was mostly added to aid in tests.\nTo define a unique proxy number. But to make life easier if you use\n\u0027auto\u0027 (the default) then a 36-bit unique integer is generated using a\ncombination of `uuid.getnode()` and the green thread id and is used instead.\n\nWe decided to only allow 10 hex digits for the unique proxy offset, the\nfirst hex digit (or 4 bits) used as a version field, so we can make\nchanges or extentions later, future proofing ourselves.\n\nThis only gives us a max size of `16 ** 9 -1` for our unique number.\nBasically 36-bits.\n\nThe `getnode()` function will generate the hardware address as a 48-bit\npositive integer or failing that generate a random 48-bit number.\nThis should be unique enough to generate a different proxy_number for\nevery proxy. But not give us uniqueness amongst green threads and\nworkers. So we also add the greenthread id to this offset number:\n\n  unique_number \u003d uuid.getnode() + id(eventlet.getcurrent()\n\nThis then needs to be reduced to only 36-bits max, so is bit shifted to\nthe right so it fits into 36-bits.\n\nSo an offset should be in the form of:\n\n  [version (4 bits)][unique_number to 9 hex digits][offset space]\n\nThat is, 1 in the version field for this new version (0 is legecy). Then\n9 hex digits for the unique number and finally 6 hex digits for offset\nwork for the reconciler.\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/089ff0c6de2ac5d30a58c26b7d70bfa749241b51"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/089ff0c6de2ac5d30a58c26b7d70bfa749241b51"}]},"branch":"refs/heads/master"},"c1da6e65c1825304e3b1639fa5b2e6da0cff7e1d":{"kind":"REWORK","_number":11,"created":"2025-11-12 06:43:19.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/11","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/11","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/11 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/11 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/11 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/11"}}},"commit":{"parents":[{"commit":"c14a2e46b2a676529bf4fbd168831d8a66782b87","subject":"object-server: raise 500 on ec timestamp collision","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c14a2e46b2a676529bf4fbd168831d8a66782b87"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-11-12 06:14:17.000000000","tz":660},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lamport clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the ability to not just\nprovide a timestamp but also an offset/counter. We can easily\nintegrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request made by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIf you want to be explicit you can use:\n\n  proxy_number: \u003csome number\u003e\n\nA 0 will disable this feature and was mostly added to aid in tests.\nTo define a unique proxy number. But to make life easier if you use\n\u0027auto\u0027 (the default) then a 36-bit unique integer is generated using a\ncombination of `uuid.getnode()` and the green thread id and is used instead.\n\nWe decided to only allow 10 hex digits for the unique proxy offset, the\nfirst hex digit (or 4 bits) used as a version field, so we can make\nchanges or extentions later, future proofing ourselves.\n\nThis only gives us a max size of `16 ** 9 -1` for our unique number.\nBasically 36-bits.\n\nThe `getnode()` function will generate the hardware address as a 48-bit\npositive integer or failing that generate a random 48-bit number.\nThis should be unique enough to generate a different proxy_number for\nevery proxy. But not give us uniqueness amongst green threads and\nworkers. So we also add the greenthread id to this offset number:\n\n  unique_number \u003d uuid.getnode() + id(eventlet.getcurrent()\n\nThis then needs to be reduced to only 36-bits max, so is bit shifted to\nthe right so it fits into 36-bits.\n\nSo an offset should be in the form of:\n\n  [version (4 bits)][unique_number to 9 hex digits][offset space]\n\nThat is, 1 in the version field for this new version (0 is legecy). Then\n9 hex digits for the unique number and finally 6 hex digits for offset\nwork for the reconciler.\n\nAlso remove the max offset check for the Timestamp class, so we can\nexpand the offset size in the future if we ever need too.\n(this might be reverted, just playing for now).\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c1da6e65c1825304e3b1639fa5b2e6da0cff7e1d"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c1da6e65c1825304e3b1639fa5b2e6da0cff7e1d"}]},"branch":"refs/heads/master"},"97cf078f9febeb3fedcf3488b599dcf4c6e5efeb":{"kind":"REWORK","_number":12,"created":"2025-11-13 06:07:21.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/12","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/12","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/12 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/12 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/12 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/12"}}},"commit":{"parents":[{"commit":"c14a2e46b2a676529bf4fbd168831d8a66782b87","subject":"object-server: raise 500 on ec timestamp collision","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c14a2e46b2a676529bf4fbd168831d8a66782b87"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-11-13 06:07:05.000000000","tz":660},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lamport clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the ability to not just\nprovide a timestamp but also an offset/counter. We can easily\nintegrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request made by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIf you want to be explicit you can use:\n\n  proxy_number: \u003csome number\u003e\n\nA 0 will disable this feature and was mostly added to aid in tests.\nTo define a unique proxy number. But to make life easier if you use\n\u0027auto\u0027 (the default) then a 36-bit unique integer is generated using a\ncombination of `uuid.getnode()` and the green thread id and is used instead.\n\nWe decided to only allow 10 hex digits for the unique proxy offset, the\nfirst hex digit (or 4 bits) used as a version field, so we can make\nchanges or extentions later, future proofing ourselves.\n\nThis only gives us a max size of `16 ** 9 -1` for our unique number.\nBasically 36-bits.\n\nThe `getnode()` function will generate the hardware address as a 48-bit\npositive integer or failing that generate a random 48-bit number.\nThis should be unique enough to generate a different proxy_number for\nevery proxy. But not give us uniqueness amongst green threads and\nworkers. So we also add the greenthread id to this offset number:\n\n  unique_number \u003d uuid.getnode() + id(eventlet.getcurrent()\n\nThis then needs to be reduced to only 36-bits max, so is bit shifted to\nthe right so it fits into 36-bits.\n\nSo an offset should be in the form of:\n\n  [version (4 bits)][unique_number to 9 hex digits][offset space]\n\nThat is, 1 in the version field for this new version (0 is legecy). Then\n9 hex digits for the unique number and finally 6 hex digits for offset\nwork for the reconciler.\n\nAlso remove the max offset check for the Timestamp class, so we can\nexpand the offset size in the future if we ever need too.\n(this might be reverted, just playing for now).\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/97cf078f9febeb3fedcf3488b599dcf4c6e5efeb"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/97cf078f9febeb3fedcf3488b599dcf4c6e5efeb"}]},"branch":"refs/heads/master"},"410bb21f7299c5c811da3b9a34f18d7330909241":{"kind":"REWORK","_number":13,"created":"2025-11-17 06:37:08.000000000","uploader":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"ref":"refs/changes/09/959009/13","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/09/959009/13","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/13 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/13 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/09/959009/13 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/09/959009/13"}}},"commit":{"parents":[{"commit":"ea459c377f511c7cc23734e5fb37f94cdf6fc1a3","subject":"object-server: raise 500 on ec timestamp collision","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/ea459c377f511c7cc23734e5fb37f94cdf6fc1a3"}]}],"author":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-09-01 06:55:45.000000000","tz":600},"committer":{"name":"Matthew Oliver","email":"matt@oliver.net.au","date":"2025-11-17 06:35:59.000000000","tz":660},"subject":"Add a unique proxy number to each proxy","message":"Add a unique proxy number to each proxy\n\nThe timestamp class we use in swift gives us an offset, and this offset\nallows us to give a special extra \"count\" to the actual x-timestamp.\nFurther, although unlikely, it is possible for different objects to hit\nthe at the exact same time and in the case of EC this can get\ninteresting.\nThere is a solution to this datetime collision in distributed systems\nand its called a lamport clock. Basically keeping track of an extra\ncounter so we can deal with time collisions.\n\nBecause our Timestamp class already supports the ability to not just\nprovide a timestamp but also an offset/counter. We can easily\nintegrate a similar approach into swift proxies.\n\nIf every proxy had a unique number they could add as an offset to an\nx-timestamp in a request made by then, then a proxy with the biggest\noffset will always win in a collision. Because Swift proxies also fork\ninto workers, there is a slight chance that we can still get a time\ncollision. So every worker then adds their pid to the proxy number to\nmake it unique.\n\nIf you want to be explicit you can use:\n\n  proxy_number: \u003csome number\u003e\n\nA 0 will disable this feature and was mostly added to aid in tests.\nTo define a unique proxy number. But to make life easier if you use\n\u0027auto\u0027 (the default) then a 36-bit unique integer is generated using a\ncombination of `uuid.getnode()` and the green thread id and is used instead.\n\nWe decided to only allow 10 hex digits for the unique proxy offset, the\nfirst hex digit (or 4 bits) used as a version field, so we can make\nchanges or extentions later, future proofing ourselves.\n\nThis only gives us a max size of `16 ** 9 -1` for our unique number.\nBasically 36-bits.\n\nThe `getnode()` function will generate the hardware address as a 48-bit\npositive integer or failing that generate a random 48-bit number.\nThis should be unique enough to generate a different proxy_number for\nevery proxy. But not give us uniqueness amongst green threads and\nworkers. So we also add the greenthread id to this offset number:\n\n  unique_number \u003d uuid.getnode() + id(eventlet.getcurrent()\n\nThis then needs to be reduced to only 36-bits max, so is bit shifted to\nthe right so it fits into 36-bits.\n\nSo an offset should be in the form of:\n\n  [version (4 bits)][unique_number to 9 hex digits][offset space]\n\nThat is, 1 in the version field for this new version (0 is legecy). Then\n9 hex digits for the unique number and finally 6 hex digits for offset\nwork for the reconciler.\n\nAlso remove the max offset check for the Timestamp class, so we can\nexpand the offset size in the future if we ever need too.\n(this might be reverted, just playing for now).\n\nSigned-off-by: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nChange-Id: Ib81cd91ba06167eb36e6b53c73b67d98e89ebf8d\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/410bb21f7299c5c811da3b9a34f18d7330909241"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/410bb21f7299c5c811da3b9a34f18d7330909241"}]},"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":""}}}]}
