Comments (5)
@aletorrado, I've found that if I wrap the callbacks with process.nextTick()
, it solves this problem. Can you please check out branch feature/nested-cache-fetch-fix
and check that I didn't break anything for your use cases? The diff is https://github.com/BryanDonovan/node-cache-manager/compare/feature/nested-cache-fetch-fix. The new unit test passes with process.nextTick change, and fails without it.
from cache-manager.
I'm not sure this fix is correct. It seems like magic. This line where we delete the queued callbacks: https://github.com/BryanDonovan/node-cache-manager/compare/feature/nested-cache-fetch-fix#diff-4144c5c2a16b6a217fc942aee2803138R59
.. happens before the callbacks are called. Maybe this makes sense though.
from cache-manager.
Hi @BryanDonovan. The problem was that one of the final callbacks was updating the self.queues[key] array, while iterating. Your solution is correct, but you may also want to try something like this:
function fillCallbacks(err, data) {
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);
});
}
from cache-manager.
Thanks, I was thinking of something similar as well. I'll give that a try.
from cache-manager.
Nice job. Thanks.
from cache-manager.
Related Issues (20)
- Why `Promise` object cannot be store correctly? HOT 2
- prefix configuration option for cache keys HOT 3
- Fs cache store engine HOT 1
- Value being set inside "v" field on new version v2 HOT 2
- Map object is not stored HOT 5
- `this.cacheManager.store.client` is undefined HOT 2
- Question: are expired items removed from the in-memory store?
- Bug in docs: "Create single cache store synchronously" doesn't pass options to store HOT 1
- Broken link for 'Example Express App Usage' in README.md HOT 1
- Update TypeScript compilation target years HOT 2
- Receiving error `SyntaxError: Unexpected token 'export'` with v5.6.0 HOT 8
- Malformed cache data HOT 12
- Del with using keyPrefix doesn't work as expected HOT 1
- Version 5.7.2 requires node >= 20 HOT 4
- Question: how to have memory cache with dynamic TTL?
- Question: how to have memory cache with dynamic TTL? HOT 1
- Broken links in NPM docs HOT 2
- There is an issue with the `cache-manager` option is expected to be an object, but the type hint in the library indicates it should be a number. HOT 1
- cache.wrap is shared between cache instances HOT 1
- NestJS microservice gives unclear error when trying to start without Redis running HOT 3
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from cache-manager.