2013-03-23 4 views
2

У меня есть веб-сервер node.js с использованием express.js и mongodb в качестве хранилища данных. Этот сервер контролируется runit, и я пытаюсь реализовать способ изящно закрыть сервер.Чистое закрытие сервера express.js + mongodb (using node.js)

Я реализую обработчик сигналов для SIGINT и SIGTERM, и я знаю, что вы можете остановить прослушивание новых соединений, вызвав .close() на объекте, возвращаемый createServer(). Все идет нормально.

Однако, даже если больше запросов не поступает, в системе может быть еще несколько запросов, которые необходимо завершить, прежде чем я смогу закрыть базу данных.

Я использую ReplicaSet mongodb, и я полагаю, что если я просто позвоню db.close() сразу, некоторые из этих запросов могут каким-то образом сбой. Есть ли способ закрыть базу данных таким образом, чтобы завершить запросы ожидающих баз данных, или мне нужно вручную установить счетчик +/-, чтобы узнать, сколько ожидающих ожидающих «активных» запросов, а затем ждать завершения работы до тех пор, пока оно не достигнет 0 ?

ответ

1

Вам необходимо вручную убедиться, что вы находитесь в чистом состоянии, чтобы отключиться, так как драйвер не дождался выключения оставшихся операций перед выключением.

Вы можете войти билет функции на

https://github.com/mongodb/node-mongodb-native/issues/

Смежные вопросы