MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

C# Driver MongoDB Mengabaikan opsi batas waktu

Ada tiket JIRA CSHARP-1018 untuk melacak masalah ini. Pada dasarnya pengemudi mengabaikan opsi batas waktu ketika mesin tidak dapat diakses. Opsi batas waktu diabaikan jika mesin dimatikan atau tidak dapat diakses.

Silakan merujuk ke tiket JIRA untuk mengikuti perkembangan masalah ini.

Lihat solusi yang diposting ke CSHARP-1231 untuk cara agar ServerSelectionTimeout dapat disetel dalam versi driver 2.0.0 saat ini jika Anda lebih suka pendekatan tersebut menggunakan batas waktu yang lebih pendek pada operasi tertentu.

Jika Anda menggunakan 2.0 async API baru, Anda dapat menggunakan token pembatalan untuk menerapkan batas waktu Anda sendiri ke keseluruhan operasi.

Jadi saya akan merekomendasikan pendekatan token pembatalan di komentar sebelumnya. Menggunakan waktu tunggu pemilihan server yang singkat dapat menghasilkan pengecualian palsu selama pemilihan set replika jika waktu tunggu pemilihan server lebih pendek dari waktu yang diperlukan untuk menyelesaikan pemilihan.

Anda dapat menulis sesuatu seperti ini:

var startTime = DateTime.UtcNow;
try
{
    using (var timeoutCancellationTokenSource = new CancellationTokenSource(TimeSpan.FromMilliseconds(500)))
    {
        await collection.Find("{ _id : 1 }").ToListAsync(timeoutCancellationTokenSource.Token);
    }
}
catch (OperationCanceledException ex)
{
    var endTime = DateTime.UtcNow;
    var elapsed = endTime - startTime;
    Console.WriteLine("Operation was cancelled after {0} seconds.", elapsed.TotalSeconds);
}

Dalam contoh ini, meskipun ServerSelectionTimeout masih merupakan nilai default 30 detik, operasi khusus ini akan dibatalkan setelah hanya 500 milidetik (kurang-lebih, pembatalan terkadang bisa memakan waktu sedikit lebih lama).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. PHP MongoDB agregat $match dan $group dan $addToSet

  2. Memperbarui objek bersarang di luwak

  3. sambungkan robomongo ke wadah buruh pelabuhan mongoDB

  4. Mendapatkan daftar semua database dengan Mongoose

  5. Temukan semua objek dalam koleksi Java Mongodb