You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We are creating the namespace and setting a variable called gtid in one of the middle ware and then trying to read that value for logging. We are getting the values in most of the places but some places it's undefined. One of the place is in the callback of the socket close event. Below is the code to provide some context.
var express = require('express');
var app = express();
var http = require('http');
var continuationLocalStorage = require('continuation-local-storage');
var namespace = continuationLocalStorage.createNamespace('namespace');
app.use(function (req, res, next) {
namespace.run(function () {
namespace.set('gtid', 'some unique value');
return next();
});
});
var req = protocol.request(request, function (response) {
response.setEncoding('utf-8');
var responseBody = '';
response.on('data', function (data) {
responseBody += data;
});
response.on('error', function (e) {
e.code = response.statusCode;
return callback(e);
});
response.on('end', function () {
return callback(null, responseBody);
});
});
req.on('socket', function (socket) {
if (!socket.name) {
socket.name = new Date().getTime();
socket.on('close', function () {
var namespace = getNamespace('namespace');
console.log(namespace.get('gtid'))
});
}
});
req.on('error', function (e) {
return callback(e);
});
if (request.body) {
req.write(request.body);
}
req.end();
The text was updated successfully, but these errors were encountered:
There is one more place where variable set in namespace is coming as undefined. It's in the callbacks defined in the express.router. Please see below for some context.
I encountered the same issue. The problem is that next callback finishes before the other stuff get called, so I looked at the Namespace.prototype.run source and took what I needed from it.
Beware though, I'm reusing the same namespace without destroying it which means that there's a small chance for a race condition, in which a request overwrites the 'req' value before the previous request is done with it (for me it wasn't a concern):
We are creating the namespace and setting a variable called
gtid
in one of the middle ware and then trying to read that value for logging. We are getting the values in most of the places but some places it'sundefined
. One of the place is in the callback of the socket close event. Below is the code to provide some context.The text was updated successfully, but these errors were encountered: