mirror of
https://github.com/cryptpad/cryptpad.git
synced 2026-09-14 11:05:41 +05:00
Merge branch 'prodloop' into staging
This commit is contained in:
commit
08e2d0c19f
28
lib/api.js
28
lib/api.js
@ -173,16 +173,16 @@ nThen(function (w) {
|
||||
let oldUsers = Env.maxConcurrentRegUsers || 0;
|
||||
let stats = Server.getSessionStats();
|
||||
let chans = Server.getActiveChannelCount();
|
||||
let reg = 0;
|
||||
let regKeys = [];
|
||||
Object.keys(Env.netfluxUsers).forEach(id => {
|
||||
let keys = Env.netfluxUsers[id];
|
||||
let key = Object.keys(keys || {})[0];
|
||||
if (!key) { return; }
|
||||
if (regKeys.includes(key)) { return; }
|
||||
reg++;
|
||||
regKeys.push(key);
|
||||
});
|
||||
|
||||
const map = Env.netfluxUsers;
|
||||
// Extract public key from each ws connection
|
||||
let regKeys = Object.keys(map).map(id => {
|
||||
return Object.keys(map[id] || {})[0];
|
||||
}).filter(Boolean);
|
||||
// Convert to set to get only unique values
|
||||
let regSet = new Set(regKeys);
|
||||
const reg = regSet.size;
|
||||
|
||||
Env.maxConcurrentWs = Math.max(oldWs, stats.total);
|
||||
Env.maxConcurrentUniqueWs = Math.max(oldUniqueWs, stats.unique);
|
||||
Env.maxConcurrentRegUsers = Math.max(oldUsers, reg);
|
||||
@ -194,9 +194,10 @@ nThen(function (w) {
|
||||
try {
|
||||
let users = Env.netfluxUsers || {};
|
||||
let online = Server.getOnlineUsers() || [];
|
||||
let onlineSet = new Set(online);
|
||||
let removed = 0;
|
||||
Object.keys(users).forEach(id => {
|
||||
if (!online.includes(id)) {
|
||||
if (!onlineSet.has(id)) {
|
||||
delete users[id];
|
||||
removed++;
|
||||
}
|
||||
@ -209,15 +210,16 @@ nThen(function (w) {
|
||||
let HK = require('./hk-utils');
|
||||
let chans = Env.channel_cache || {};
|
||||
let active = Server.getActiveChannels() || [];
|
||||
let activeSet = new Set(active);
|
||||
let removed = 0;
|
||||
Object.keys(chans).forEach(id => {
|
||||
if (!active.includes(id)) {
|
||||
if (!activeSet.has(id)) {
|
||||
HK.dropChannel(Env, id);
|
||||
removed++;
|
||||
}
|
||||
});
|
||||
if (Env.store) {
|
||||
Env.store.closeInactiveChannels(active);
|
||||
Env.store.closeInactiveChannels(activeSet);
|
||||
}
|
||||
if (removed) {
|
||||
Env.Log.info("CLEANED_ACTIVE_CHANNELS_MAP", {removed});
|
||||
|
||||
@ -286,9 +286,9 @@ var closeChannel = function (env, channelName, cb) {
|
||||
}
|
||||
};
|
||||
|
||||
var closeInactiveChannels = function (env, schedule, active) {
|
||||
var closeInactiveChannels = function (env, schedule, activeSet) {
|
||||
Object.keys(env.channels).forEach(channelName => {
|
||||
if (!active.includes(channelName)) {
|
||||
if (!activeSet.has(channelName)) {
|
||||
schedule.ordered(channelName, function (next) {
|
||||
closeChannel(env, channelName, next);
|
||||
});
|
||||
@ -1473,8 +1473,8 @@ module.exports.create = function (conf, _cb) {
|
||||
closeChannel(env, channelName, Util.both(cb, next));
|
||||
});
|
||||
},
|
||||
closeInactiveChannels: function (active) {
|
||||
closeInactiveChannels(env, schedule, active);
|
||||
closeInactiveChannels: function (activeSet) {
|
||||
closeInactiveChannels(env, schedule, activeSet);
|
||||
},
|
||||
// write to a log file
|
||||
log: function (channelName, content, cb) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user