Драйвер mongodb не освобождает ресурс

Мой тест mocha не существует, когда драйвер mongodb не может подключиться (потому что БД находится в автономном режиме, например).

Как освободить ресурс для тестового выхода? Клиент нулевой, поэтому я не могу использовать client.close(). Я знаю, что есть флаг мокко --exit, но я бы хотел закрыть драйвер mongo. Спасибо!

мой код похож:

static async create(
    dbName: string = db_name,
    url: string = db_url,
  ): Promise<MongoDbContext> {
    return new Promise<MongoDbContext>((resolve, reject) => {
      mongodb.MongoClient.connect(
        url,
        {
          keepAlive: 1000,
          connectTimeoutMS: 1000,
          socketTimeoutMS: 1000,
        },
        function(err, client) {
          if (err) {
            console.info(err)
            return reject(err)
          }
          console.info('Connected successfully to server')
          resolve(new MongoDbContext(client, dbName))
        },
      )
    })
  }

спецификация

 it('should throw if error occures', async function() {
    this.timeout(1000)
    try {
      mongo = await MongoDbContext.create('artifact_test')
    } catch (error) {
      return
    }
    fail('there was no exception')
  })

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

Вы пробовали вызвать connect с опциями, в частности connectTimeoutMS и socketTimeoutMS?

Vasan 17.04.2018 20:57

хорошая идея, я пытаюсь `{keepAlive: 1000, connectTimeoutMS: 2000, socketTimeoutMS: 2000, socketOptions: {connectTimeoutMS: 2000, socketTimeoutMS: 2000,},},` но ни один не работает

Lajos 17.04.2018 21:51

Можете выложить обновленный код с опциями? И какой у вас тайм-аут теста мокко? По умолчанию это 2 секунды. Это тот же самый тайм-аут соединения, который вы используете здесь.

Vasan 17.04.2018 21:57

Вы были правы, решение было в конфиге, спасибо! обновил пост

Lajos 17.04.2018 22:17

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

Vasan 17.04.2018 22:51
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
46
1

Ответы 1

Клиент пытался повторно подключиться, поэтому вам необходимо установить следующее свойство конфигурации:

{
   autoReconnect: false
}

Другие вопросы по теме