Контекст узла CLS удаляется во время выполнения запроса
Я использую https://github.com/jeff-lewis/cls-hooked для сохранения контекста выполнения через асинхронные обратные вызовы. Я вижу падение контекста в течение срока действия запроса.
Мне известны модули https://github.com/nodejs/diagnostics/blob/master/tracing/AsyncHooks/problematic-modules.md которые нарушают асинхронную непрерывность.
Как я могу узнать, какие другие модули нарушают мою асинхронную непрерывность? Приложение является экспресс-сервером node.js.
1 ответ
Я наконец-то понял это после того, как добавил в свой код операторы ведения журналов и понял, что при вызовах базы данных отбрасывается контекст. Оказывается, я использовал https://github.com/datastax/nodejs-driver который выполняет внутренний пул соединений, что вызывает падение контекста
const cassandra = require('cassandra-driver')
let c = new cassandra.Client(// options here...)
c.execute(query, params, options, namespace.bind(function() {
// This callback will now inherit the right parent context
}))
Дополнительная информация о проблеме очередей в пользовательском пространстве:
https://docs.google.com/document/d/1tlQ0R6wQFGqCS5KeIw0ddoLbaSYx6aU7vyXOkv-wvlM/edit https://github.com/othiym23/node-continuation-local-storage/issues/59