DBAtlas · Atlas d'exploitation des bases de données

225 TransactionTooOld: TransactionTooOld

MongoDB

Que signifie cette erreur ?

Une commande a été exécutée dans une transaction multi-documents, mais son numéro de transaction est plus ancien que le dernier numéro de transaction vu par le serveur pour cette session. Autrement dit, une transaction plus récente a été démarrée, donc cette ancienne transaction n'est plus valide.

Cause

Une nouvelle transaction a été démarrée dans la même session avant la fin de l'ancienne, ou les numéros de transaction ont avancé dans le désordre à cause de la concurrence. Cela arrive généralement lorsqu'un objet session est partagé de façon incorrecte ou que plusieurs threads utilisent la même session.

Comment la corriger

Gérez correctement le cycle de vie de la session pour chaque transaction logique ; ne partagez pas une session simultanément entre plusieurs threads. Exécutez les transactions avec l'API withTransaction/callback recommandée par le driver (elle gère les relances et la numérotation). Fermez la transaction précédente par commit/abort avant d'en démarrer une nouvelle.

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur