Skip to content

Commit

Permalink
Run wrap callback function in original domain
Browse files Browse the repository at this point in the history
  • Loading branch information
aletorrado committed Dec 18, 2014
1 parent 812c353 commit 7bd7e9e
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 15 deletions.
15 changes: 8 additions & 7 deletions lib/caching.js
Original file line number Diff line number Diff line change
Expand Up @@ -43,15 +43,16 @@ var caching = function (args) {
}

if (self.queues[key]) {
self.queues[key].push(cb);
self.queues[key].push({cb: cb, domain: process.domain});
return;
}

self.queues[key] = [cb];
self.queues[key] = [{cb: cb, domain: process.domain}];

function fillCallbacks(err, data){
self.queues[key].forEach(function(f){
f(err, data);
function fillCallbacks(err, data) {
self.queues[key].forEach(function(task) {
var taskDomain = task.domain || domain.create();
taskDomain.bind(task.cb)(err, data);
});
delete self.queues[key];
}
Expand All @@ -64,7 +65,7 @@ var caching = function (args) {
} else {
domain
.create()
.on('error', function(err){
.on('error', function(err) {
fillCallbacks(err);
})
.bind(work)(function (err, data) {
Expand All @@ -76,7 +77,7 @@ var caching = function (args) {
if (err && (!self.ignoreCacheErrors)) {
fillCallbacks(err);
} else {
fillCallbacks(err, data);
fillCallbacks(null, data);
}
});
});
Expand Down
21 changes: 13 additions & 8 deletions lib/multi_caching.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,15 +49,16 @@ var multi_caching = function (caches) {
}

if (self.queues[key]) {
self.queues[key].push(cb);
self.queues[key].push({cb: cb, domain: process.domain});
return;
}

self.queues[key] = [cb];
self.queues[key] = [{cb: cb, domain: process.domain}];

function fillCallbacks(err, data){
self.queues[key].forEach(function(f){
f(err, data);
function fillCallbacks(err, data) {
self.queues[key].forEach(function(task) {
var taskDomain = task.domain || domain.create();
taskDomain.bind(task.cb)(err, data);
});
delete self.queues[key];
}
Expand All @@ -78,12 +79,12 @@ var multi_caching = function (caches) {
} else {
domain
.create()
.on('error', function(err){
.on('error', function(err) {
fillCallbacks(err);
})
.bind(work)(function (err, data) {
if (err) {
fillCallbacks(err, data);
fillCallbacks(err);
return;
}
var opts = {
Expand All @@ -92,7 +93,11 @@ var multi_caching = function (caches) {
ttl: ttl
};
set_in_multiple_caches(caches, opts, function (err) {
fillCallbacks(null, data);
if (err) {
fillCallbacks(err);
} else {
fillCallbacks(null, data);
}
});
});
}
Expand Down

0 comments on commit 7bd7e9e

Please sign in to comment.