[AAP-82221] Skip reverse sync during post-migrate role definition setup (#16561)

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.
This commit is contained in:
Rodrigo Toshiaki Horie
2026-07-27 15:25:03 -03:00
committed by GitHub
parent 54e5c948fe
commit 78a55b25ec

View File

@@ -79,10 +79,16 @@ class MainConfig(AppConfig):
def _sync_managed_role_definitions(sender, **kwargs): def _sync_managed_role_definitions(sender, **kwargs):
from django.apps import apps as global_apps 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 # 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 # 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 # shared non-migration module, but doing so requires updating the migration
# import, which is a broader refactor (see also models/rbac.py imports). # import, which is a broader refactor (see also models/rbac.py imports).
from awx.main.migrations._dab_rbac import setup_managed_role_definitions 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)