From 78a55b25ec6f964dc07e6a4b1591d4d7af5af613 Mon Sep 17 00:00:00 2001 From: Rodrigo Toshiaki Horie Date: Mon, 27 Jul 2026 15:25:03 -0300 Subject: [PATCH] [AAP-82221] Skip reverse sync during post-migrate role definition setup (#16561) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit AAP-82221 — Skip reverse sync during post-migrate role definition setup The dab_post_migrate signal handler added in 64dc097914 calls setup_managed_role_definitions on every awx-manage migrate run. During fresh installs this deletes stale managed role definitions and triggers a reverse sync to the gateway, which returns 423 Locked because migrate_service_data has not finished yet. The installer retries 5 times but each attempt fires the same signal and hits the same 423, failing the controller init. --- awx/main/apps.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/awx/main/apps.py b/awx/main/apps.py index 1ffcb28a5b..7a520a81ef 100644 --- a/awx/main/apps.py +++ b/awx/main/apps.py @@ -79,10 +79,16 @@ class MainConfig(AppConfig): def _sync_managed_role_definitions(sender, **kwargs): from django.apps import apps as global_apps + from ansible_base.resource_registry.signals.handlers import no_reverse_sync + # NOTE: setup_managed_role_definitions lives in the migrations module because # it is also called from migration 0192. Ideally this would be extracted to a # shared non-migration module, but doing so requires updating the migration # import, which is a broader refactor (see also models/rbac.py imports). from awx.main.migrations._dab_rbac import setup_managed_role_definitions - setup_managed_role_definitions(global_apps, None) + # During post-migrate the resource server (gateway) may not be ready + # (e.g. migrate_service_data still holds a 423 lock). Disable reverse + # sync for this call — gateway reconciles via migrate_service_data. + with no_reverse_sync(): + setup_managed_role_definitions(global_apps, None)