)]}'
{"id":"openstack%2Fkeystone~969071","triplet_id":"openstack%2Fkeystone~stable%2F2025.2~I89235b2721380544304221a2da67a30971c62bf9","project":"openstack/keystone","branch":"stable/2025.2","topic":"bytestring_mapping_fix-stable/2025.2","attention_set":{},"removed_from_attention_set":{"14250":{"account":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"last_update":"2025-12-05 18:11:08.000000000","reason":"Change was submitted"}},"hashtags":[],"change_id":"I89235b2721380544304221a2da67a30971c62bf9","subject":"Bytes-vs-str mismatch causes repeated ID mapping creates on list","status":"MERGED","created":"2025-12-01 13:59:26.000000000","updated":"2025-12-05 18:13:02.000000000","submitted":"2025-12-05 18:11:08.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":"969071-bytestring_mapping_fix-stable/2025.2","cherry_pick_of_change":963946,"cherry_pick_of_patch_set":3,"meta_rev_id":"e239cffc73804edbf6de11ae0b96737f142bb93f","_number":969071,"virtual_id_number":969071,"owner":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"actions":{},"labels":{"Verified":{"approved":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"all":[{"value":0,"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},{"value":0,"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"tag":"autogenerated:zuul:gate","value":2,"date":"2025-12-05 18:11:07.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":"","default_value":0,"optional":true},"Code-Review":{"approved":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"all":[{"value":2,"date":"2025-12-05 15:48:21.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},{"value":2,"date":"2025-12-05 15:38:04.000000000","permitted_voting_range":{"min":2,"max":2},"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"value":0,"_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":{"approved":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"all":[{"value":1,"date":"2025-12-05 15:48:21.000000000","permitted_voting_range":{"min":1,"max":1},"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},{"value":0,"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},{"value":0,"_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":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"}]},"pending_reviewers":{},"reviewer_updates":[{"updated":"2025-12-01 15:05:34.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":"2025-12-05 15:38:04.000000000","updated_by":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"reviewer":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"state":"REVIEWER"},{"updated":"2025-12-05 15:48:21.000000000","updated_by":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"reviewer":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"state":"REVIEWER"}],"messages":[{"id":"a28892a852fbfa98afac96b25f5d4cf381e8ed32","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2025-12-01 13:59:26.000000000","message":"Patch Set 1: Cherry Picked from branch master.","accounts_in_message":[],"_revision_number":1},{"id":"415995d84ac5fbb237078f4b55d9b32db70eed0c","tag":"autogenerated:gerrit:newPatchSet","author":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"date":"2025-12-01 14:00:01.000000000","message":"Patch Set 2: Cherry Picked from branch master.","accounts_in_message":[],"_revision_number":2},{"id":"001f063f4bbd3e2b98f80d4818b91674a990fa45","tag":"autogenerated:zuul:check","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-01 15:05:34.000000000","message":"Patch Set 2: Verified+1\n\nBuild succeeded (check pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/35b851f091a046dc82e3ebe430013ab8\n\n- openstack-tox-cover https://zuul.opendev.org/t/openstack/build/487d686962314f35b191473a4d06bf68 : SUCCESS in 21m 40s\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/bc357ad5b6c744c394748b3dc99e14d9 : SUCCESS in 7m 13s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/69bf7bf006764f548b462c84b8bc6089 : SUCCESS in 9m 11s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/7b4a8f459a1247cbb5dc53d9d6189caa : SUCCESS in 12m 16s\n- openstack-tox-py313 https://zuul.opendev.org/t/openstack/build/d1628dc57bd94d11976bcf45d9be180c : SUCCESS in 15m 53s (non-voting)\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/2e874cf693cd4a27a7243fb2c097751a : SUCCESS in 13m 55s\n- grenade https://zuul.opendev.org/t/openstack/build/22f0efb9834343829d93329fa9c2b60f : SUCCESS in 33m 52s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/01d481c0ca214bd182a33ac85b943b37 : SUCCESS in 1h 04m 35s\n- keystoneclient-devstack-functional https://zuul.opendev.org/t/openstack/build/44e58c6758c443ad97058c46e108bbe2 : SUCCESS in 7m 24s (non-voting)\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/0ab463e809ab49499b557fabaf444e0c : SUCCESS in 12m 08s\n- keystone-tempest-fips https://zuul.opendev.org/t/openstack/build/7ad17cf96f4e4ee48f990c944b139be3 : FAILURE in 7m 12s (non-voting)\n- keystone-tempest-federation https://zuul.opendev.org/t/openstack/build/712724b56007490ca7129417fbafa90e : FAILURE in 14m 05s (non-voting)\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/79811561d8f04be0a744f18cc066f431 : SUCCESS in 12m 28s\n- keystone-tempest-oidc-federation https://zuul.opendev.org/t/openstack/build/7bf59d623645430b912806242054e12d : SUCCESS in 36m 50s\n- keystone-tempest-ldap-domain-specific-driver https://zuul.opendev.org/t/openstack/build/c38f61f2900942f3912cce673ae2f685 : SUCCESS in 36m 59s (non-voting)\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/16584fb292cc4177a669b1e6da8291e3 : SUCCESS in 58m 49s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/190b20c5b04c46d9848fba219be242d3 : FAILURE in 41m 06s (non-voting)\n- codegenerator-openapi-identity-tips-with-api-ref https://zuul.opendev.org/t/openstack/build/a9f809be3ab545e991aaf8642ab64e58 : SUCCESS in 4m 56s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"4def4f102d83dfdf45f10b60f94dddcc74cf2b04","author":{"_account_id":27900,"name":"Artem Goncharov","email":"artem.goncharov@gmail.com","username":"gtema"},"date":"2025-12-05 15:38:04.000000000","message":"Patch Set 2: Code-Review+2","accounts_in_message":[],"_revision_number":2},{"id":"93f9eb3c5b3b1385384fbc793c1ba030a059b065","author":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"},"date":"2025-12-05 15:48:21.000000000","message":"Patch Set 2: Code-Review+2 Workflow+1","accounts_in_message":[],"_revision_number":2},{"id":"e6920f1a54b24ad5ed81b8a29abc9db675105a8b","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-05 15:49:01.000000000","message":"Patch Set 2: -Verified\n\nStarting gate jobs.","accounts_in_message":[],"_revision_number":2},{"id":"851965e81f49dd113b2feb0f1e0f0b64dbe28d74","tag":"autogenerated:zuul:gate","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-05 18:11:07.000000000","message":"Patch Set 2: Verified+2\n\nBuild succeeded (gate pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/5994448d923d494e886605c0a95e461d\n\n- openstack-tox-pep8 https://zuul.opendev.org/t/openstack/build/6c529515598749d187ebb0da0d9f5bfa : SUCCESS in 5m 35s\n- openstack-tox-py310 https://zuul.opendev.org/t/openstack/build/68cc49c8aad14ff2a8fa6d3f59b280cf : SUCCESS in 9m 08s\n- openstack-tox-py312 https://zuul.opendev.org/t/openstack/build/a67a97c8cda145b496e48ffa08b1cb3d : SUCCESS in 11m 25s\n- openstack-tox-docs https://zuul.opendev.org/t/openstack/build/549f3bcf0ad1457cab68259c0f023d89 : SUCCESS in 11m 49s\n- grenade https://zuul.opendev.org/t/openstack/build/d6e858fb83ae4920a0f674f7eb1a52aa : SUCCESS in 31m 37s\n- tempest-full-py3 https://zuul.opendev.org/t/openstack/build/d1652557f4844c9aa131d1343dabba22 : SUCCESS in 1h 39m 37s\n- keystone-tempest https://zuul.opendev.org/t/openstack/build/4952185812fc49e789a572a3d89b5833 : SUCCESS in 27m 27s\n- keystone-tempest-federation-k2k https://zuul.opendev.org/t/openstack/build/59a5df2c39494522972124c3e841f6be : SUCCESS in 28m 18s\n- tempest-ipv6-only https://zuul.opendev.org/t/openstack/build/765238e2c7dc46e49ec1e7e75fed838b : SUCCESS in 32m 55s\n- keystone-protection-functional https://zuul.opendev.org/t/openstack/build/b81f9d3445da4015b47dc17aeea4cf99 : FAILURE in 38m 20s (non-voting)","accounts_in_message":[],"_revision_number":2},{"id":"ca015acb468e8c56ee922aeebf46e81498bbeed9","tag":"autogenerated:gerrit:merged","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-05 18:11:08.000000000","message":"Change has been successfully merged","accounts_in_message":[],"_revision_number":2},{"id":"e239cffc73804edbf6de11ae0b96737f142bb93f","tag":"autogenerated:zuul:promote","author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"date":"2025-12-05 18:13:02.000000000","message":"Patch Set 2:\n\nBuild succeeded (promote pipeline).\nhttps://zuul.opendev.org/t/openstack/buildset/ecfca575f183465d962c423e26ae2b9c\n\n- promote-openstack-tox-docs https://zuul.opendev.org/t/openstack/build/f2f6eb3a23334dddb027981c2d4f2313 : SUCCESS in 53s","accounts_in_message":[],"_revision_number":2}],"current_revision_number":2,"current_revision":"47f155b242586a4ee479cb50b03aeecaa2d3b63a","revisions":{"ff16233e0cd53b3a6a466c7b40303596ab286a99":{"kind":"REWORK","_number":1,"created":"2025-12-01 13:59:26.000000000","uploader":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"ref":"refs/changes/71/969071/1","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/71/969071/1","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/71/969071/1 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/71/969071/1 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/71/969071/1 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/71/969071/1"}}},"commit":{"parents":[{"commit":"680ec90e47223dbe88865e76fe251c75997f6a7a","subject":"Add service user authentication to ec2 and s3 endpoints","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/680ec90e47223dbe88865e76fe251c75997f6a7a"}]}],"author":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2025-10-14 11:22:55.000000000","tz":120},"committer":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2025-12-01 13:59:26.000000000","tz":0},"subject":"Bytes-vs-str mismatch causes repeated ID mapping creates on list","message":"Bytes-vs-str mismatch causes repeated ID mapping creates on list\n\nLDAP drivers can yield refs with values encoded as bytestrings,\nwhich inclues bytes local IDs, while the ID mapping layer\nstores/returns strings.\n\nDuring list post-processing, this mismatch prevents lookups from hitting\nthe seeded mapping and triggers create_id_mapping again on each pass,\ncausing unnecessary churn and latency during token issuance.\n\nThis change adds unit test for both cases:\n - bytes IDs: the original behavior was that the cumulative\n   create_id_mapping count increased with each iteration.\n - string IDs: seeded mapping is reused; no creates across iterations.\nThe helper always seeds with a string local_id, normalizing the mapping\nlist local_id to string. After the fix, the results are the same for\nstring and bytestring.\n\nSigned-off-by: Grzegorz Grasza \u003cxek@redhat.com\u003e\nChange-Id: I89235b2721380544304221a2da67a30971c62bf9\n(cherry picked from commit bc3e790f582250555c89a973d7342c8d754c0109)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/ff16233e0cd53b3a6a466c7b40303596ab286a99"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/ff16233e0cd53b3a6a466c7b40303596ab286a99"}]},"branch":"refs/heads/stable/2025.2"},"47f155b242586a4ee479cb50b03aeecaa2d3b63a":{"kind":"NO_CHANGE","_number":2,"created":"2025-12-01 14:00:01.000000000","uploader":{"_account_id":14250,"name":"Grzegorz Grasza","email":"xek@redhat.com","username":"xek"},"ref":"refs/changes/71/969071/2","fetch":{"anonymous http":{"url":"https://review.opendev.org/openstack/keystone","ref":"refs/changes/71/969071/2","commands":{"Checkout":"git fetch https://review.opendev.org/openstack/keystone refs/changes/71/969071/2 \u0026\u0026 git checkout FETCH_HEAD","Cherry Pick":"git fetch https://review.opendev.org/openstack/keystone refs/changes/71/969071/2 \u0026\u0026 git cherry-pick FETCH_HEAD","Format Patch":"git fetch https://review.opendev.org/openstack/keystone refs/changes/71/969071/2 \u0026\u0026 git format-patch -1 --stdout FETCH_HEAD","Pull":"git pull https://review.opendev.org/openstack/keystone refs/changes/71/969071/2"}}},"commit":{"parents":[{"commit":"680ec90e47223dbe88865e76fe251c75997f6a7a","subject":"Add service user authentication to ec2 and s3 endpoints","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/680ec90e47223dbe88865e76fe251c75997f6a7a"}]}],"author":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2025-10-14 11:22:55.000000000","tz":120},"committer":{"name":"Grzegorz Grasza","email":"xek@redhat.com","date":"2025-12-01 14:00:01.000000000","tz":0},"subject":"Bytes-vs-str mismatch causes repeated ID mapping creates on list","message":"Bytes-vs-str mismatch causes repeated ID mapping creates on list\n\nLDAP drivers can yield refs with values encoded as bytestrings,\nwhich inclues bytes local IDs, while the ID mapping layer\nstores/returns strings.\n\nDuring list post-processing, this mismatch prevents lookups from hitting\nthe seeded mapping and triggers create_id_mapping again on each pass,\ncausing unnecessary churn and latency during token issuance.\n\nThis change adds unit test for both cases:\n - bytes IDs: the original behavior was that the cumulative\n   create_id_mapping count increased with each iteration.\n - string IDs: seeded mapping is reused; no creates across iterations.\nThe helper always seeds with a string local_id, normalizing the mapping\nlist local_id to string. After the fix, the results are the same for\nstring and bytestring.\n\nSigned-off-by: Grzegorz Grasza \u003cxek@redhat.com\u003e\nChange-Id: I89235b2721380544304221a2da67a30971c62bf9\n(cherry picked from commit bc3e790f582250555c89a973d7342c8d754c0109)\n","web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/47f155b242586a4ee479cb50b03aeecaa2d3b63a"}],"resolve_conflicts_web_links":[{"name":"gitea","tooltip":"Open in GitWeb","url":"https://opendev.org/openstack/keystone/commit/47f155b242586a4ee479cb50b03aeecaa2d3b63a"}]},"branch":"refs/heads/stable/2025.2"}},"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":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"}},{"label":"Workflow","status":"MAY","applied_by":{"_account_id":7414,"name":"David Wilde","email":"dwilde@redhat.com","username":"d34dh0r53"}}]}],"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":{}}},{"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":{}}},{"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":{}}}]}
