Bonjour,
J'ai un problème d'accès concurrents à ma base de données.
- Un traitement (java/hibernate) tourne en permanence pour synchroniser un schéma A avec celui d'un autre serveur : il effectue des SELECT sur ces données => verrou ACCESS SHARE.
- Ponctuellement, un autre traitement (java/jdbc) est lancé pour copier des données dans un schéma B de la même base. Cela nécessite de désactiver les contraintes du schéma A car certaines tables du schéma A référencent des tables du schéma B : il effectue un ALTER TABLE DROP CONSTRAINT => verrou ACCESS EXCLUSIVE.
Dans certains cas, il se produit donc des blocages.
D'après la doc, j'ai cru comprendre que Postgres doit essayer de s'en sortir tout seul en annulant une des transactions. Or je n'ai pas l'impression que cela soit ce qui se passe car mon application reste bloquée. Au niveau applicatif, je n'ai pas moyen de détecter cette situation pour annuler moi-même la transaction car aucune Exception n'est générée par JDBC.
Pour information, les 2 traitements sont lancés par une application tournant sur un serveur applicatif JBOSS.
Avez-vous des idées pour gérer cette situation ?
Cordialement
Partager