)]}'
{"id":"openstack%2Fdesignate~1004014","triplet_id":"openstack%2Fdesignate~master~I5e2a220fd2f7b4bc647bfc6d02909bd77a0f2432","project":"openstack/designate","branch":"master","attention_set":{"30176":{"account":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"last_update":"2026-09-04 20:01:03.000000000","reason":"A robot voted negatively on a label"}},"removed_from_attention_set":{},"hashtags":[],"change_id":"I5e2a220fd2f7b4bc647bfc6d02909bd77a0f2432","subject":"Make a no-op recordset update actually a no-op","status":"NEW","created":"2026-09-04 17:06:44.000000000","updated":"2026-09-05 07:41:31.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":2,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"fdc76c61813ea1d0fb9ac640417ea2fbcf920b48","_number":1004014,"virtual_id_number":1004014,"owner":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"actions":{},"labels":{"Verified":{"recommended":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},{"tag":"autogenerated:zuul:check","value":1,"date":"2026-09-05 07:41:31.000000000","permitted_voting_range":{"min":-2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-2":"Fails","-1":"Doesn\u0027t seem to work"," 0":"No score","+1":"Works for me","+2":"Verified"},"description":"","value":1,"default_value":0,"optional":true},"Code-Review":{"all":[{"value":0,"permitted_voting_range":{"min":-1,"max":1},"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},{"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":[{"value":0,"permitted_voting_range":{"min":-1,"max":0},"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},{"_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},"Review-Priority":{"all":[{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}],"values":{"-1":"Branch Freeze"," 0":"No Priority","+1":"Important Change","+2":"Gate Blocker Fix / Urgent Change"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-09-04 20:01:03.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":"dc75b25d237c59e6fdea07bb381f0662b4cdc5bb","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-04 17:06:44.000000000","message":"Uploaded patch set 1.","accounts_in_message":[],"_revision_number":1},{"id":"069a58263111c406a132c6e6bf920f6fb7da25b7","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-04 17:52:16.000000000","message":"Uploaded patch set 2: Patch Set 1 was rebased.","accounts_in_message":[],"_revision_number":2},{"id":"d0245a45b7f1ec30a4c3bcbb7994c8807b5cb626","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-04 18:02:07.000000000","message":"Uploaded patch set 3.","accounts_in_message":[],"_revision_number":3},{"id":"f35cc3dad1f3f2087041d8dd45c26811500013e2","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-04 18:06:22.000000000","message":"Uploaded patch set 4: Commit message was updated.","accounts_in_message":[],"_revision_number":4},{"id":"2a7e9a7d9ee8b02da4f11509310e1684a13c0a1b","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-04 18:18:40.000000000","message":"Patch Set 4: Workflow-1\n\nWIP: held for AIO validation of the increment_serial PENDING-race fixes.","accounts_in_message":[],"_revision_number":4},{"id":"ab7fa750e316867573c0e4cabe5d79e37971ce43","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-04 18:47:05.000000000","message":"Uploaded patch set 5: Commit message was updated.\n\nOutdated Votes:\n* Workflow-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":5},{"id":"28d47ea13dcdb9490e12c1edabb2885f932104d8","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-04 20:01:03.000000000","message":"Patch Set 5: 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/be2f56d4cad5449f8c659ae7255220d4\n\n- designate-bind9-core https://zuul.opendev.org/t/openstack/build/7f610ce041f745a291313a7947b8f5e8 : SUCCESS in 39m 20s\n- designate-bind9-with-keystone-default-roles https://zuul.opendev.org/t/openstack/build/78d53e6b4cd44ef8a199ae88e949ca70 : SUCCESS in 44m 40s\n- designate-pdns4-core https://zuul.opendev.org/t/openstack/build/7999c8f09b55497bb5a39a06b0e390a0 : SUCCESS in 38m 56s\n- designate-bind9-multipool https://zuul.opendev.org/t/openstack/build/05600eee301e435dab43075edcdda189 : SUCCESS in 33m 29s\n- designate-grenade-bind9 https://zuul.opendev.org/t/openstack/build/41bd459b1b3d4cba9cfec92bb0e42ebe : SUCCESS in 1h 09m 32s\n- designate-grenade-pdns4 https://zuul.opendev.org/t/openstack/build/015bcee5f34245328e0f881e3ca5a4f3 : SUCCESS in 1h 08m 18s\n- designate-grenade-bind9-skip-level https://zuul.opendev.org/t/openstack/build/ec75f0259b68463b8352b956603a3797 : SUCCESS in 49m 05s\n- designate-grenade-pdns4-skip-level https://zuul.opendev.org/t/openstack/build/c8edadbac2ce4f9891ac4941d830353f : SUCCESS in 1h 02m 55s\n- designate-bind9-core-catalog-zones https://zuul.opendev.org/t/openstack/build/586bb9ef3a5442598d739a67e1808a98 : SUCCESS in 30m 57s (non-voting)\n- designate-only-ipv6-pdns4 https://zuul.opendev.org/t/openstack/build/002e1be172c7420dbb0e8c02d7cd5ccb : SUCCESS in 40m 52s\n- designate-only-ipv6-bind9 https://zuul.opendev.org/t/openstack/build/507e2ecc9c1f41c6b983c686b0aecc8a : SUCCESS in 31m 40s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/08a7a6407aa8455dae250735a3174c66 : FAILURE in 5m 38s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/0fa57692b4184d57a82613389352c5f0 : FAILURE in 2m 57s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/a436b107ed494df08b4aa47343bb1490 : FAILURE in 5m 38s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/daa900c492b846e082dcd549ca76367a : FAILURE in 7m 28s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/f50bd63fe8dd41ff87c83d5f6a22308c : FAILURE in 8m 01s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/e34fc5baf93a4853b56ca6517261cd2c : SUCCESS in 10m 34s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/d5cc9fd1088140f4b2712e5ecfbc5957 : SUCCESS in 3m 30s\n- neutron-tempest-plugin-designate-scenario https://zuul.opendev.org/t/openstack/build/d3a9056bdd224e5aa08675c7b6582d85 : SUCCESS in 29m 59s\n- designate-tox-dnspython-latest https://zuul.opendev.org/t/openstack/build/cbfd85aeeef14becb38699438470835d : FAILURE in 4m 27s","accounts_in_message":[],"_revision_number":5},{"id":"3dd2b3ec2e112e2af8f6be93ac2f89bbe99d1aa3","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-05 06:21:57.000000000","message":"Uploaded patch set 6.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":6},{"id":"fdc76c61813ea1d0fb9ac640417ea2fbcf920b48","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-05 07:41:31.000000000","message":"Patch Set 6: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/46927502b4a84df599ea7982bc8504ca\n\n- designate-bind9-core https://zuul.opendev.org/t/openstack/build/cc8dbbc41b9a47b1a8a70e027c704c04 : SUCCESS in 46m 18s\n- designate-bind9-with-keystone-default-roles https://zuul.opendev.org/t/openstack/build/b640bbde0e3a4576b211f84e1612c6e9 : SUCCESS in 36m 23s\n- designate-pdns4-core https://zuul.opendev.org/t/openstack/build/2cb1aed55fc84a61b119897a9365b262 : SUCCESS in 44m 52s\n- designate-bind9-multipool https://zuul.opendev.org/t/openstack/build/085134ea6b7c460e89c78af27e35eb2f : SUCCESS in 31m 16s\n- designate-grenade-bind9 https://zuul.opendev.org/t/openstack/build/70b9946904f148efbf4cb57749d28ab4 : SUCCESS in 51m 27s\n- designate-grenade-pdns4 https://zuul.opendev.org/t/openstack/build/14761b990dbd4f229021ef4b3afd7660 : SUCCESS in 1h 08m 11s\n- designate-grenade-bind9-skip-level https://zuul.opendev.org/t/openstack/build/6f988f7980904f13b4da9a80b7d67528 : SUCCESS in 1h 05m 20s\n- designate-grenade-pdns4-skip-level https://zuul.opendev.org/t/openstack/build/dd0c346c60f14f8d8915619ad8e26d8c : SUCCESS in 1h 14m 02s\n- designate-bind9-core-catalog-zones https://zuul.opendev.org/t/openstack/build/97136e4bbe574a0f8f88df3a0ee2ea42 : SUCCESS in 37m 59s (non-voting)\n- designate-only-ipv6-pdns4 https://zuul.opendev.org/t/openstack/build/e7a338a3b2f44f3a80b0dffb1c383c33 : SUCCESS in 35m 08s\n- designate-only-ipv6-bind9 https://zuul.opendev.org/t/openstack/build/857219f2b6f3435dbbe588949955b5f6 : SUCCESS in 42m 45s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/c5dfdd45731e405f9a1f70a20a8b8f2f : SUCCESS in 5m 23s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/07d8cbf36f8241a1a8ec82eed42236d2 : SUCCESS in 3m 05s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/c4ba144f78e946fe9a4a4d00961ca301 : SUCCESS in 4m 37s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/d295c52d33a8442eafbfb5c6e5c859c8 : SUCCESS in 4m 23s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/9a3aa15b35314ae9b399f5f68f4cea22 : FAILURE in 8m 49s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/ef3fa8a9861043e29d2d9a00921e2132 : SUCCESS in 5m 08s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/f394931125fd480690d01f946a1ed0c0 : SUCCESS in 5m 50s\n- neutron-tempest-plugin-designate-scenario https://zuul.opendev.org/t/openstack/build/2cd01f438c9b453a8915b6934f86f024 : SUCCESS in 32m 07s\n- designate-tox-dnspython-latest https://zuul.opendev.org/t/openstack/build/94b6cb50febf4afe8a30647981246f00 : SUCCESS in 6m 10s","accounts_in_message":[],"_revision_number":6}],"current_revision_number":6,"current_revision":"38fa44ddf73a24021abd9a8d6d9a5df695c6cbf8","revisions":{"5c9d388d2784cf49518f5fde4e9f6249f0522df3":{"kind":"REWORK","_number":1,"created":"2026-09-04 17:06:44.000000000","uploader":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"ref":"refs/changes/14/1004014/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/14/1004014/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/14/1004014/1"}}},"commit":{"parents":[{"commit":"57ee3e4d784ee7cd113cc173f6f41e1eb385bb9b","subject":"Recover ACTIVE zones with records stranded in PENDING","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/57ee3e4d784ee7cd113cc173f6f41e1eb385bb9b"}]}],"author":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 15:51:03.000000000","tz":120},"committer":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 17:06:33.000000000","tz":120},"subject":"Make a no-op recordset update actually a no-op","message":"Make a no-op recordset update actually a no-op\n\nA recordset update through the v2 API that changes nothing -- same\nrecords, same TTL and description -- still ran the full write path:\n_update_recordset_in_storage re-stamped every already-ACTIVE record back\nto PENDING with a fresh utcnow_ts() serial and raised the zone\u0027s\nincrement_serial flag. Reconciler/health loops replay such idempotent\nPUTs constantly, and that content-free write is exactly what feeds the\nincrement_serial strand race.\n\nDetect the no-op in _update_recordset_in_storage -- no record added or\nremoved and no change to TTL or description, with every record already\nACTIVE/NONE -- and return early without re-stamping the records or\nraising increment_serial. A PUT that genuinely changes the recordset, or\nthat targets records which are not currently ACTIVE (so it can still be\nused to re-drive stuck records), takes the normal path unchanged.\n\nChange-Id: I5e2a220fd2f7b4bc647bfc6d02909bd77a0f2432\nSigned-off-by: Michiel Piscaer \u003cmichiel@piscaer.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/5c9d388d2784cf49518f5fde4e9f6249f0522df3"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/5c9d388d2784cf49518f5fde4e9f6249f0522df3"}]},"branch":"refs/heads/master"},"0eaed4d7ecce6599df03b66d60dc94cd5dcc8304":{"kind":"TRIVIAL_REBASE","_number":2,"created":"2026-09-04 17:52:16.000000000","uploader":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"ref":"refs/changes/14/1004014/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/14/1004014/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/14/1004014/2"}}},"commit":{"parents":[{"commit":"965f292c8ca6990f67e50511002ecb0e7d866bc6","subject":"Recover ACTIVE zones with records stranded in PENDING","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/965f292c8ca6990f67e50511002ecb0e7d866bc6"}]}],"author":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 15:51:03.000000000","tz":120},"committer":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 17:51:57.000000000","tz":120},"subject":"Make a no-op recordset update actually a no-op","message":"Make a no-op recordset update actually a no-op\n\nA recordset update through the v2 API that changes nothing -- same\nrecords, same TTL and description -- still ran the full write path:\n_update_recordset_in_storage re-stamped every already-ACTIVE record back\nto PENDING with a fresh utcnow_ts() serial and raised the zone\u0027s\nincrement_serial flag. Reconciler/health loops replay such idempotent\nPUTs constantly, and that content-free write is exactly what feeds the\nincrement_serial strand race.\n\nDetect the no-op in _update_recordset_in_storage -- no record added or\nremoved and no change to TTL or description, with every record already\nACTIVE/NONE -- and return early without re-stamping the records or\nraising increment_serial. A PUT that genuinely changes the recordset, or\nthat targets records which are not currently ACTIVE (so it can still be\nused to re-drive stuck records), takes the normal path unchanged.\n\nChange-Id: I5e2a220fd2f7b4bc647bfc6d02909bd77a0f2432\nSigned-off-by: Michiel Piscaer \u003cmichiel@piscaer.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/0eaed4d7ecce6599df03b66d60dc94cd5dcc8304"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/0eaed4d7ecce6599df03b66d60dc94cd5dcc8304"}]},"branch":"refs/heads/master"},"5693544c9d620b3af4b8ffbee0de8d701b97114b":{"kind":"REWORK","_number":3,"created":"2026-09-04 18:02:07.000000000","uploader":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"ref":"refs/changes/14/1004014/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/14/1004014/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/14/1004014/3"}}},"commit":{"parents":[{"commit":"057946092766379132b64bfb56dd5c0c3d07f3a0","subject":"Merge \"Document pool update merge behavior\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/057946092766379132b64bfb56dd5c0c3d07f3a0"}]}],"author":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 15:51:03.000000000","tz":120},"committer":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 18:02:06.000000000","tz":120},"subject":"Make a no-op recordset update actually a no-op","message":"Make a no-op recordset update actually a no-op\n\nA recordset update through the v2 API that changes nothing -- same\nrecords, same TTL and description -- still ran the full write path:\n_update_recordset_in_storage re-stamped every already-ACTIVE record back\nto PENDING with a fresh utcnow_ts() serial and raised the zone\u0027s\nincrement_serial flag. Reconciler/health loops replay such idempotent\nPUTs constantly, and that content-free write is exactly what feeds the\nincrement_serial strand race.\n\nDetect the no-op in _update_recordset_in_storage -- no record added or\nremoved and no change to TTL or description, with every record already\nACTIVE/NONE -- and return early without re-stamping the records or\nraising increment_serial. A PUT that genuinely changes the recordset, or\nthat targets records which are not currently ACTIVE (so it can still be\nused to re-drive stuck records), takes the normal path unchanged.\n\nChange-Id: I5e2a220fd2f7b4bc647bfc6d02909bd77a0f2432\nSigned-off-by: Michiel Piscaer \u003cmichiel@piscaer.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/5693544c9d620b3af4b8ffbee0de8d701b97114b"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/5693544c9d620b3af4b8ffbee0de8d701b97114b"}]},"branch":"refs/heads/master"},"cac811c0990212c0ba7825e908bcc961f23dae12":{"kind":"NO_CODE_CHANGE","_number":4,"created":"2026-09-04 18:06:22.000000000","uploader":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"ref":"refs/changes/14/1004014/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/14/1004014/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/14/1004014/4"}}},"commit":{"parents":[{"commit":"057946092766379132b64bfb56dd5c0c3d07f3a0","subject":"Merge \"Document pool update merge behavior\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/057946092766379132b64bfb56dd5c0c3d07f3a0"}]}],"author":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 15:51:03.000000000","tz":120},"committer":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 18:06:17.000000000","tz":120},"subject":"WIP: Make a no-op recordset update actually a no-op","message":"WIP: Make a no-op recordset update actually a no-op\n\nA recordset update through the v2 API that changes nothing -- same\nrecords, same TTL and description -- still ran the full write path:\n_update_recordset_in_storage re-stamped every already-ACTIVE record back\nto PENDING with a fresh utcnow_ts() serial and raised the zone\u0027s\nincrement_serial flag. Reconciler/health loops replay such idempotent\nPUTs constantly, and that content-free write is exactly what feeds the\nincrement_serial strand race.\n\nDetect the no-op in _update_recordset_in_storage -- no record added or\nremoved and no change to TTL or description, with every record already\nACTIVE/NONE -- and return early without re-stamping the records or\nraising increment_serial. A PUT that genuinely changes the recordset, or\nthat targets records which are not currently ACTIVE (so it can still be\nused to re-drive stuck records), takes the normal path unchanged.\n\nChange-Id: I5e2a220fd2f7b4bc647bfc6d02909bd77a0f2432\nSigned-off-by: Michiel Piscaer \u003cmichiel@piscaer.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/cac811c0990212c0ba7825e908bcc961f23dae12"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/cac811c0990212c0ba7825e908bcc961f23dae12"}]},"branch":"refs/heads/master"},"78ddb6405b71ce12c2cc4f9ef2f92930009243a2":{"kind":"NO_CODE_CHANGE","_number":5,"created":"2026-09-04 18:47:05.000000000","uploader":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"ref":"refs/changes/14/1004014/5","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/14/1004014/5","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/5 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/5 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/5 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/14/1004014/5"}}},"commit":{"parents":[{"commit":"057946092766379132b64bfb56dd5c0c3d07f3a0","subject":"Merge \"Document pool update merge behavior\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/057946092766379132b64bfb56dd5c0c3d07f3a0"}]}],"author":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 15:51:03.000000000","tz":120},"committer":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 18:47:00.000000000","tz":120},"subject":"Make a no-op recordset update actually a no-op","message":"Make a no-op recordset update actually a no-op\n\nA recordset update through the v2 API that changes nothing -- same\nrecords, same TTL and description -- still ran the full write path:\n_update_recordset_in_storage re-stamped every already-ACTIVE record back\nto PENDING with a fresh utcnow_ts() serial and raised the zone\u0027s\nincrement_serial flag. Reconciler/health loops replay such idempotent\nPUTs constantly, and that content-free write is exactly what feeds the\nincrement_serial strand race.\n\nDetect the no-op in _update_recordset_in_storage -- no record added or\nremoved and no change to TTL or description, with every record already\nACTIVE/NONE -- and return early without re-stamping the records or\nraising increment_serial. A PUT that genuinely changes the recordset, or\nthat targets records which are not currently ACTIVE (so it can still be\nused to re-drive stuck records), takes the normal path unchanged.\n\nChange-Id: I5e2a220fd2f7b4bc647bfc6d02909bd77a0f2432\nSigned-off-by: Michiel Piscaer \u003cmichiel@piscaer.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/78ddb6405b71ce12c2cc4f9ef2f92930009243a2"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/78ddb6405b71ce12c2cc4f9ef2f92930009243a2"}]},"branch":"refs/heads/master"},"38fa44ddf73a24021abd9a8d6d9a5df695c6cbf8":{"kind":"REWORK","_number":6,"created":"2026-09-05 06:21:57.000000000","uploader":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"ref":"refs/changes/14/1004014/6","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/14/1004014/6","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/6 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/6 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/14/1004014/6 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/14/1004014/6"}}},"commit":{"parents":[{"commit":"057946092766379132b64bfb56dd5c0c3d07f3a0","subject":"Merge \"Document pool update merge behavior\"","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/057946092766379132b64bfb56dd5c0c3d07f3a0"}]}],"author":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 15:51:03.000000000","tz":120},"committer":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-05 06:20:51.000000000","tz":120},"subject":"Make a no-op recordset update actually a no-op","message":"Make a no-op recordset update actually a no-op\n\nA recordset update through the v2 API that changes nothing -- same\nrecords, same TTL and description -- still ran the full write path:\n_update_recordset_in_storage re-stamped every already-ACTIVE record back\nto PENDING with a fresh utcnow_ts() serial and raised the zone\u0027s\nincrement_serial flag. Reconciler/health loops replay such idempotent\nPUTs constantly, and that content-free write is exactly what feeds the\nincrement_serial strand race.\n\nDetect the no-op in _update_recordset_in_storage -- no record added or\nremoved and no change to TTL or description, with every record already\nACTIVE/NONE -- and return early without re-stamping the records or\nraising increment_serial. A PUT that genuinely changes the recordset, or\nthat targets records which are not currently ACTIVE (so it can still be\nused to re-drive stuck records), takes the normal path unchanged.\n\nChange-Id: I5e2a220fd2f7b4bc647bfc6d02909bd77a0f2432\nSigned-off-by: Michiel Piscaer \u003cmichiel@piscaer.com\u003e\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/38fa44ddf73a24021abd9a8d6d9a5df695c6cbf8"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/38fa44ddf73a24021abd9a8d6d9a5df695c6cbf8"}]},"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"},{"label":"Review-Priority","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":"Review-Priority","description":"Review priority","status":"SATISFIED","is_legacy":false,"submittability_expression_result":{"expression":"-label:Review-Priority\u003dMIN","fulfilled":true,"status":"PASS","passing_atoms":[],"failing_atoms":["label:Review-Priority\u003dMIN"],"atom_explanations":{"label:Review-Priority\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":""}}}]}
