Browse Source

Merge branch 'feature/nested-cache-fetch-fix' into develop

feature/specify-what-to-cache
Bryan Donovan 10 years ago
parent
commit
3427e4cc0d
  1. 6
      lib/caching.js
  2. 6
      lib/multi_caching.js
  3. 24
      test/caching.unit.js
  4. 24
      test/multi_caching.unit.js

6
lib/caching.js

@ -50,11 +50,13 @@ var caching = function(args) {
self.queues[key] = [{cb: cb, domain: process.domain}];
function fillCallbacks(err, data) {
self.queues[key].forEach(function(task) {
var waiting = self.queues[key];
delete self.queues[key];
waiting.forEach(function(task) {
var taskDomain = task.domain || domain.create();
taskDomain.bind(task.cb)(err, data);
});
delete self.queues[key];
}
self.store.get(key, function(err, result) {

6
lib/multi_caching.js

@ -78,11 +78,13 @@ var multi_caching = function(caches) {
self.queues[key] = [{cb: cb, domain: process.domain}];
function fillCallbacks(err, data) {
self.queues[key].forEach(function(task) {
var waiting = self.queues[key];
delete self.queues[key];
waiting.forEach(function(task) {
var taskDomain = task.domain || domain.create();
taskDomain.bind(task.cb)(err, data);
});
delete self.queues[key];
}
get_from_highest_priority_cache(key, function(err, result, index) {

24
test/caching.unit.js

@ -327,6 +327,30 @@ describe("caching", function() {
});
});
it("lets us make nested calls", function(done) {
function get_cached_widget(name, cb) {
cache.wrap(key, function(cache_cb) {
methods.get_widget(name, cache_cb);
}, cb);
}
get_cached_widget(name, function(err, widget) {
check_err(err);
assert.equal(widget.name, name);
get_cached_widget(name, function(err, widget) {
check_err(err);
assert.equal(widget.name, name);
get_cached_widget(name, function(err, widget) {
check_err(err);
assert.equal(widget.name, name);
done();
});
});
});
});
it("expires cached result after ttl seconds", function(done) {
cache.wrap(key, function(cb) {
methods.get_widget(name, cb);

24
test/multi_caching.unit.js

@ -519,6 +519,30 @@ describe("multi_caching", function() {
});
});
});
it("lets us make nested calls", function(done) {
function get_cached_widget(name, cb) {
multi_cache.wrap(key, function(cache_cb) {
methods.get_widget(name, cache_cb);
}, cb);
}
get_cached_widget(name, function(err, widget) {
check_err(err);
assert.equal(widget.name, name);
get_cached_widget(name, function(err, widget) {
check_err(err);
assert.equal(widget.name, name);
get_cached_widget(name, function(err, widget) {
check_err(err);
assert.equal(widget.name, name);
done();
});
});
});
});
});
context("error handling", function() {

Loading…
Cancel
Save