Контекст узла 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

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