Tedious: Завешено в конечном состоянии

Созданный на 12 июн. 2017  ·  5Комментарии  ·  Источник: tediousjs/tedious

Чтобы дать краткий обзор, я пытаюсь асинхронно вставить несколько сотен записей в нашу базу данных, используя отдельные вызовы в mssql npm. Однако при использовании более старой версии mssql 3.3.0 я иногда не получал обратного вызова от npm. Я обновил mssql до 4.0.4, но все еще не получаю обратных вызовов. Я отследил это до этого npm.
После processPreLoginResponse он отправляется в tls. Затем он переходит к SentTLSSSLNegotiation. По какой-то причине после того, как он попадает сюда, через несколько сотен записей вызывается socketEnd. Затем он переходит в Final, вызывается функция ввода, вызывается cleanupConnection (без параметров), он очищает таймеры соединения и запроса, закрывает соединение, вызывается socketClose, а затем он снова пытается перейти в Final, и функция ввода не вызывается, и кажется, что он просто висит там на неопределенное время.
Любая идея о том, почему socketEnd вызывается в первую очередь или почему он никогда не поднимался до моего кода, чтобы я мог с ним справиться?

Самый полезный комментарий

@landondavidson @ jstephens7 https://github.com/tediousjs/tedious/pull/763 был объединен и выпущен как [email protected] .

Пожалуйста, дайте нам знать, если у вас по-прежнему возникают какие-либо проблемы. А пока закрою этот вопрос. 🙇

Все 5 Комментарий

У нас именно эта проблема возникает при использовании базы данных Azure. Мы можем легко воссоздать проблему примерно через 4 часа работы лазурной функции с таймером в 1 секунду. Мы можем чем-нибудь помочь? Это огромная проблема для нас, и мы хотели бы получить какую-либо информацию по этой проблеме.

Привет, @landondavidson , извините за поздний ответ, не могли бы вы поделиться репозиторием по этой проблеме?
У нас был № 574, который устранял прерывистую ошибку ConnectionError в базе данных Azure, он был выпущен в утомительной версии 2.1.0, большинство пакетов пула подключений используют старую версию утомительного драйвера. Можете ли вы проверить, использует ли ваш деп последний драйвер?

@ v-suhame, мы не видим ошибки ConnectionError. Розетка просто закрывается на нас в процессе подключения. Я только что отправил запрос на извлечение с исправлением, которое мы запустили в производство за последние две недели. Это веб-сайт с довольно большой нагрузкой, и ошибка полностью исчезла, когда пул подключений повторял попытку подключения после сообщения.

@landondavidson @ jstephens7 https://github.com/tediousjs/tedious/pull/763 был объединен и выпущен как [email protected] .

Пожалуйста, дайте нам знать, если у вас по-прежнему возникают какие-либо проблемы. А пока закрою этот вопрос. 🙇

У меня работает исправление, сделанное ранее, но я решил запустить wirehark, чтобы попытаться увидеть сетевой трафик, ведущий к ошибке. Мне удалось воспроизвести проблему дважды во время трассировки.
Я не уверен в значении какой-либо части того, что я получил, поэтому я включу то, что я заметил общего между двумя случаями возникновения ошибки.
Оба раза у нас были PSH ACK и FIN ACK с размером окна 66560.
После этого оба раза у нас был RST ACK.
Тогда похоже, что началось следующее согласование TLS (привет клиенту, привет серверу ... зашифрованное сообщение рукопожатия)
После этого оба раза он начал отправлять данные приложения, и мы получили TLS «Зашифрованное предупреждение», за которым следовали ACK и был вызван socket.end (никакого дальнейшего трафика TLS / TCP).

Была ли эта страница полезной?
0 / 5 - 0 рейтинги