mansart-transactions fournit l’implémentation Jakarta Transactions 2.0 de l’écosystème : TransactionManager, UserTransaction, intercepteur @Transactional, scope @TransactionScoped, support multi-resource (XA), recovery log. Conçu pour single-resource JDBC d’abord, étendu au 2PC vrai en M4.
Mission
-
MansartTransactionManagerconforme Jakarta Transactions 2.0. -
Support virtual threads natif — propagation TX via
ScopedValue<TransactionContext>. -
Intercepteur CDI
@Transactional(six TxType) intégré à Vauban. -
Adaptateur
ConnectionXAResourcepour enlister une connexion JDBC comme ressource. -
TCK Jakarta Transactions 2.0 — smoke 5/5 livré, suite complète en cours.
Pourquoi un nouveau projet
Les TM open source disponibles (Atomikos, Narayana) sont conçus pour Java EE classique : pool de threads plateforme, configuration XML, dépendances lourdes. Mansart vise virtual threads + zéro-dep + JPMS strict — un fit qui n’existait pas.
Modules
| Sous-module | Rôle |
|---|---|
|
API publique : |
|
Implémentation : |
|
Intercepteur |
|
|
|
Runner TCK officiel (hors reactor, POM Model 4.0.0). |
Architecture rapide
-
Contexte transactionnel stocké dans
ScopedValue<TransactionContext>. -
begin/commit/rollbackmute le contexte courant ;suspendretourne le contexte et le retire ;resume(t)le réinstalle. -
enlistResource(XAResource)ajoute une ressource au contexte ; àcommit, le TM appellepreparepuiscommit(oucommit(onePhase=true)si single-resource). -
Recovery log — fichier append-only journalisant les TX en
PREPARED. Au reboot, recovery scanne les XAResources connus et termine les TX orphelines.
Roadmap
-
✅ M1 — Local single-thread (TM, UT, status).
-
✅ M2 —
Synchronization(beforeCompletion,afterCompletion). -
✅ M3 —
suspend/resume(TX inheritance via virtual threads). -
⏳ M4 — Multi-resource (2PC vrai).
-
⏳ M5 — Recovery log + tests de crash.
-
✅ M5b — Auto-recovery driver-side.
-
⚠️ M6 — TCK officiel Jakarta Transactions 2.0 — smoke 5/5 ✅, suite
full-tckbuild SUCCESSFUL ✅, parsing rapport en M6c. -
✅ M7 — CDI interceptor
@Transactional+@TransactionScoped+ BCE Vauban. -
✅ M8 — JDBC adapter
ConnectionXAResource.
Voir lien:https://codeberg.org/Vidocq/mansart/src/branch/main/mansart-transactions/PLAN.md[PLAN.md].
TCK
État détaillé : État TCK Mansart et lien:https://codeberg.org/Vidocq/mansart/src/branch/main/mansart-transactions/TCK.md[TCK.md].
Le TCK Jakarta Transactions 2.0 est un harness Sun tsharness historique (Apache Ant + ts.jte + ~80 propriétés). Pas de jar Surefire-scannable. Mansart livre MansartTckProvider + MansartUserTransaction qui s’intègrent dans le harness ; smoke wiring 5/5 validé en CI.