mirror of https://github.com/xwiki-labs/cryptpad
Reduce memory usage for the eviction script
This commit is contained in:
parent
99b4c9b037
commit
5807b4dddf
|
@ -367,7 +367,7 @@ module.exports = function (Env, cb) {
|
|||
|
||||
TODO make this configurable ?
|
||||
*/
|
||||
var BLOOM_CAPACITY = (1 << 22) - 1; // over two million items
|
||||
var BLOOM_CAPACITY = (1 << 24) - 1; // over two million items
|
||||
var BLOOM_ERROR = 1 / 10000; // an error rate of one in ten thousand
|
||||
|
||||
// we'll use one filter for the set of active documents
|
||||
|
|
|
@ -584,8 +584,6 @@ var getStats = function (env, channelName, cb) {
|
|||
|
||||
// TODO use ../plan.js for a smaller memory footprint
|
||||
var listChannels = function (root, handler, cb, fast) {
|
||||
// do twenty things at a time
|
||||
var sema = Semaphore.create(20);
|
||||
|
||||
var dirList = [];
|
||||
|
||||
|
@ -599,17 +597,18 @@ var listChannels = function (root, handler, cb, fast) {
|
|||
}
|
||||
dirList = list;
|
||||
}));
|
||||
}).nThen(function (w) {
|
||||
}).nThen(function (waitFor) {
|
||||
// search inside the nested directories
|
||||
// stream it so you don't put unnecessary data in memory
|
||||
var wait = w();
|
||||
//var wait = w();
|
||||
var n = nThen;
|
||||
dirList.forEach(function (dir) {
|
||||
sema.take(function (give) {
|
||||
// TODO modify the asynchronous bits here to keep less in memory at any given time
|
||||
// list a directory -> process its contents with semaphores until less than N jobs are running
|
||||
// then list the next directory...
|
||||
// Handle one directory at a time to save some memory
|
||||
n = n(function (w) {
|
||||
// do twenty things at a time
|
||||
var sema = Semaphore.create(20);
|
||||
var nestedDirPath = Path.join(root, dir);
|
||||
Fs.readdir(nestedDirPath, w(give(function (err, list) {
|
||||
Fs.readdir(nestedDirPath, w(function (err, list) {
|
||||
if (err) { return void handler(err); } // Is this correct?
|
||||
|
||||
list.forEach(function (item) {
|
||||
|
@ -660,10 +659,10 @@ var listChannels = function (root, handler, cb, fast) {
|
|||
}, isLonelyMetadata);
|
||||
});
|
||||
});
|
||||
})));
|
||||
});
|
||||
}));
|
||||
}).nThen;
|
||||
});
|
||||
wait();
|
||||
n(waitFor());
|
||||
}).nThen(function () {
|
||||
cb();
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue