)]}'
{"id":"openstack%2Fswift~972032","triplet_id":"openstack%2Fswift~master~If01f3c486fdda719dfeb8031c9fe1f8b7aa29ef4","project":"openstack/swift","branch":"master","topic":"unique_time_middleware","attention_set":{},"removed_from_attention_set":{"34930":{"account":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"last_update":"2026-01-07 00:17:25.000000000","reason":"Change was abandoned"},"7847":{"account":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"last_update":"2026-01-07 00:17:25.000000000","reason":"Change was abandoned"}},"hashtags":[],"change_id":"If01f3c486fdda719dfeb8031c9fe1f8b7aa29ef4","subject":"Common: add a middleware to prevent object corruption from concurrent PUTs","status":"ABANDONED","created":"2025-12-31 23:45:54.000000000","updated":"2026-01-07 00:17:25.000000000","total_comment_count":3,"unresolved_comment_count":2,"has_review_started":true,"meta_rev_id":"c3acaf4e6162349c19c2fc78052990f8e87761af","_number":972032,"virtual_id_number":972032,"owner":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"actions":{},"labels":{"Verified":{"disliked":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:check","value":-1,"date":"2026-01-03 23:02:25.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":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"CC":[{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-01-01 00:46:42.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-01-01 01:00:06.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":"2026-01-02 10:49:05.000000000","updated_by":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"reviewer":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"state":"CC"}],"messages":[{"id":"33f748154d39911c7ccd01d76551a2604396f91e","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"date":"2025-12-31 23:45:54.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"9ead2e0ef35348e3b51bbc189d686b12c726df9b","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-01-01 00:46:42.000000000","message":"Patch Set 1:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/e1b3dd75ca7a4827b28a9fcb2c76e8a4\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/705e95a9592b4622a5fe026418b0dbc6 : SUCCESS in 53m 45s","accounts_in_message":[],"_revision_number":1},{"id":"dc8237251cb9ae889cad99ad72528ec3b3252d93","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-01-01 01:00:06.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/cbeb6aaf5329470693fda2f40850e5e0\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/d70e2b58314b498c83fccc444d37c7ce : SUCCESS in 9m 42s\n- grenade https://zuul.opendev.org/t/openstack/build/eac157066c50463d809b75ceb3514069 : SUCCESS in 45m 07s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/11644bd786f54e06b98da6e8eccc9e87 : SUCCESS in 58m 19s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/ca5ff1ab8346436e96fc4cc9b23ad43e : SUCCESS in 50m 06s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/f642f36aaf4a4b1e971449b4e03e5344 : SUCCESS in 1h 06m 38s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/c53779d5fd4d4b49b6a0ee0116c424b7 : SUCCESS in 19m 26s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/b06e07dac085423f96572c439ba5b841 : SUCCESS in 16m 16s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/b1609e51d6c74bfeb06be1bfa4a3faa0 : SUCCESS in 14m 32s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/3e049728268f49cb92cfef20ff599619 : SUCCESS in 5m 42s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/1040be244ec0454a86e9ea010aab3a14 : SUCCESS in 25m 14s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/d6a638e95178424db41a320bd2693ea2 : SUCCESS in 9m 46s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/38bef1e4787f493393a42ce34108764d : SUCCESS in 20m 26s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/8be7c28f90a04b698004f70809d954c8 : SUCCESS in 12m 51s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/460598f2c4b44039be983c5a7afac8bf : SUCCESS in 14m 28s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/b836db0bebb14e57ad3a43abbb9f936c : SUCCESS in 10m 58s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/b2ec38a4af554e829dc91b837421d39b : SUCCESS in 13m 07s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/29315265d42f4d169d0de10bbd7a6d10 : SUCCESS in 4m 18s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/70086d2398fa4277922d93250357a2ba : SUCCESS in 11m 49s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/2a23089264294435b8eeddef12dacd49 : SUCCESS in 4m 33s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/d63e8efb1f5f411e9870f104ccba1d7f : SUCCESS in 57m 56s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/da48748ea4594d458225ee927db54493 : SUCCESS in 20m 49s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/428a4d2f2bd24ed78dd85e00d2df721a : SUCCESS in 51m 28s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/54f99bf6938b4e578a3bf15533de16a4 : SUCCESS in 23m 14s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/4d8aa01b5c474d9391904f667db8a60d : SUCCESS in 3m 41s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/168d2593fd6849d2984ce6849910c427 : SUCCESS in 14m 45s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/910292ec037348ebba787e43e3bc0e11 : SUCCESS in 51m 18s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/8067d457681344a68711265e2e793d50 : SUCCESS in 1h 03m 15s","accounts_in_message":[],"_revision_number":1},{"id":"475b08a30611383f7b6bfcb4ad083e14e9ad2fe4","author":{"_account_id":7847,"name":"Alistair Coles","email":"alistairncoles@gmail.com","username":"acoles"},"date":"2026-01-02 10:49:05.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"09c485cdf94acdf9c47e0e0527cddb41275c6d5d","author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"date":"2026-01-03 19:54:14.000000000","message":"Patch Set 1:\n\n(1 comment)","accounts_in_message":[],"_revision_number":1},{"id":"dc4073f22b0027654f3a95720b3a9edfc4e77359","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"date":"2026-01-03 21:44:17.000000000","message":"Uploaded patch set 2: Commit message was updated.\n\nOutdated Votes:\n* Verified+1\n","accounts_in_message":[],"_revision_number":2},{"id":"216ea2382e0960eb830c408e2c4ca914bc80d7bd","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"date":"2026-01-03 21:47:15.000000000","message":"Uploaded patch set 3: Commit message was updated.","accounts_in_message":[],"_revision_number":3},{"id":"3d2a49a22f95f25b9c943aaacb07c96214ad0b8e","tag":"autogenerated:zuul:check-arm64","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-01-03 22:39:34.000000000","message":"Patch Set 3:\n\nBuild succeeded (ARM64 pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/0fd218dd158a4ae0a8355d8ec9b27f4d\n\n- swift-tox-py312-arm64 https://zuul.opendev.org/t/openstack/build/3b1315a2dc2f47afaf77587cdd6eb715 : SUCCESS in 49m 04s","accounts_in_message":[],"_revision_number":3},{"id":"78e71a80a7e485b85290cfeee9c70304ddedbf26","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-01-03 23:02:25.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/f3e6d33d39be4f928ac2190ee585831c\n\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4eaa234bc51b4d18aa6a2cb7ac4140dd : SUCCESS in 8m 51s\n- grenade https://zuul.opendev.org/t/openstack/build/f30a367d0d964c2b865a96afa84a7569 : SUCCESS in 1h 01m 26s\n- grenade-skip-level-always https://zuul.opendev.org/t/openstack/build/c2655d7a23874e3db1bc294a55c877dd : SUCCESS in 58m 51s\n- tempest-integrated-object-storage https://zuul.opendev.org/t/openstack/build/f89f8eb43a724dc7a797aacd24b0cce6 : SUCCESS in 59m 04s\n- openstacksdk-functional-devstack https://zuul.opendev.org/t/openstack/build/21f60dafb6a14ff0899fac3d9d65e74d : SUCCESS in 1h 06m 18s\n- swift-tox-func-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/cefcbe91b5464353aaf28ace68d037f9 : SUCCESS in 18m 05s (non-voting)\n- swift-tox-func-encryption-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/d962186c8f32418d95d6c25b5d66b4a2 : SUCCESS in 18m 48s (non-voting)\n- swift-tox-func-ec-py39-centos-9-stream-fips https://zuul.opendev.org/t/openstack/build/44047a37cc8245f4a65c150a5b12d98e : SUCCESS in 18m 38s (non-voting)\n- swift-build-image https://zuul.opendev.org/t/openstack/build/dfa473aa761747e0bdb2f10fd46700d2 : SUCCESS in 7m 09s (non-voting)\n- swift-tox-py37 https://zuul.opendev.org/t/openstack/build/0d75fad453e446bea31d85ff56c1371b : SUCCESS in 16m 19s\n- swift-tox-py39 https://zuul.opendev.org/t/openstack/build/5720a558803546a2bb349e0d47ec3ace : SUCCESS in 13m 58s\n- swift-tox-py312 https://zuul.opendev.org/t/openstack/build/ebaa5999dcd04692905c27ce1dcf0f9a : SUCCESS in 20m 20s\n- swift-tox-py313 https://zuul.opendev.org/t/openstack/build/288a8cc2f0794e8ea2fd6f20844ab421 : SUCCESS in 23m 45s\n- swift-tox-func-py312 https://zuul.opendev.org/t/openstack/build/ff761903d1bb4bd482dfbdde2cc0adb9 : SUCCESS in 13m 42s\n- swift-tox-func-encryption-py312 https://zuul.opendev.org/t/openstack/build/81e2a1fb058d45d2b4b1ad1653fcfa09 : SUCCESS in 15m 45s\n- swift-tox-func-ec-py312 https://zuul.opendev.org/t/openstack/build/d95be608962148a8872e91b48fb2fb3b : SUCCESS in 14m 48s\n- swift-func-cors https://zuul.opendev.org/t/openstack/build/e9fc2ab4034e4563a505e9780f35213e : SUCCESS in 6m 01s\n- swift-tox-func-ceph-s3tests-tempauth https://zuul.opendev.org/t/openstack/build/64be55e29d8445c4be852aa3448af2d0 : SUCCESS in 13m 54s (non-voting)\n- swift-tox-func-s3api-compat-tests-tempauth https://zuul.opendev.org/t/openstack/build/d245e60f1b054382b1e26fc03772433e : SUCCESS in 8m 08s\n- swift-probetests-centos-9-stream https://zuul.opendev.org/t/openstack/build/2b2624f892c0404fa9e434e56a4010b2 : SUCCESS in 55m 30s\n- swift-dsvm-functional https://zuul.opendev.org/t/openstack/build/10aae12f0f144fbbb87c7cdb76f1ef55 : SUCCESS in 51m 46s\n- swift-dsvm-functional-ipv6 https://zuul.opendev.org/t/openstack/build/ab365f43e74d4d4ba9016f0d2f46532d : SUCCESS in 51m 50s\n- swift-tox-lower-constraints https://zuul.opendev.org/t/openstack/build/6fb1e35718d2423eb2e8be99be447330 : SUCCESS in 26m 55s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/9c5e52ca269747d4aa988f3fc265b12d : SUCCESS in 6m 32s\n- swift-multinode-rolling-upgrade https://zuul.opendev.org/t/openstack/build/b78c17f205584f9ab0612231588218fa : FAILURE in 17m 25s\n- tempest-integrated-object-storage-ubuntu-jammy https://zuul.opendev.org/t/openstack/build/fb06209d83df46a3a765927fe18f7066 : SUCCESS in 49m 29s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/0fc347f59f9245bd8f9faf3ea139f92b : SUCCESS in 42m 27s","accounts_in_message":[],"_revision_number":3},{"id":"2dcadad314228d9e52ff864dec4bfba37f4f8509","author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"date":"2026-01-05 06:00:40.000000000","message":"Patch Set 3:\n\n(1 comment)","accounts_in_message":[],"_revision_number":3},{"id":"c3acaf4e6162349c19c2fc78052990f8e87761af","tag":"autogenerated:gerrit:abandon","author":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"date":"2026-01-07 00:17:25.000000000","message":"Abandoned","accounts_in_message":[],"_revision_number":3}],"current_revision_number":3,"current_revision":"8039590b137b5a0e4e8d6739bddecf1b36330a5f","revisions":{"71c592337c2678d00036cd31692cef646a15b9db":{"kind":"REWORK","_number":1,"created":"2025-12-31 23:45:54.000000000","uploader":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"ref":"refs/changes/32/972032/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/32/972032/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/32/972032/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/32/972032/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/32/972032/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/32/972032/1"}}},"commit":{"parents":[{"commit":"c36e789cdb8052f3b28c8367e803876a06cf9c06","subject":"proxy/test_server.py: test_policy_IO_override timestamp refactoring.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c36e789cdb8052f3b28c8367e803876a06cf9c06"}]}],"author":{"name":"Jianjian Huo","email":"jhuo@nvidia.com","date":"2025-12-31 23:05:41.000000000","tz":-480},"committer":{"name":"Jianjian Huo","email":"jhuo@nvidia.com","date":"2025-12-31 23:09:00.000000000","tz":-480},"subject":"Common: add a new unique_time middleware","message":"Common: add a new unique_time middleware\n\nChange-Id: If01f3c486fdda719dfeb8031c9fe1f8b7aa29ef4\nCo-Authored-By: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nCo-Authored-By: Alistair Coles \u003calistairncoles@gmail.com\u003e\nCo-Authored-By: Tim Burke \u003ctim.burke@gmail.com\u003e\nSigned-off-by: Jianjian Huo \u003cjhuo@nvidia.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/71c592337c2678d00036cd31692cef646a15b9db"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/71c592337c2678d00036cd31692cef646a15b9db"}]},"branch":"refs/heads/master"},"e826bb508be0776e5fcdf8a6d089265894714a9a":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2026-01-03 21:44:17.000000000","uploader":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"ref":"refs/changes/32/972032/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/32/972032/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/32/972032/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/32/972032/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/32/972032/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/32/972032/2"}}},"commit":{"parents":[{"commit":"c36e789cdb8052f3b28c8367e803876a06cf9c06","subject":"proxy/test_server.py: test_policy_IO_override timestamp refactoring.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c36e789cdb8052f3b28c8367e803876a06cf9c06"}]}],"author":{"name":"Jianjian Huo","email":"jhuo@nvidia.com","date":"2025-12-31 23:05:41.000000000","tz":-480},"committer":{"name":"Jianjian Huo","email":"jhuo@nvidia.com","date":"2026-01-03 21:20:44.000000000","tz":-480},"subject":"Common: add a middleware to prevent object corruption from concurrent PUTs","message":"Common: add a middleware to prevent object corruption from concurrent PUTs\n\nIn production clusters, we observed that when two concurrent requests with\nthe same proxy timestamp attempt to create the same object with identical\ndata, the resulting object can become corrupted. This occurs because each\nrequest uses a different encryption IV, producing different encrypted data.\nWhen these requests race to write EC fragments to different nodes, the\nmixed fragments from both requests cannot be reconstructed into the\noriginal object data. This middleware addresses the issue by adding a\nrandom jitter offset (1 to 0xffffffffff) to the X-Timestamp header for\nobject PUT requests, ensuring timestamp uniqueness across concurrent\noperations.\n\nThe random jitter offset does not conflict with existing timestamp offset\nuse cases. For versioned_writes: as long as unique_time middleware is\nplaced after auth and before versioned_writes in the pipeline, the\nversioned_writes middleware will correctly apply its offset+\u003d1 for symlink\nobjects on top of the jittered timestamp. For the reconciler: since a new\nmisplaced object must be added to the misplaced container before the\nreconciler daemon processes it (a delay of many seconds), a new object PUT\nwith a jittered offset will not conflict with existing misplaced objects\nthat have larger timestamp values. Furthermore, when the reconciler\nprocesses an object with a random offset, the +3/+2/+1 offset increments\nare applied relative to the existing offset value, and the reconciler only\nrelies on relative comparisons between these offsets rather than checking\nabsolute values.\n\nChange-Id: If01f3c486fdda719dfeb8031c9fe1f8b7aa29ef4\nCo-Authored-By: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nCo-Authored-By: Alistair Coles \u003calistairncoles@gmail.com\u003e\nCo-Authored-By: Tim Burke \u003ctim.burke@gmail.com\u003e\nSigned-off-by: Jianjian Huo \u003cjhuo@nvidia.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e826bb508be0776e5fcdf8a6d089265894714a9a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/e826bb508be0776e5fcdf8a6d089265894714a9a"}]},"branch":"refs/heads/master"},"8039590b137b5a0e4e8d6739bddecf1b36330a5f":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2026-01-03 21:47:15.000000000","uploader":{"_account_id":34930,"name":"Jianjian Huo","email":"jhuo@nvidia.com","username":"jhuo"},"ref":"refs/changes/32/972032/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/swift","ref":"refs/changes/32/972032/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/swift refs/changes/32/972032/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/swift refs/changes/32/972032/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/swift refs/changes/32/972032/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/swift refs/changes/32/972032/3"}}},"commit":{"parents":[{"commit":"c36e789cdb8052f3b28c8367e803876a06cf9c06","subject":"proxy/test_server.py: test_policy_IO_override timestamp refactoring.","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/c36e789cdb8052f3b28c8367e803876a06cf9c06"}]}],"author":{"name":"Jianjian Huo","email":"jhuo@nvidia.com","date":"2025-12-31 23:05:41.000000000","tz":-480},"committer":{"name":"Jianjian Huo","email":"jhuo@nvidia.com","date":"2026-01-03 21:44:38.000000000","tz":-480},"subject":"Common: add a middleware to prevent object corruption from concurrent PUTs","message":"Common: add a middleware to prevent object corruption from concurrent PUTs\n\nIn production clusters, we observed that when two concurrent requests\nwith the same proxy timestamp attempt to create the same object with\nidentical data, the resulting object can become corrupted. This occurs\nbecause each request uses a different encryption IV, producing\ndifferent encrypted data. When these requests race to write EC\nfragments to different nodes, the mixed fragments from both requests\ncannot be reconstructed into the original object data. This middleware\naddresses the issue by adding a random jitter offset (1 to\n0xffffffffff) to the X-Timestamp header for object PUT requests,\nensuring timestamp uniqueness across concurrent operations.\n\nThe random jitter offset does not conflict with existing timestamp\noffset use cases. For versioned_writes: as long as unique_time\nmiddleware is placed after auth and before versioned_writes in the\npipeline, the versioned_writes middleware will correctly apply its\noffset+\u003d1 for symlink objects on top of the jittered timestamp. For the\nreconciler: since a new misplaced object must be added to the misplaced\ncontainer before the reconciler daemon processes it (a delay of many\nseconds), a new object PUT with a jittered offset will not conflict\nwith existing misplaced objects that have larger timestamp values.\nFurthermore, when the reconciler processes an object with a random\noffset, the +3/+2/+1 offset increments are applied relative to the\nexisting offset value, and the reconciler only relies on relative\ncomparisons between these offsets rather than checking absolute values.\n\nChange-Id: If01f3c486fdda719dfeb8031c9fe1f8b7aa29ef4\nCo-Authored-By: Matthew Oliver \u003cmatt@oliver.net.au\u003e\nCo-Authored-By: Alistair Coles \u003calistairncoles@gmail.com\u003e\nCo-Authored-By: Tim Burke \u003ctim.burke@gmail.com\u003e\nSigned-off-by: Jianjian Huo \u003cjhuo@nvidia.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/8039590b137b5a0e4e8d6739bddecf1b36330a5f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/swift/commit/8039590b137b5a0e4e8d6739bddecf1b36330a5f"}]},"branch":"refs/heads/master"}},"requirements":[],"submit_records":[],"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":{}}},{"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":{}}},{"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":{}}}]}
