From bbda905e0069dde6abe625e005dd79a058a76fdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adri=C3=A0=20Sala?= <22398818+adrisala@users.noreply.github.com> Date: Fri, 18 Sep 2026 14:32:46 +0200 Subject: [PATCH] fix: eliminate race condition in awxkit gateway user sync (#16658) fix: eliminate race condition in gateway user sync poll_until confirms the user exists in controller after gateway creation, but a second GET call could return empty results under load. Return the user directly from poll_until instead. Co-authored-by: Claude Opus 4.6 (1M context) --- awxkit/awxkit/api/pages/users.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/awxkit/awxkit/api/pages/users.py b/awxkit/awxkit/api/pages/users.py index 1f31e274cf..00e301ff7a 100644 --- a/awxkit/awxkit/api/pages/users.py +++ b/awxkit/awxkit/api/pages/users.py @@ -42,12 +42,12 @@ class User(HasCreate, base.Base): payload.pop("is_system_auditor") # Create gw user, then wait for controller sync gw_user = gw_users_api.post(payload) - poll_until( - lambda: len(ctrl_users_api.get(username=gw_user.username).results) > 0, - interval=1, - timeout=30, - ) - user = ctrl_users_api.get(username=gw_user.username).results.pop() + + def _get_synced_user(): + results = ctrl_users_api.get(username=gw_user.username).results + return results[0] if results else None + + user = poll_until(_get_synced_user, interval=1, timeout=30) user.json["password"] = payload.password self.update_identity(user) else: