)]}'
{"id":"openstack%2Fswift~983928","triplet_id":"openstack%2Fswift~stable%2F2026.1~I26b753e9e57e96bd38474d1d00f3ec99214aa19b","project":"openstack/swift","branch":"stable/2026.1","topic":"offset-inversion","attention_set":{},"removed_from_attention_set":{"7847":{"account":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"last_update":"2026-04-13 10:02:42.000000000","reason":"\u003cGERRIT_ACCOUNT_7847\u003e replied on the change","reason_account":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"}},"15343":{"account":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"last_update":"2026-05-27 19:02:20.000000000","reason":"\u003cGERRIT_ACCOUNT_15343\u003e replied on the change","reason_account":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}}},"hashtags":[],"change_id":"I26b753e9e57e96bd38474d1d00f3ec99214aa19b","subject":"versioning: use x-backend-timestamp as source version","status":"MERGED","created":"2026-04-09 19:15:57.000000000","updated":"2026-05-27 20:43:50.000000000","submitted":"2026-05-27 20:41:20.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":1,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"983928-offset-inversion","meta_rev_id":"7ff882e1a03d256fec431dfcd6f901aaec4a25ab","_number":983928,"virtual_id_number":983928,"owner":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-05-27 20:41:20.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"recommended":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"all":[{"value":1,"date":"2026-04-13 10:02:42.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2026-05-27 19:02:20.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-2":"Do not merge","-1":"This patch needs further work before it can be merged"," 0":"No score","+1":"Looks good to me, but someone else must approve","+2":"Looks good to me (core reviewer)"},"description":"","value":1,"default_value":0,"optional":true},"Workflow":{"approved":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"all":[{"value":0,"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2026-05-27 19:02:20.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-04-09 19:15:57.000000000","updated_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"reviewer":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"state":"REVIEWER"},{"updated":"2026-04-09 20:13:09.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":"2026-04-09 20:32:15.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"}],"messages":[{"id":"057cdd6d2983e1e14b14c78e0294f2d03f51e180","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2026-04-09 19:15:57.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"65e0e5620655ce591c4ebc7e48e96a5d54136a4b","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-09 20:13:09.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/6031bf1374f347e6afccb5804eb58b97\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/975ed82cdb6042b79a09e9e65f4c2b56 : SUCCESS in 28m 41s","accounts_in_message":[],"_revision_number":1},{"id":"ec87e984794be31207b07cf80a600d3ad4742584","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-04-09 20:32:15.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/1de6dfeb435042f093dd7ea52bf3653e\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/bef6f888111e4f97a41014df927c2a40 : SUCCESS in 11m 27s\n- grenade https://zuul.opendev.org/t/openstack/build/2e2fb01a9cc54812bff5c902c3166661 : SUCCESS in 1h 10m 41s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/e95970f24cfe4835a13faf63f8bb14c9 : SUCCESS in 1h 01m 21s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/8850bedd74e1480bbe288fbeadb06920 : SUCCESS in 56m 15s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/4c65ecc2707d41609e3a43357d1631eb : SUCCESS in 1h 04m 37s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/bfebf0f4a56a49f8a3aef10d11deaf8f : SUCCESS in 18m 49s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/3b981f6c75f04cbaaa5315b1598d2f35 : SUCCESS in 18m 59s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/34b51b8628544b0a92147076acd0c841 : SUCCESS in 20m 26s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/4480946e040547f196894de5b9081742 : SUCCESS in 8m 03s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/5dff0ce0fb7240e687c5b894e2ea0036 : SUCCESS in 23m 55s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/8d0be2eee56c461ebe5f6bd51775972d : SUCCESS in 21m 10s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/412ae4d0cb1d4b9fbab846e01be471f9 : SUCCESS in 31m 37s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/448c517a084942c5b2003499c058a188 : SUCCESS in 24m 02s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/6752e9d2a3bc4d0683a1d757eaac3645 : SUCCESS in 17m 06s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/a6a47306b6224dd799d55dc183334763 : SUCCESS in 15m 47s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/97df361600934a529b22f3d466d2cb14 : SUCCESS in 15m 52s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/6c4c4fe60329411e94c409df5b7447f3 : SUCCESS in 6m 58s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/37688b4907b547a58e70ea44e1c3491b : SUCCESS in 11m 13s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/a3e78cf7a94645578adb8ba67d16347f : SUCCESS in 8m 13s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/34d7a6b4016c447fa0d17d19fdc0e43f : SUCCESS in 59m 21s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/4c8df2c224e640b2ab73efa20124e8b0 : SUCCESS in 21m 56s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/ca3ce91b4c434ad2a61c234bf6f08ae8 : SUCCESS in 48m 27s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/a617c6fb3c4143d987c84938605fc94c : SUCCESS in 20m 02s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/8810afb2a4834cb8a6e5c5b24af56890 : SUCCESS in 3m 31s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/b77c9c40509b49ada9a5c3a269a1df93 : SUCCESS in 16m 18s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/503e2b5afcb449ad91886488bf389ff6 : SUCCESS in 48m 16s","accounts_in_message":[],"_revision_number":1},{"id":"0bbd797c48c971d7c24558c7aa1f0558199dd4f1","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-04-13 10:02:42.000000000","message":"Patch Set 1: Code-Review+1","accounts_in_message":[],"_revision_number":1},{"id":"bf6a52d1cfa58d05784923d24155b44863fa492b","author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"date":"2026-05-27 19:02:20.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"73b8f32324df6b877d264c59779eec099ab4c5d0","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-27 19:03:24.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"c86282940eb4ddf03e40eced8542eb5f710b2843","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-27 20:41:20.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/be360510fc4c48efba369b41d0d32d6c\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4cc30650637748c8b6f2334cf5c85acd : SUCCESS in 10m 02s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/e4fced4dfeec4675a2bd494f2684a73a : SUCCESS in 8m 53s\n- grenade https://zuul.opendev.org/t/openstack/build/ec11fc1f2b864bc982ee3e5323c6e7fb : SUCCESS in 32m 30s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/edbb23b816f546c288971643467d8934 : SUCCESS in 1h 04m 32s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/9cf14ed236ad4a248dd6e12774f8b3f8 : SUCCESS in 56m 41s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/e6c00248c8064c618cafa47eb5d4bf83 : SUCCESS in 42m 31s\n- swift-upload-image https://zuul.opendev.org/t/openstack/build/86f9184008f54d218fc6f5ed384aeaf6 : SUCCESS in 8m 46s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/c2460b4d10ee40af9886cc02be1c5b51 : SUCCESS in 26m 14s\n- swift-tox-py310 https://zuul.opendev.org/t/openstack/build/0cfb7cee221047f29e55886a9a8f6b09 : SUCCESS in 19m 37s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/4affda5e1d6046f3bb1bf1a24a37b42b : SUCCESS in 28m 43s\n- swift-tox-py314 https://zuul.opendev.org/t/openstack/build/fd3a180e202b4448a0ab14f7692161be : SUCCESS in 9m 34s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/54b4f64e73d14f6dbf0c02b79450261f : SUCCESS in 11m 41s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/352441007d6f4a3494d09228fe4dab1f : SUCCESS in 10m 10s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/a214d3bf5e9246eebdaecc7f3bf2307b : SUCCESS in 12m 38s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/433afa1abf80496da102a3d5939ebe3b : SUCCESS in 8m 06s\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/6a0e42cd8aa24f40be8e01e3189f44fe : SUCCESS in 6m 47s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/5c6249bb7f704c2393508a3e492934da : SUCCESS in 57m 21s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/60baeac7e66646528480cd93e78b8cf3 : SUCCESS in 1h 00m 14s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/8e3931fc370f47b1acaeb35657c93fe9 : SUCCESS in 52m 48s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/dc22a6d34ea24e12ab3b9b37f059a423 : SUCCESS in 28m 01s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/75812c4b770b4d269054f3345f35e213 : SUCCESS in 3m 59s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/fa8c0e77af67473b9ba296057a647f98 : SUCCESS in 18m 24s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/99baab06ba974c5aba69e0da7fc08ab4 : SUCCESS in 1h 05m 07s","accounts_in_message":[],"_revision_number":1},{"id":"4afe52a54ae42c98c42fde3062c7e25f3eb56304","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-27 20:41:20.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"7ff882e1a03d256fec431dfcd6f901aaec4a25ab","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-05-27 20:43:50.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/0e392db7a4564ce4845e03cfa3d6b62b\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e9b36c33230e48c7b77c1131215abf4b : SUCCESS in 50s\n- swift-promote-image https://zuul.opendev.org/t/openstack/build/92adfae4828340d6a58830f549e9f270 : SUCCESS in 43s (non-voting)","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"8282dcb99dce33aa7864f38a9baaac9ca95ed32e","revisions":{"8282dcb99dce33aa7864f38a9baaac9ca95ed32e":{"kind":"REWORK","_number":1,"created":"2026-04-09 19:15:57.000000000","uploader":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"ref":"refs/changes/28/983928/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/28/983928/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/28/983928/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/28/983928/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/28/983928/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/28/983928/1"}}},"commit":{"parents":[{"commit":"8c41239fdbcd57164f92328356de07f9b0991c42","subject":"Improved offset support in Timestamp.__invert__","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/8c41239fdbcd57164f92328356de07f9b0991c42"}]}],"author":{"name":"Alistair Coles","email":"alistairncoles@gmail.com","date":"2026-04-07 13:06:21.000000000","tz":60},"committer":{"name":"Tim Burke","email":"tim.burke@gmail.com","date":"2026-04-09 19:15:25.000000000","tz":-420},"subject":"versioning: use x-backend-timestamp as source version","message":"versioning: use x-backend-timestamp as source version\n\nWhen an object PUT to a versioned container overwrites an existing,\nunversioned, object, the unversioned object is copied to the versions\ncontainer. The unversioned object is given a version based on its\ntimestamp. Previously the inverted form of the GET response\nx-timestamp header was used to construct this version. The response\nx-timestamp header is the normal form of the object\u0027s timestamp, which\nwas safe to invert but lacks any extended timestamp information such\nas an offset.\n\nSince the Related-Changes it is safe to invert a Timestamp with an\noffset/hex part. This patch therefore modifies the object versioning\nmiddleware to use the x-backend-timestamp header of the unversioned\nobject GET response to construct its version name. The\nx-backend-timestamp header has the internal format of the object\ntimestamp, so the copied version name now retains all information\nembedded in the source object\u0027s timestamp.\n\nAlso, fix unit tests where the normal format of a PUT request\nx-timestamp is used to generate version-ids for new versions, rather\nthan the internal format. The middleware uses the internal format.\n\nRelated-Change: I4898c8250fe85dbbf66d0ab3d24b0ae9802820f5\nRelated-Change: If0b5f11f38405e69ae1b54d73b667abf0abfb89b\nChange-Id: I26b753e9e57e96bd38474d1d00f3ec99214aa19b\nSigned-off-by: Alistair Coles \u003calistairncoles@gmail.com\u003e\n(cherry picked from commit 8cc481de13d9ac1046ca27c637c716d2e8d1711f)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/8282dcb99dce33aa7864f38a9baaac9ca95ed32e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/8282dcb99dce33aa7864f38a9baaac9ca95ed32e"}]},"branch":"refs/heads/stable/2026.1"}},"requirements":[],"submit_records":[{"rule_name":"gerrit~DefaultSubmitRule","status":"CLOSED","labels":[{"label":"Verified","status":"MAY","applied_by":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}},{"label":"Code-Review","status":"MAY","applied_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"}}]}],"submit_requirements":[{"name":"Verified","description":"Verified in gate by CI","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Verified\u003dMAX AND -label:Verified\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Verified\u003dMAX"],"failing_atoms":["label:Verified\u003dMIN"],"atom_explanations":{"label:Verified\u003dMAX":"","label:Verified\u003dMIN":""}}},{"name":"Code-Review","description":"Code reviewed by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Code-Review\u003dMAX AND -label:Code-Review\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Code-Review\u003dMAX"],"failing_atoms":["label:Code-Review\u003dMIN"],"atom_explanations":{"label:Code-Review\u003dMAX":"","label:Code-Review\u003dMIN":""}}},{"name":"Workflow","description":"Approved for gate by core reviewer","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"label:Workflow\u003dMAX AND -label:Workflow\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":["label:Workflow\u003dMAX"],"failing_atoms":["label:Workflow\u003dMIN"],"atom_explanations":{"label:Workflow\u003dMAX":"","label:Workflow\u003dMIN":""}}}]}
