我正在使用https://github.com/jeff-lewis/cls-hooked来保留跨异步回调的执行上下文。我看到在请求的生命周期中上下文丢失了。
我知道https://github.com/nodejs/diagnostics/blob/master/tracing/AsyncHooks/problematic-modules.md模块打破了异步连续性。
如何找出其他模块是否会破坏我的异步连续性? 该应用程序是一个基于express的node.js服务器。
答案 0 :(得分:0)
在我在整个代码中添加日志语句并意识到在数据库调用中删除了上下文后,我终于想出了这一点,结果我使用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