Cache files to improve genieacs-fs performance
This also fixes a memory leak issue when the client disconnects before completing the download. I suspect the leak had something to do with using pipe() but I'm not sure if it's a bug in MongoDB driver or that we were lacking proper error handling. Anyway, the pipe is no longer leaking :)
This commit is contained in:
1 parent
cc89fd92d7
commit
7594883404
3 files changed
+66
-38
No files matched your search
+12
-3
@@ -47,9 +47,18 @@ export default function memoize<T extends (...args: any[]) => any>(func: T): T {
|
||||
if (cache1.has(key)) return cache1.get(key);
|
||||
|
||||
let r;
|
||||
if (cache2.has(key)) r = cache2.get(key);
|
||||
else r = func(...args);
|
||||
cache1.set(key, r);
|
||||
if (cache2.has(key)) {
|
||||
cache1.set(key, (r = cache2.get(key)));
|
||||
} else {
|
||||
cache1.set(key, (r = func(...args)));
|
||||
// Evict rejected promises
|
||||
if (r instanceof Promise) {
|
||||
r.catch(() => {
|
||||
cache1.delete(key);
|
||||
cache2.delete(key);
|
||||
});
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}) as any;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user