Nodejs关闭问题

时间:2016-09-30 18:41:20

标签: node.js express express-session ioredis

我在我的节点网络应用程序中使用与RedisStore的快速会话。

NodeJs版本:4.2.4 JS:Es6

“express”:“^ 4.13.3”, “express-session”:“https://github.com/echorohit/session/tarball/1d22749aa46280a24a4ee3a993ba0772e6e1e2df”, “ioredis”:“^ 1.13.0”, “connect-redis”:“^ 3.0.1”,

我观察到偶尔用户之间会话混乱。我使用新的见解来记录一些指标,所以我也用它来调试问题。

以下是我的发现。

来自express-session

的store.js的

代码段

 Store.prototype.regenerate = function(req, fn){
     var self = this;
     //CHECKPOINT 1
     log.addNewRelicCustomParameter("CHECKPOINT1",req.sessionID);
     this.destroy(req.sessionID, function(err){
        //CHECKPOINT 2
        log.addNewRelicCustomParameter("CHECKPOINT2",req.sessionID);
        self.generate(req, fn);
        fn(err);
     });
};

CHECKPOINT 1。 req.sessionID是正确的但奇怪的是在 CHECKPOINT 2。打印了req.sessionID,以便在新的relic日志中同时执行其他请求。

我确信这是会话混淆的原因。但是无法进一步调试以找到它的根本原因。请帮我提一下如何找到问题的根本原因。不确定这是否真的是封闭范围问题。

1 个答案:

答案 0 :(得分:0)

看起来确实没有问题!

如果在每个检查点设置断点,那么有时候断点之间的req.sessionID会有所不同,因为第二个断点位于异步回调中。