)]}'
{"id":"openstack%2Fmistral~1001528","triplet_id":"openstack%2Fmistral~stable%2F2025.1~I142dc7898fd89813147d4ca442c1363be267ffd7","project":"openstack/mistral","branch":"stable/2025.1","attention_set":{},"removed_from_attention_set":{"26693":{"account":{"_account_id":26693,"name":"do3meli","email":"info@dominicschlegel.ch","username":"do3meli"},"last_update":"2026-08-19 18:34:55.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I142dc7898fd89813147d4ca442c1363be267ffd7","subject":"Apply READ COMMITTED isolation level reliably","status":"MERGED","created":"2026-08-19 15:09:44.000000000","updated":"2026-08-19 18:35:51.000000000","submitted":"2026-08-19 18:34:55.000000000","submitter":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"total_comment_count":0,"unresolved_comment_count":0,"has_review_started":true,"submission_id":"1001528","cherry_pick_of_change":1001443,"cherry_pick_of_patch_set":2,"meta_rev_id":"315b1aef4daece0e627fe7e0f2b9289b59d1d968","_number":1001528,"virtual_id_number":1001528,"owner":{"_account_id":26693,"name":"do3meli","email":"info@dominicschlegel.ch","username":"do3meli"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"tag":"autogenerated:zuul:gate","value":2,"date":"2026-08-19 18:34:55.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":0,"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"}],"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":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":2,"date":"2026-08-19 17:16:03.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"}],"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":{"approved":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"all":[{"value":0,"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"value":1,"date":"2026-08-19 17:16:03.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"}],"values":{"-1":"Work in progress"," 0":"Ready for reviews","+1":"Approved"},"description":"","default_value":0,"optional":true}},"removable_reviewers":[],"reviewers":{"REVIEWER":[{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2026-08-19 15:09:44.000000000","updated_by":{"_account_id":26693,"name":"do3meli","email":"info@dominicschlegel.ch","username":"do3meli"},"reviewer":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"state":"CC"},{"updated":"2026-08-19 15:58:00.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-08-19 17:16:03.000000000","updated_by":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"reviewer":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"state":"REVIEWER"}],"messages":[{"id":"28947a7af6c73f601a24c4a740814c8a5093d19a","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":26693,"name":"do3meli","email":"info@dominicschlegel.ch","username":"do3meli"},"date":"2026-08-19 15:09:44.000000000","message":"Patch Set 1: Cherry Picked from branch master.","accounts_in_message":[],"_revision_number":1},{"id":"f0b8368cdea76ecd7677feaeb88dbf1915eef989","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-19 15:58:00.000000000","message":"Patch Set 1: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/27c56f51f2cc4e7696d17b4324d73311\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/f4b3920a87f4423897313bfa3b93c1f5 : SUCCESS in 2m 33s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/fecb982827fa4235978c8fe1b882b01d : SUCCESS in 9m 43s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/ee61e6b06acc4028a457ce9ec4ca9a8d : SUCCESS in 13m 57s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f0ad311c9a6a494b878830e5699ed34f : SUCCESS in 4m 48s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/fbcc5af6e1a0444fbf7b5e7b6939615f : SUCCESS in 4m 41s\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/fc9b1e4046cd457a984500cfb1f67a89 : SUCCESS in 16m 45s (non-voting)\n- mistral-devstack https://zuul.opendev.org/t/openstack/build/939633b246b149b48d770cd4605def82 : SUCCESS in 40m 05s\n- mistral-devstack-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/14eb7f509305481ab87a4fe3c10f7f2a : SUCCESS in 42m 22s\n- mistral-devstack-non-apache https://zuul.opendev.org/t/openstack/build/f1a0f86264214efb91f1a9d56ee8a35c : SUCCESS in 30m 33s\n- mistral-devstack-kombu https://zuul.opendev.org/t/openstack/build/0c9fadf100b34d1abca55c443f47e568 : SUCCESS in 24m 50s","accounts_in_message":[],"_revision_number":1},{"id":"330ba2d07e583f293e207d1d479f8a0ee4fb19cc","author":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"},"date":"2026-08-19 17:16:03.000000000","message":"Patch Set 1: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":1},{"id":"f04b986e36c74d83b506d3d71e314324563bf376","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-19 17:16:35.000000000","message":"Patch Set 1: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":1},{"id":"19afe9f7c9ce2ee0e0d020aa701ba1f70d34508a","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-19 18:34:55.000000000","message":"Patch Set 1: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/c02047668bb744c399d9669c511a57da\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/2212f8515827471f97f21a7f129776b6 : SUCCESS in 3m 51s\n- openstack-tox-py39 https://zuul.opendev.org/t/openstack/build/9e07c4e4004a4bfeade22f5bffb17ee5 : SUCCESS in 13m 01s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/2e68df826a944f4ba1b33ba77f3591c7 : SUCCESS in 9m 35s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/510aecd3519a440cbdaf62d57f530d94 : SUCCESS in 8m 29s\n- build-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/7db5fa1c17b3420a836b3db91852e7f9 : SUCCESS in 4m 33s\n- mistral-devstack https://zuul.opendev.org/t/openstack/build/38195a5282b84c9eb1f1ef4139c59aaa : SUCCESS in 45m 11s\n- mistral-devstack-tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/81c4eb2f07d34550a7feedf894e0481a : SUCCESS in 48m 41s\n- mistral-devstack-non-apache https://zuul.opendev.org/t/openstack/build/8c04a9aefa68498295f25dd08d29de70 : SUCCESS in 39m 06s\n- mistral-devstack-kombu https://zuul.opendev.org/t/openstack/build/c1c9fea0b8d44de294a437cd1075621f : SUCCESS in 42m 55s","accounts_in_message":[],"_revision_number":1},{"id":"f2978003bb95e66bfab042ab4d7c5d019e6f6d7d","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-19 18:34:55.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":1},{"id":"315b1aef4daece0e627fe7e0f2b9289b59d1d968","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2026-08-19 18:35:51.000000000","message":"Patch Set 1:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/78333e868b274d898a58107c5ffe48f6\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/ede1854e12774b229555cd0328921c2c : SUCCESS in 40s\n- promote-openstack-releasenotes https://zuul.opendev.org/t/openstack/build/02f11546ad4240ce971992df873bd60f : SUCCESS in 42s","accounts_in_message":[],"_revision_number":1}],"current_revision_number":1,"current_revision":"3b2eab29e9dc71a5ba250d989155eb69a9bd8e48","revisions":{"3b2eab29e9dc71a5ba250d989155eb69a9bd8e48":{"kind":"REWORK","_number":1,"created":"2026-08-19 15:09:44.000000000","uploader":{"_account_id":26693,"name":"do3meli","email":"info@dominicschlegel.ch","username":"do3meli"},"ref":"refs/changes/28/1001528/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/mistral","ref":"refs/changes/28/1001528/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/mistral refs/changes/28/1001528/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/mistral refs/changes/28/1001528/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/mistral refs/changes/28/1001528/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/mistral refs/changes/28/1001528/1"}}},"commit":{"parents":[{"commit":"848fac58fb31fead1a351f070ca6934813b48ea3","subject":"Add environments publicize policy and enforcement","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/mistral/commit/848fac58fb31fead1a351f070ca6934813b48ea3"}]}],"author":{"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","date":"2026-08-18 22:59:50.000000000","tz":120},"committer":{"name":"do3meli","email":"dominic.schlegel@hostpoint.ch","date":"2026-08-19 15:09:44.000000000","tz":0},"subject":"Apply READ COMMITTED isolation level reliably","message":"Apply READ COMMITTED isolation level reliably\n\nMistral requires the READ COMMITTED transaction isolation level: the\nnamed lock synchronization pattern (see named_lock() in\ndb/v2/sqlalchemy/api.py) relies on re-reading data committed by\nanother process right after acquiring the lock, which REPEATABLE READ\n(the MySQL/MariaDB default) does not allow within an already started\ntransaction.\n\nThe isolation level was applied by monkey-patching\nsqlalchemy.create_engine() from get_engine(), so it only worked if\nget_engine() was called before the engine facade created the engine.\nThe only runtime caller of get_engine() was setup_db(), so when\nI51f4128dd023846a4406cd1b414a56d741035483 removed the setup_db() calls\nfrom the engine and API startup, nothing installed the patch anymore\nand connections silently started using the database default isolation\nlevel.\n\nUnder REPEATABLE READ, with several engines running, concurrent\ncompletion of parallel branches breaks the \"join\" task deduplication\nin Task.defer(): after acquiring the named lock, the losing engine\nre-reads from its own transaction snapshot, cannot see the join task\ncommitted meanwhile by the winning engine, and tries to create it\nagain. This raises DBDuplicateEntry on task_executions_v2.unique_key,\nthe branch completion processing is lost and the workflow execution\nremains stuck in the RUNNING state.\n\nSet the isolation level directly on the engine right after the engine\nfacade creates it, so it applies no matter which code path triggers\nthe engine creation, and drop the create_engine monkey-patch.\n\nCloses-Bug: #2163749\nGenerated-By: Claude Fable 5 (Anthropic AI assistant)\nSigned-off-by: Arnaud Morin \u003carnaud.morin@gmail.com\u003e\nChange-Id: I142dc7898fd89813147d4ca442c1363be267ffd7\n(cherry picked from commit 58c9d2b130811ce620f24433fbf392d3b2ce5e8c)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/mistral/commit/3b2eab29e9dc71a5ba250d989155eb69a9bd8e48"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/mistral/commit/3b2eab29e9dc71a5ba250d989155eb69a9bd8e48"}]},"branch":"refs/heads/stable/2025.1","conflicts":{"base":"b4aeb55a8750e385e74ac0f2a3a20d0dd7c132d8","ours":"848fac58fb31fead1a351f070ca6934813b48ea3","theirs":"58c9d2b130811ce620f24433fbf392d3b2ce5e8c","merge_strategy":"recursive","contains_conflicts":false}}},"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":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":11583,"name":"Arnaud Morin","email":"arnaud.morin@gmail.com","username":"arnaudmorin"}}]}],"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":""}}}]}
