MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

C# MongoDB драйвер Игнорира опциите за изчакване

Има билет за JIRA CSHARP-1018 за проследяване на този проблем. По принцип драйверът игнорира опцията за изчакване, когато машината не е достъпна. Опция за изчакване се игнорира, ако машината е изключена или недостъпна.

Моля, вижте тикета на JIRA, за да проследите напредъка по този проблем.

Вижте заобиколното решение, публикувано на CSHARP-1231 за начин, по който ServerSelectionTimeout може да бъде зададен в текущата версия 2.0.0 на драйвера, ако предпочитате този подход за използване на по-кратки изчаквания за конкретни операции.

Ако използвате новия 2.0 async API, можете да използвате токен за анулиране, за да приложите свой собствен таймаут към цялата операция.

Така че бих препоръчал подхода на токена за анулиране в предишния коментар. Използването на кратки изчаквания за избор на сървър може да доведе до фалшиви изключения по време на избори на набор от реплики, ако времето за изчакване на избор на сървър е по-кратко от времето, необходимо за завършване на избора.

Можете да напишете нещо подобно:

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);
}

В този пример, въпреки че ServerSelectionTimeout все още е стойността по подразбиране от 30 секунди, тази конкретна операция ще бъде отменена само след 500 милисекунди (приблизително анулирането понякога може да отнеме малко повече време).



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Съвпадение с подниз в агрегирането на mongodb

  2. Скорост на актуализиране на Mongo

  3. using :=дава неизползвана грешка, но using =не в Go

  4. Как работи $text търсенето в MongoDB?

  5. Възможно ли е да добавите променливи на средата към конфигурационния файл на MongoDB?