Повторное подключение к отказавшему серверу mongo

Я подключаюсь к mongo с параметрами повторного подключения при запуске и использую созданный db для всего приложения.

var options = {
    "server": {
      "auto_reconnect": true,
      "poolSize": 10,
      "socketOptions": {
        "keepAlive": 1
       }
    },
    "db": {
      "numberOfRetries": 60,
      "retryMiliSeconds": 5000
    }
  };

MongoClient.connect(dbName, options).then(useDb).catch(errorHandler)

Когда я перезапускаю сервер mongo, драйвер успешно подключается. Если я останавливаю сервер и запускаю его через 30 секунд, я получаю MongoError «топология уничтожена» при каждой операции. Мне кажется, что эти 30 секунд являются значением по умолчанию для numberOfRetries = 5, и моя данная опция не действует. Я делаю что-то неправильно? Как долго управлять переподключением?


person smirnov    schedule 10.05.2016    source источник
comment
Вы пробовали решение из моего ответа?   -  person Dmytro Shevchenko    schedule 18.05.2016
comment
Да, пробовал, без изменений :(   -  person smirnov    schedule 18.05.2016


Ответы (1)


Согласно этому ответу, чтобы исправить эту ошибку, вам следует увеличить время ожидания соединения в параметры:

var options = {
  "server": {
    "auto_reconnect": true,
    "poolSize": 10,
    "socketOptions": {
      "keepAlive": 1,
      "connectTimeoutMS": 30000 // increased connection timeout
     }
  },
  "db": {
    "numberOfRetries": 60,
    "retryMiliSeconds": 5000
  }
};
person Dmytro Shevchenko    schedule 10.05.2016