Merge branch 'cache-metadata' into staging
commit
646fdcc43e
|
@ -13,11 +13,19 @@ Data.getMetadataRaw = function (Env, channel /* channelName */, _cb) {
|
|||
|
||||
var cached = Env.metadata_cache[channel];
|
||||
if (HK.isMetadataMessage(cached)) {
|
||||
Env.checkCache(channel);
|
||||
return void cb(void 0, cached);
|
||||
}
|
||||
|
||||
Env.batchMetadata(channel, cb, function (done) {
|
||||
Env.computeMetadata(channel, done);
|
||||
Env.computeMetadata(channel, function (err, meta) {
|
||||
if (!err && HK.isMetadataMessage(meta)) {
|
||||
Env.metadata_cache[channel] = meta;
|
||||
// clear metadata after a delay if nobody has joined the channel within 30s
|
||||
Env.checkCache(channel);
|
||||
}
|
||||
done(err, meta);
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
|
|
12
lib/env.js
12
lib/env.js
|
@ -42,6 +42,8 @@ module.exports.create = function (config) {
|
|||
|
||||
metadata_cache: {},
|
||||
channel_cache: {},
|
||||
cache_checks: {},
|
||||
|
||||
queueStorage: WriteQueue(),
|
||||
queueDeletes: WriteQueue(),
|
||||
queueValidation: WriteQueue(),
|
||||
|
@ -117,8 +119,14 @@ module.exports.create = function (config) {
|
|||
}
|
||||
}());
|
||||
|
||||
|
||||
|
||||
Env.checkCache = function (channel) {
|
||||
var f = Env.cache_checks[channel] || Util.throttle(function () {
|
||||
delete Env.cache_checks[channel];
|
||||
if (Env.channel_cache[channel]) { return; }
|
||||
delete Env.metadata_cache[channel];
|
||||
}, 30000);
|
||||
f();
|
||||
};
|
||||
|
||||
(function () {
|
||||
var custom = config.customLimits;
|
||||
|
|
Loading…
Reference in New Issue