225 TransactionTooOld: TransactionTooOld
MongoDB意味
マルチドキュメントトランザクション内でコマンドが実行されたが、そのトランザクション番号が、サーバーがそのセッションで認識している最新のトランザクション番号より古い。つまり新しいトランザクションが開始されているため、この古いトランザクションはもはや有効ではない。
原因
古いトランザクションの完了前に同じセッションで新しいトランザクションが開始された、または同時実行によりトランザクション番号が順不同に進んだ。通常、セッションオブジェクトが誤って共有されている場合や、複数のスレッドが同じセッションを使用している場合に発生する。
対処方法
論理トランザクションごとにセッションのライフサイクルを正しく管理し、セッションを複数のスレッド間で同時に共有しない。ドライバが推奨する withTransaction/コールバック API でトランザクションを実行する (再試行と番号管理を処理する)。新しいトランザクションを開始する前に、前のトランザクションを commit/abort で閉じる。
同じデータベースの他の項目
- 136 CappedPositionLostCapped collection position lost(capped コレクションの位置を喪失)
- 28 PathNotViableCannot use the part of the path to traverse the element(パスの一部を使って要素をたどれない)
- 216 ElectionInProgressElectionInProgress
- 246 SnapshotUnavailableSnapshotUnavailable
- 257 TransactionTooLargeTransactionTooLarge
- 276 IndexBuildAbortedIndexBuildAborted
- 86 IndexKeySpecsConflictIndexKeySpecsConflict