)]}'
{"id":"openstack%2Fdesignate~1004012","triplet_id":"openstack%2Fdesignate~master~I7987ed5a8bb7a163ee3152f0388226c227e5ac84","project":"openstack/designate","branch":"master","attention_set":{},"removed_from_attention_set":{"30176":{"account":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"last_update":"2026-09-05 13:08:08.000000000","reason":"removed on reply"}},"hashtags":[],"change_id":"I7987ed5a8bb7a163ee3152f0388226c227e5ac84","subject":"Keep increment_serial flag raised for newer pending records","status":"NEW","created":"2026-09-04 17:06:44.000000000","updated":"2026-09-05 14:25:06.000000000","submit_type":"MERGE_IF_NECESSARY","mergeable":true,"submittable":false,"total_comment_count":3,"unresolved_comment_count":0,"has_review_started":true,"meta_rev_id":"0dac429855f2bb9b8fde04e2ff93f7870b539da0","_number":1004012,"virtual_id_number":1004012,"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 14:25:06.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:05:40.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":"b8d6333cf331d7d5fc783b3ac4abab80569f82e8","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":"2c4d7184b10fc7dc88b9d9ccf784f67a055fbe72","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-04 18:06:05.000000000","message":"Uploaded patch set 2: Commit message was updated.","accounts_in_message":[],"_revision_number":2},{"id":"aac9f49e1be8d991f072504a2e3ab7d25e8d6580","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-04 18:18:35.000000000","message":"Patch Set 2: Workflow-1\n\nWIP: held for AIO validation of the increment_serial PENDING-race fixes.","accounts_in_message":[],"_revision_number":2},{"id":"d7f858d5f9e566a937db53230c44ddc51cd81f14","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-04 18:46:47.000000000","message":"Uploaded patch set 3: Commit message was updated.\n\nOutdated Votes:\n* Workflow-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":3},{"id":"14a9a00efd92a2ef8834bc53daa715689009ce3c","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-04 20:05:40.000000000","message":"Patch Set 3: Verified-1\n\n(3 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/5fac9cd1455145aa830e709077564ed4\n\n- designate-bind9-core https://zuul.opendev.org/t/openstack/build/f1bcd84525584d5399133d985bbea5e0 : SUCCESS in 38m 05s\n- designate-bind9-with-keystone-default-roles https://zuul.opendev.org/t/openstack/build/e00908f4232d4efba17c1d2eb0cf61b4 : SUCCESS in 41m 12s\n- designate-pdns4-core https://zuul.opendev.org/t/openstack/build/b506c0c741294c778aa6c868fc42fe6c : SUCCESS in 34m 23s\n- designate-bind9-multipool https://zuul.opendev.org/t/openstack/build/b5c9f052898546afb75dc7af6944ab3a : SUCCESS in 36m 13s\n- designate-grenade-bind9 https://zuul.opendev.org/t/openstack/build/780e031e29694068ac238efd59236471 : SUCCESS in 53m 36s\n- designate-grenade-pdns4 https://zuul.opendev.org/t/openstack/build/aebebb79268c473da1fcfb4f060e73c5 : SUCCESS in 1h 11m 51s\n- designate-grenade-bind9-skip-level https://zuul.opendev.org/t/openstack/build/4e351f6bd9e04086b7902884e8716db9 : SUCCESS in 1h 05m 09s\n- designate-grenade-pdns4-skip-level https://zuul.opendev.org/t/openstack/build/4fcc6ef9ea484921ac3b60f31c922462 : SUCCESS in 1h 03m 06s\n- designate-bind9-core-catalog-zones https://zuul.opendev.org/t/openstack/build/1437f15b27d64a6eaef6b77d48b047cc : FAILURE in 42m 10s (non-voting)\n- designate-only-ipv6-pdns4 https://zuul.opendev.org/t/openstack/build/5ccfb874cb63471998b303e0051e629d : SUCCESS in 45m 58s\n- designate-only-ipv6-bind9 https://zuul.opendev.org/t/openstack/build/676c29c8c8f44cd9b834f37f4ae3c83b : SUCCESS in 43m 53s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/9518938c0e134ed297e4b4da0caeba52 : FAILURE in 5m 44s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/d7585fb8dea14c95a52e5d301beacf0d : FAILURE in 3m 02s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/f3d1daf9787b4b4090469ad568755c01 : SUCCESS in 5m 15s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/1c233b02c4cf49c4a3220c48afb31454 : SUCCESS in 4m 39s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/2b65008814c6457cacf0e92685c81a16 : SUCCESS in 9m 16s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/055dd80510014f15b85255cbd51863f9 : SUCCESS in 8m 39s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/b67d2e0613e34a548eeba55e22803e97 : SUCCESS in 6m 24s\n- neutron-tempest-plugin-designate-scenario https://zuul.opendev.org/t/openstack/build/1000d7a328ba43cbba2580c72e4952a0 : SUCCESS in 30m 17s\n- designate-tox-dnspython-latest https://zuul.opendev.org/t/openstack/build/66ece5fd20a94986a57dcf61a65d40e0 : SUCCESS in 4m 22s","accounts_in_message":[],"_revision_number":3},{"id":"e83514f909476d48e40f0df36b1211426196016c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-05 06:23:40.000000000","message":"Uploaded patch set 4.\n\nOutdated Votes:\n* Verified-1 (copy condition: \"NEVER\")\n","accounts_in_message":[],"_revision_number":4},{"id":"84b9264a570bd9a8aaffbd537015915984e9ca89","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-05 07:45:12.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/069ca17b25bc4146a2c441154e190c43\n\n- designate-bind9-core https://zuul.opendev.org/t/openstack/build/30af564fde20442e97a12df4d56fe07d : SUCCESS in 31m 41s\n- designate-bind9-with-keystone-default-roles https://zuul.opendev.org/t/openstack/build/c3d29527e8564b32b95ce0fb5a9dd7d6 : SUCCESS in 44m 03s\n- designate-pdns4-core https://zuul.opendev.org/t/openstack/build/53ce24f4421d4cd78714a8302228fd64 : SUCCESS in 47m 08s\n- designate-bind9-multipool https://zuul.opendev.org/t/openstack/build/a9986323e9d14b3580192f2d67077acf : SUCCESS in 20m 38s\n- designate-grenade-bind9 https://zuul.opendev.org/t/openstack/build/a3145f3fbea94977a89a1fa68e9bc446 : FAILURE in 1h 05m 15s\n- designate-grenade-pdns4 https://zuul.opendev.org/t/openstack/build/bd4b6d4afa1f46f98f2e825aeff0ccbc : SUCCESS in 1h 05m 22s\n- designate-grenade-bind9-skip-level https://zuul.opendev.org/t/openstack/build/4abf8b9f549741649ce432f7866d6f2d : SUCCESS in 1h 08m 18s\n- designate-grenade-pdns4-skip-level https://zuul.opendev.org/t/openstack/build/1a53a381218444d9b8dba6886a7d04b2 : SUCCESS in 1h 05m 35s\n- designate-bind9-core-catalog-zones https://zuul.opendev.org/t/openstack/build/43ed885361664332a16d9440797ea39a : SUCCESS in 31m 17s (non-voting)\n- designate-only-ipv6-pdns4 https://zuul.opendev.org/t/openstack/build/abc737c551364b7cb63c9ba33be82f62 : SUCCESS in 42m 28s\n- designate-only-ipv6-bind9 https://zuul.opendev.org/t/openstack/build/c19fd482b3074748993f5cfabc8252ea : SUCCESS in 39m 59s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/4483623d969e43599e47fca04bfbe913 : SUCCESS in 5m 47s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/1c83ef1346a240d08172e3df77793c2e : SUCCESS in 4m 15s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/0fbb981abb214a8aacefdb1d073bc57f : SUCCESS in 4m 44s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/9b5f0e559cd84e8f82e960cbb6e04413 : SUCCESS in 4m 41s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/1fd23939cb304ce690fac2a68a036e30 : SUCCESS in 6m 35s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/ca7091f9d3db41708198632ca8823cda : SUCCESS in 9m 33s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/6f79ba24f98c4b9889e942cef3fd403c : SUCCESS in 5m 34s\n- neutron-tempest-plugin-designate-scenario https://zuul.opendev.org/t/openstack/build/d69b42367053435eb07149a83ef577e7 : SUCCESS in 30m 58s\n- designate-tox-dnspython-latest https://zuul.opendev.org/t/openstack/build/2316f903fd994f898bb450ddbf861492 : SUCCESS in 4m 32s","accounts_in_message":[],"_revision_number":4},{"id":"6567e9c15f0e8b0e1eef1ebe5357b95d9013d89b","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-05 13:08:08.000000000","message":"Patch Set 4:\n\nrecheck - the only failure was a flaky tempest race in designate-grenade-bind9 (test_list_floatingip_ptr_records: expected PTR action CREATE, got UPDATE). Patchset 3 with identical runtime code passed this job; ps4 only rewrapped docstring/comment lines, so this is unrelated to the change.","accounts_in_message":[],"_revision_number":4},{"id":"98e1870463f860159b3097ffe9a985c7566e71bf","author":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"date":"2026-09-05 13:10:52.000000000","message":"Patch Set 4:\n\nrecheck - sole failure is the known-flaky designate-grenade-bind9 test test_list_floatingip_ptr_records (asserts PTR action\u003d\u003dCREATE but gets UPDATE): a concurrency race on floating-IP reuse + async PTR cleanup in the shared reverse zone, unrelated to this change (patchset 3 with identical runtime code passed this job; ps4 only rewrapped docstring/comment lines).","accounts_in_message":[],"_revision_number":4},{"id":"0dac429855f2bb9b8fde04e2ff93f7870b539da0","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-09-05 14:25:06.000000000","message":"Patch Set 4: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5e44d6118c124899a641d607016922fc\n\n- designate-bind9-core https://zuul.opendev.org/t/openstack/build/548dc05d1cb64ba1ab990e63e80c0ec6 : SUCCESS in 44m 46s\n- designate-bind9-with-keystone-default-roles https://zuul.opendev.org/t/openstack/build/dadf25cb413b43518a22fe93f1110f3b : SUCCESS in 37m 23s\n- designate-pdns4-core https://zuul.opendev.org/t/openstack/build/5968a6a1f0a94eb0953bf33c057707a0 : SUCCESS in 43m 29s\n- designate-bind9-multipool https://zuul.opendev.org/t/openstack/build/e4a2cd8df8f24a74af59d20e21324bac : SUCCESS in 33m 07s\n- designate-grenade-bind9 https://zuul.opendev.org/t/openstack/build/8412f6c9844e4443a55dd29fff3bcee2 : SUCCESS in 1h 05m 40s\n- designate-grenade-pdns4 https://zuul.opendev.org/t/openstack/build/17419939e28848009002b9a4ce02e09e : SUCCESS in 57m 19s\n- designate-grenade-bind9-skip-level https://zuul.opendev.org/t/openstack/build/6d1e48f18121410b83718047c34c7a9f : SUCCESS in 42m 18s\n- designate-grenade-pdns4-skip-level https://zuul.opendev.org/t/openstack/build/c3290a90c00642acba3cf0954592a349 : SUCCESS in 1h 11m 03s\n- designate-bind9-core-catalog-zones https://zuul.opendev.org/t/openstack/build/a1759f80836446059f9aa6ed519092d7 : SUCCESS in 29m 46s (non-voting)\n- designate-only-ipv6-pdns4 https://zuul.opendev.org/t/openstack/build/11c2f35f514f4edf96c92aa737211854 : SUCCESS in 36m 13s\n- designate-only-ipv6-bind9 https://zuul.opendev.org/t/openstack/build/e8951312e4784007829c2af4d7e49c9c : SUCCESS in 40m 30s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/e4bda1ce039b41dd879ece86ec0ee8fc : SUCCESS in 6m 26s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/b15212209a234784b016263ee2d3121d : SUCCESS in 2m 53s\n- openstack-tox-py311 https://zuul.opendev.org/t/openstack/build/97906bfb6f7c443581e94eb3e991cec4 : SUCCESS in 6m 46s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/c1e9b51d12d34a68b8cd8b2a7e5133a6 : SUCCESS in 6m 01s\n- openstack-tox-py314 https://zuul.opendev.org/t/openstack/build/f7e54a94c84b47daa43d80a4312976c4 : SUCCESS in 5m 26s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/4f66a0d265354c07aeb885bee3396545 : SUCCESS in 8m 30s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/d5db1a20888f49e3ad6a6f760ad3f11a : SUCCESS in 6m 05s\n- neutron-tempest-plugin-designate-scenario https://zuul.opendev.org/t/openstack/build/6acaae65a18e46e0b5d3eef8a4e47971 : SUCCESS in 30m 57s\n- designate-tox-dnspython-latest https://zuul.opendev.org/t/openstack/build/09cdf04fe4c3440eb25371309cd32d31 : SUCCESS in 5m 48s","accounts_in_message":[],"_revision_number":4}],"current_revision_number":4,"current_revision":"2f0bf1485aeee5c461967ec5eb0b62b3f23b171e","revisions":{"01af441c7d047a5965489f01042b2d8bcf89c707":{"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/12/1004012/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/12/1004012/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/12/1004012/1"}}},"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:17:55.000000000","tz":120},"committer":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 17:06:33.000000000","tz":120},"subject":"Keep increment_serial flag raised for newer pending records","message":"Keep increment_serial flag raised for newer pending records\n\nA recordset write takes no zone lock: it stamps each record with\nserial \u003d utcnow_ts() and then raises the zone\u0027s increment_serial flag.\nThe producer\u0027s PeriodicIncrementSerialTask publishes a serial and, until\nnow, cleared increment_serial unconditionally. If a recordset write\ncommitted a record in the window after the producer snapshotted the zone\nbut before its update landed, the freshly raised flag was clobbered (a\nlost update). That record -- whose serial exceeds the published one --\nwas then left PENDING (update_status only flips records with\nserial \u003c\u003d published), while the zone went ACTIVE with the flag cleared.\nNeither the producer (needs the flag set) nor RecoverShard (needs an\nERROR/stale-PENDING zone) ever revisited it, so the record stayed PENDING\nuntil the zone was manually poked.\n\nClear increment_serial only when no PENDING record still carries a serial\nnewer than the serial being published; otherwise keep it raised so the\nproducer revisits the zone on a later pass, once utcnow_ts has advanced\npast that record\u0027s serial, and the record recovers.\n\nThis race was introduced in Bobcat (17.0.0) by commit fb9c2da9 \"Move to a\nbatch model for incrementing serial\".\n\nCloses-Bug: #2166189\nChange-Id: I7987ed5a8bb7a163ee3152f0388226c227e5ac84\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/01af441c7d047a5965489f01042b2d8bcf89c707"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/01af441c7d047a5965489f01042b2d8bcf89c707"}]},"branch":"refs/heads/master"},"9f7e11237db96b74e609ce31b6dd68282882228f":{"kind":"NO_CODE_CHANGE","_number":2,"created":"2026-09-04 18:06:05.000000000","uploader":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"ref":"refs/changes/12/1004012/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/12/1004012/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/12/1004012/2"}}},"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:17:55.000000000","tz":120},"committer":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 18:06:00.000000000","tz":120},"subject":"WIP: Keep increment_serial flag raised for newer pending records","message":"WIP: Keep increment_serial flag raised for newer pending records\n\nA recordset write takes no zone lock: it stamps each record with\nserial \u003d utcnow_ts() and then raises the zone\u0027s increment_serial flag.\nThe producer\u0027s PeriodicIncrementSerialTask publishes a serial and, until\nnow, cleared increment_serial unconditionally. If a recordset write\ncommitted a record in the window after the producer snapshotted the zone\nbut before its update landed, the freshly raised flag was clobbered (a\nlost update). That record -- whose serial exceeds the published one --\nwas then left PENDING (update_status only flips records with\nserial \u003c\u003d published), while the zone went ACTIVE with the flag cleared.\nNeither the producer (needs the flag set) nor RecoverShard (needs an\nERROR/stale-PENDING zone) ever revisited it, so the record stayed PENDING\nuntil the zone was manually poked.\n\nClear increment_serial only when no PENDING record still carries a serial\nnewer than the serial being published; otherwise keep it raised so the\nproducer revisits the zone on a later pass, once utcnow_ts has advanced\npast that record\u0027s serial, and the record recovers.\n\nThis race was introduced in Bobcat (17.0.0) by commit fb9c2da9 \"Move to a\nbatch model for incrementing serial\".\n\nCloses-Bug: #2166189\nChange-Id: I7987ed5a8bb7a163ee3152f0388226c227e5ac84\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/9f7e11237db96b74e609ce31b6dd68282882228f"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/9f7e11237db96b74e609ce31b6dd68282882228f"}]},"branch":"refs/heads/master"},"44f720c00bf36f1e3af1ed8a2d284ba80d4b2af1":{"kind":"NO_CODE_CHANGE","_number":3,"created":"2026-09-04 18:46:47.000000000","uploader":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"ref":"refs/changes/12/1004012/3","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/12/1004012/3","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/3 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/3 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/3 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/12/1004012/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:17:55.000000000","tz":120},"committer":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-04 18:46:43.000000000","tz":120},"subject":"Keep increment_serial flag raised for newer pending records","message":"Keep increment_serial flag raised for newer pending records\n\nA recordset write takes no zone lock: it stamps each record with\nserial \u003d utcnow_ts() and then raises the zone\u0027s increment_serial flag.\nThe producer\u0027s PeriodicIncrementSerialTask publishes a serial and, until\nnow, cleared increment_serial unconditionally. If a recordset write\ncommitted a record in the window after the producer snapshotted the zone\nbut before its update landed, the freshly raised flag was clobbered (a\nlost update). That record -- whose serial exceeds the published one --\nwas then left PENDING (update_status only flips records with\nserial \u003c\u003d published), while the zone went ACTIVE with the flag cleared.\nNeither the producer (needs the flag set) nor RecoverShard (needs an\nERROR/stale-PENDING zone) ever revisited it, so the record stayed PENDING\nuntil the zone was manually poked.\n\nClear increment_serial only when no PENDING record still carries a serial\nnewer than the serial being published; otherwise keep it raised so the\nproducer revisits the zone on a later pass, once utcnow_ts has advanced\npast that record\u0027s serial, and the record recovers.\n\nThis race was introduced in Bobcat (17.0.0) by commit fb9c2da9 \"Move to a\nbatch model for incrementing serial\".\n\nCloses-Bug: #2166189\nChange-Id: I7987ed5a8bb7a163ee3152f0388226c227e5ac84\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/44f720c00bf36f1e3af1ed8a2d284ba80d4b2af1"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/44f720c00bf36f1e3af1ed8a2d284ba80d4b2af1"}]},"branch":"refs/heads/master"},"2f0bf1485aeee5c461967ec5eb0b62b3f23b171e":{"kind":"REWORK","_number":4,"created":"2026-09-05 06:23:40.000000000","uploader":{"_account_id":30176,"name":"masterpe","email":"michiel@piscaer.com","username":"masterpe"},"ref":"refs/changes/12/1004012/4","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/designate","ref":"refs/changes/12/1004012/4","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/4 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/4 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/designate refs/changes/12/1004012/4 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/designate refs/changes/12/1004012/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:17:55.000000000","tz":120},"committer":{"name":"Michiel Piscaer","email":"michiel@piscaer.com","date":"2026-09-05 06:23:36.000000000","tz":120},"subject":"Keep increment_serial flag raised for newer pending records","message":"Keep increment_serial flag raised for newer pending records\n\nA recordset write takes no zone lock: it stamps each record with\nserial \u003d utcnow_ts() and then raises the zone\u0027s increment_serial flag.\nThe producer\u0027s PeriodicIncrementSerialTask publishes a serial and, until\nnow, cleared increment_serial unconditionally. If a recordset write\ncommitted a record in the window after the producer snapshotted the zone\nbut before its update landed, the freshly raised flag was clobbered (a\nlost update). That record -- whose serial exceeds the published one --\nwas then left PENDING (update_status only flips records with\nserial \u003c\u003d published), while the zone went ACTIVE with the flag cleared.\nNeither the producer (needs the flag set) nor RecoverShard (needs an\nERROR/stale-PENDING zone) ever revisited it, so the record stayed PENDING\nuntil the zone was manually poked.\n\nClear increment_serial only when no PENDING record still carries a serial\nnewer than the serial being published; otherwise keep it raised so the\nproducer revisits the zone on a later pass, once utcnow_ts has advanced\npast that record\u0027s serial, and the record recovers.\n\nThis race was introduced in Bobcat (17.0.0) by commit fb9c2da9 \"Move to a\nbatch model for incrementing serial\".\n\nCloses-Bug: #2166189\nChange-Id: I7987ed5a8bb7a163ee3152f0388226c227e5ac84\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/2f0bf1485aeee5c461967ec5eb0b62b3f23b171e"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/designate/commit/2f0bf1485aeee5c461967ec5eb0b62b3f23b171e"}]},"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":""}}}]}
