From 059953e621171f7b6b1d9ff38a84c497972daf96 Mon Sep 17 00:00:00 2001 From: Daniel Allaire Date: Sat, 8 Aug 2026 22:17:26 -0400 Subject: [PATCH] keycloak : rendre patiente l'ecriture qui suit la synchronisation LDAP MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Quatrieme arret de la reconstruction from-zero, et le premier qui ne soit pas un defaut d'ordre mais une COURSE. ModelException: Database operation failed Caused by: PSQLException: This statement has been closed TransactionReaper::doCancellations ... ActionStatus.ABORTED L'ecriture des actions requises arrive juste apres la synchronisation complete de la federation ; sur un realm neuf, la synchro tient encore des transactions et le collecteur annule le PUT. Rejouee seule deux minutes plus tard, la meme ecriture passe en 76 ms — et le groupe entier repasse avec failed=0. retries/until plutot qu'un delai fixe : on attend une condition, pas une duree. Un echec transitoire n'a pas a faire tomber un deploiement d'une heure. Co-Authored-By: Claude Opus 5 --- roles/serveur_keycloak/tasks/groupes-ldap.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/roles/serveur_keycloak/tasks/groupes-ldap.yml b/roles/serveur_keycloak/tasks/groupes-ldap.yml index fe780ad..a2b1918 100644 --- a/roles/serveur_keycloak/tasks/groupes-ldap.yml +++ b/roles/serveur_keycloak/tasks/groupes-ldap.yml @@ -193,6 +193,18 @@ register: serveur_keycloak_req_action changed_when: "'SETOPS_CHANGED' in serveur_keycloak_req_action.stdout" no_log: true + # PATIENTE, parce que cette ecriture arrive JUSTE APRES la synchronisation complete de + # la federation LDAP. Sur un realm neuf, la synchro tient encore des transactions quand + # le PUT arrive, et le collecteur de transactions de Keycloak l'annule : + # ModelException: Database operation failed + # Caused by: PSQLException: This statement has been closed + # TransactionReaper::doCancellations ... status: ActionStatus.ABORTED + # Constate le 2026-08-08 pendant la premiere reconstruction from-zero. Rejoue seule + # deux minutes plus tard, la meme ecriture passe en 76 ms — c'est une COURSE, pas une + # panne. Un echec transitoire n'a pas a faire tomber un deploiement d'une heure. + retries: 4 + delay: 15 + until: serveur_keycloak_req_action is succeeded when: - serveur_keycloak_amorcage_uid | length > 0 - "'pwdReset: TRUE' in (serveur_keycloak_pwdreset.stdout | default(''))"