DBAtlas · データベース運用アトラス

225 TransactionTooOld: TransactionTooOld

MongoDB

意味

マルチドキュメントトランザクション内でコマンドが実行されたが、そのトランザクション番号が、サーバーがそのセッションで認識している最新のトランザクション番号より古い。つまり新しいトランザクションが開始されているため、この古いトランザクションはもはや有効ではない。

原因

古いトランザクションの完了前に同じセッションで新しいトランザクションが開始された、または同時実行によりトランザクション番号が順不同に進んだ。通常、セッションオブジェクトが誤って共有されている場合や、複数のスレッドが同じセッションを使用している場合に発生する。

対処方法

論理トランザクションごとにセッションのライフサイクルを正しく管理し、セッションを複数のスレッド間で同時に共有しない。ドライバが推奨する withTransaction/コールバック API でトランザクションを実行する (再試行と番号管理を処理する)。新しいトランザクションを開始する前に、前のトランザクションを commit/abort で閉じる。

DBAtlas で開く →

同じデータベースの他の項目