5

我正在使用https://github.com/jeff-lewis/cls-hooked来跨异步回调保留执行上下文。我看到在请求的生命周期内上下文下降。

我知道https://github.com/nodejs/diagnostics/blob/master/tracing/AsyncHooks/problematic-modules.md模块会破坏异步连续性。

如何找出哪些其他模块正在破坏我的异步连续性?该应用程序是基于 express 的 node.js 服务器。

4

1 回答 1

4

在我在整个代码中添加日志语句并意识到在数据库调用中删除了上下文之后,我终于弄清楚了这一点,结果我使用的是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

于 2018-05-25T20:31:20.673 回答