DBAtlas · Veritabanı operasyon atlası

225 TransactionTooOld: TransactionTooOld

MongoDB

Ne demek?

Bir multi-document transaction içinde bir komut çalıştırılmaya çalışıldı ancak transaction numarası, sunucunun o oturum için gördüğü en güncel transaction numarasından eski. Yani daha yeni bir transaction başlatıldığı için bu eski transaction artık geçersiz.

Neden olur?

Aynı oturumda (session) eski bir transaction tamamlanmadan yeni bir transaction başlatıldı ya da eşzamanlılık nedeniyle transaction numaraları sıra dışı ilerledi. Genellikle oturum nesnesinin yanlış paylaşılması veya birden çok thread'in aynı oturumu kullanması nedeniyle olur.

Nasıl çözülür?

Her mantıksal işlem için oturum yaşam döngüsünü doğru yönetin; bir oturumu eşzamanlı olarak birden çok thread'de paylaşmayın. Transaction'ları sürücünün önerdiği withTransaction/callback API'siyle çalıştırın (bu, yeniden deneme ve numara yönetimini üstlenir). Yeni bir transaction'a başlamadan önce öncekini commit/abort ile kapatın.

DBAtlas'ta aç →

Aynı motorda diğer kayıtlar