use constant definition instead of hardcoded TTL values

This commit is contained in:
Andris Reinman 2019-01-26 12:50:51 +02:00
parent bda1cbd878
commit 8f2fdd8abf
18 changed files with 104 additions and 74 deletions

View file

@ -82,5 +82,10 @@ module.exports = {
TASK_LOCK_INTERVAL: 1 * 60 * 60 * 1000,
TASK_UPDATE_INTERVAL: 10 * 60 * 1000,
TEMP_PASS_WINDOW: 24 * 3600 * 1000
TEMP_PASS_WINDOW: 24 * 3600 * 1000,
// mongdb query TTL limits
DB_MAX_TIME_USERS: 1 * 1000,
DB_MAX_TIME_MAILBOXES: 800,
DB_MAX_TIME_MESSAGES: 10 * 1000
};

View file

@ -2,6 +2,7 @@
const config = require('wild-config');
const db = require('../db');
const consts = require('../consts');
// APPEND mailbox (flags) date message
module.exports = (server, messageHandler, userCache) => (path, flags, date, raw, session, callback) => {
@ -20,7 +21,7 @@ module.exports = (server, messageHandler, userCache) => (path, flags, date, raw,
_id: session.user.id
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {

View file

@ -3,6 +3,7 @@
const ObjectID = require('mongodb').ObjectID;
const db = require('../db');
const tools = require('../tools');
const consts = require('../consts');
// COPY / UID COPY sequence mailbox
module.exports = (server, messageHandler) => (mailbox, update, session, callback) => {
@ -22,7 +23,7 @@ module.exports = (server, messageHandler) => (mailbox, update, session, callback
_id: mailbox
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, mailboxData) => {
if (err) {
@ -38,7 +39,7 @@ module.exports = (server, messageHandler) => (mailbox, update, session, callback
path: update.destination
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, targetData) => {
if (err) {
@ -55,7 +56,7 @@ module.exports = (server, messageHandler) => (mailbox, update, session, callback
uid: tools.checkRangeQuery(update.messages)
}) // no projection as we need to copy the entire message
.sort([['uid', 1]])
.maxTimeMS(5000);
.maxTimeMS(consts.DB_MAX_TIME_MESSAGES);
let copiedMessages = 0;
let copiedStorage = 0;
@ -78,7 +79,7 @@ module.exports = (server, messageHandler) => (mailbox, update, session, callback
projection: {
storageUsed: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(...args) => {
let r = args && args[1];
@ -145,7 +146,7 @@ module.exports = (server, messageHandler) => (mailbox, update, session, callback
modifyIndex: true
},
returnOriginal: true,
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, item) => {
if (err) {

View file

@ -1,6 +1,7 @@
'use strict';
const db = require('../db');
const consts = require('../consts');
// DELETE "path/to/mailbox"
module.exports = (server, mailboxHandler) => (path, session, callback) => {
@ -20,7 +21,7 @@ module.exports = (server, mailboxHandler) => (path, session, callback) => {
path
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, mailbox) => {
if (err) {

View file

@ -4,6 +4,7 @@
const db = require('../db');
const tools = require('../tools');
const consts = require('../consts');
// EXPUNGE deletes all messages in selected mailbox marked with \Delete
module.exports = (server, messageHandler) => (mailbox, update, session, callback) => {
@ -21,7 +22,7 @@ module.exports = (server, messageHandler) => (mailbox, update, session, callback
_id: mailbox
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, mailboxData) => {
if (err) {
@ -80,7 +81,7 @@ module.exports = (server, messageHandler) => (mailbox, update, session, callback
.collection('messages')
.find(query)
.sort([['uid', 1]])
.maxTimeMS(5000);
.maxTimeMS(consts.DB_MAX_TIME_MESSAGES);
let processNext = () => {
cursor.next((err, messageData) => {

View file

@ -24,7 +24,7 @@ module.exports = (server, messageHandler, userCache) => (mailbox, options, sessi
_id: mailbox
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, mailboxData) => {
if (err) {
@ -125,7 +125,7 @@ module.exports = (server, messageHandler, userCache) => (mailbox, options, sessi
.find(query)
.project(projection)
.sort([['uid', 1]])
.maxTimeMS(5000);
.maxTimeMS(consts.DB_MAX_TIME_MESSAGES);
let rowCount = 0;
let totalBytes = 0;

View file

@ -1,6 +1,7 @@
'use strict';
const db = require('../db');
const consts = require('../consts');
module.exports = server => (path, session, callback) => {
server.logger.debug(
@ -19,7 +20,7 @@ module.exports = server => (path, session, callback) => {
path
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, mailbox) => {
if (err) {
@ -34,7 +35,7 @@ module.exports = server => (path, session, callback) => {
_id: session.user.id
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, user) => {
if (err) {

View file

@ -1,6 +1,7 @@
'use strict';
const db = require('../db');
const consts = require('../consts');
module.exports = server => (quotaRoot, session, callback) => {
server.logger.debug(
@ -22,7 +23,7 @@ module.exports = server => (quotaRoot, session, callback) => {
_id: session.user.id
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, user) => {
if (err) {

View file

@ -1,6 +1,7 @@
'use strict';
const db = require('../db');
const consts = require('../consts');
// LIST "" "*"
// Returns all folders, query is informational
@ -21,6 +22,6 @@ module.exports = server =>
.find({
user: session.user.id
})
.maxTimeMS(500)
.maxTimeMS(consts.DB_MAX_TIME_MAILBOXES)
.toArray(callback);
});

View file

@ -1,6 +1,7 @@
'use strict';
const db = require('../db');
const consts = require('../consts');
// LSUB "" "*"
// Returns all subscribed folders, query is informational
@ -21,6 +22,6 @@ module.exports = server => (query, session, callback) => {
user: session.user.id,
subscribed: true
})
.maxTimeMS(500)
.maxTimeMS(consts.DB_MAX_TIME_MAILBOXES)
.toArray(callback);
};

View file

@ -1,6 +1,7 @@
'use strict';
const db = require('../db');
const consts = require('../consts');
// SELECT/EXAMINE
module.exports = server => (path, session, callback) => {
@ -19,7 +20,7 @@ module.exports = server => (path, session, callback) => {
path
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, mailbox) => {
if (err) {
@ -38,7 +39,7 @@ module.exports = server => (path, session, callback) => {
uid: true
})
//.sort([['uid', 1]])
.maxTimeMS(5000)
.maxTimeMS(consts.DB_MAX_TIME_MESSAGES)
.toArray((err, messages) => {
if (err) {
return callback(err);

View file

@ -1,6 +1,7 @@
'use strict';
const db = require('../db');
const consts = require('../consts');
// RENAME "path/to/mailbox" "new/path"
// NB! RENAME affects child and hierarchy mailboxes as well, this example does not do this
@ -22,7 +23,7 @@ module.exports = (server, mailboxHandler) => (path, newname, session, callback)
path
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, mailbox) => {
if (err) {

View file

@ -2,6 +2,7 @@
const db = require('../db');
const tools = require('../tools');
const consts = require('../consts');
/**
* Returns an array of matching UID values
@ -12,7 +13,7 @@ module.exports = server => (mailbox, options, session, callback) => {
_id: mailbox
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, mailboxData) => {
if (err) {
@ -359,7 +360,7 @@ module.exports = server => (mailbox, options, session, callback) => {
uid: true,
modseq: true
})
.maxTimeMS(5000);
.maxTimeMS(consts.DB_MAX_TIME_MESSAGES);
let highestModseq = 0;
let uidList = [];

View file

@ -1,6 +1,7 @@
'use strict';
const db = require('../db');
const consts = require('../consts');
// STATUS (X Y X)
module.exports = server => (path, session, callback) => {
@ -19,7 +20,7 @@ module.exports = server => (path, session, callback) => {
path
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, mailboxData) => {
if (err) {
@ -39,7 +40,7 @@ module.exports = server => (path, session, callback) => {
$lt: mailboxData.uidNext
}
})
.maxTimeMS(5000)
.maxTimeMS(consts.DB_MAX_TIME_MESSAGES)
.count((err, total) => {
if (err) {
return callback(err);
@ -55,7 +56,7 @@ module.exports = server => (path, session, callback) => {
$lt: mailboxData.uidNext
}
})
.maxTimeMS(5000)
.maxTimeMS(consts.DB_MAX_TIME_MESSAGES)
.count((err, unseen) => {
if (err) {
return callback(err);

View file

@ -24,7 +24,7 @@ module.exports = server => (mailbox, update, session, callback) => {
_id: mailbox
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, mailboxData) => {
if (err) {
@ -53,7 +53,7 @@ module.exports = server => (mailbox, update, session, callback) => {
},
{
returnOriginal: false,
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, item) => {
if (err) {
@ -96,7 +96,7 @@ module.exports = server => (mailbox, update, session, callback) => {
flags: true,
modseq: true
})
.maxTimeMS(5000)
.maxTimeMS(consts.DB_MAX_TIME_MESSAGES)
.sort([['uid', 1]]);
let shouldExpunge = false;
@ -453,7 +453,7 @@ function updateMailboxFlags(mailbox, update, callback) {
}
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
callback
);

View file

@ -1,6 +1,7 @@
'use strict';
const db = require('../db');
const consts = require('../consts');
// SUBSCRIBE "path/to/mailbox"
module.exports = server => (path, session, callback) => {
@ -24,7 +25,7 @@ module.exports = server => (path, session, callback) => {
}
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, item) => {
if (err) {

View file

@ -1,6 +1,7 @@
'use strict';
const db = require('../db');
const consts = require('../consts');
// UNSUBSCRIBE "path/to/mailbox"
module.exports = server => (path, session, callback) => {
@ -24,7 +25,7 @@ module.exports = server => (path, session, callback) => {
}
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_MAILBOXES
},
(err, item) => {
if (err) {

View file

@ -72,7 +72,7 @@ class UserHandler {
},
{
projection,
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, addressData) => {
if (err) {
@ -90,7 +90,7 @@ class UserHandler {
this.users.collection('domainaliases').findOne(
{ alias: domain },
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, aliasData) => {
if (err) {
@ -108,7 +108,7 @@ class UserHandler {
},
{
projection,
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
done
);
@ -144,7 +144,7 @@ class UserHandler {
query,
{
projection,
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, addressData) => {
if (err) {
@ -163,7 +163,7 @@ class UserHandler {
},
{
projection,
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, addressData) => {
if (err) {
@ -245,7 +245,7 @@ class UserHandler {
data.query,
{
projection: fields,
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -462,7 +462,7 @@ class UserHandler {
disabled: true,
disabledScopes: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -757,7 +757,7 @@ class UserHandler {
}
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
() => false
);
@ -814,7 +814,7 @@ class UserHandler {
.find({
user: userData._id
})
.maxTimeMS(500)
.maxTimeMS(consts.DB_MAX_TIME_USERS)
.toArray((err, asps) => {
if (err) {
err.code = 'InternalDatabaseError';
@ -895,7 +895,7 @@ class UserHandler {
$set: aspUpdates
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
() => {
authSuccess(
@ -955,7 +955,7 @@ class UserHandler {
oldPasswords: true,
disabled: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -1129,7 +1129,7 @@ class UserHandler {
projection: {
_id: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -1177,7 +1177,7 @@ class UserHandler {
user
},
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, asp) => {
if (err) {
@ -1227,7 +1227,7 @@ class UserHandler {
projection: {
unameview: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -1286,7 +1286,7 @@ class UserHandler {
projection: {
_id: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, addressData) => {
if (err) {
@ -1546,7 +1546,10 @@ class UserHandler {
{
$set: updates
},
{ returnOriginal: false, maxTimeMS: 500 },
{
returnOriginal: false,
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, result) => {
if (err) {
// try to rollback
@ -1695,7 +1698,9 @@ class UserHandler {
}
}
},
{ maxTimeMS: 500 },
{
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, result) => {
if (err) {
log.error('DB', 'UPDATEFAIL id=%s error=%s', user, err.message);
@ -1733,7 +1738,7 @@ class UserHandler {
enabled2fa: true,
seed: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -1787,7 +1792,7 @@ class UserHandler {
pendingSeedChanged: new Date()
}
},
{ maxTimeMS: 500 },
{ maxTimeMS: consts.DB_MAX_TIME_USERS },
(err, result) => {
if (err) {
log.error('DB', 'UPDATEFAIL id=%s error=%s', user, err.message);
@ -1837,7 +1842,7 @@ class UserHandler {
pendingSeed: true,
pendingSeedChanged: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -1930,7 +1935,7 @@ class UserHandler {
pendingSeed: userData.pendingSeed
},
update,
{ maxTimeMS: 500 },
{ maxTimeMS: consts.DB_MAX_TIME_USERS },
(err, result) => {
if (err) {
log.error('DB', 'UPDATEFAIL id=%s error=%s', user, err.message);
@ -1972,7 +1977,7 @@ class UserHandler {
username: true,
seed: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -2021,7 +2026,7 @@ class UserHandler {
_id: user
},
update,
{ maxTimeMS: 500 },
{ maxTimeMS: consts.DB_MAX_TIME_USERS },
(err, result) => {
if (err) {
log.error('DB', 'UPDATEFAIL id=%s error=%s', user, err.message);
@ -2085,7 +2090,7 @@ class UserHandler {
enabled2fa: true,
seed: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -2161,7 +2166,7 @@ class UserHandler {
enabled2fa: true,
username: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -2205,7 +2210,7 @@ class UserHandler {
_id: user
},
update,
{ maxTimeMS: 500 },
{ maxTimeMS: consts.DB_MAX_TIME_USERS },
(err, result) => {
if (err) {
log.error('DB', 'UPDATEFAIL id=%s error=%s', user, err.message);
@ -2246,7 +2251,7 @@ class UserHandler {
enabled2fa: true,
username: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -2278,7 +2283,9 @@ class UserHandler {
_id: user
},
update,
{ maxTimeMS: 500 },
{
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, result) => {
if (err) {
log.error('DB', 'UPDATEFAIL id=%s error=%s', user, err.message);
@ -2330,7 +2337,7 @@ class UserHandler {
enabled2fa: true,
seed: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -2431,7 +2438,7 @@ class UserHandler {
username: true,
u2f: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -2488,7 +2495,7 @@ class UserHandler {
_id: user
},
update,
{ maxTimeMS: 500 },
{ maxTimeMS: consts.DB_MAX_TIME_USERS },
(err, result) => {
if (err) {
log.error('DB', 'UPDATEFAIL id=%s error=%s', user, err.message);
@ -2531,7 +2538,7 @@ class UserHandler {
username: true,
u2f: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -2585,7 +2592,9 @@ class UserHandler {
_id: user
},
update,
{ maxTimeMS: 500 },
{
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, result) => {
if (err) {
log.error('DB', 'UPDATEFAIL id=%s error=%s', user, err.message);
@ -2626,7 +2635,7 @@ class UserHandler {
username: true,
u2f: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -2674,7 +2683,7 @@ class UserHandler {
username: true,
u2f: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -2777,7 +2786,9 @@ class UserHandler {
}
}
},
{ maxTimeMS: 500 },
{
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, result) => {
if (err) {
log.error('DB', 'UPDATEFAIL id=%s error=%s', user, err.message);
@ -2942,7 +2953,7 @@ class UserHandler {
password: true,
oldPasswords: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -3013,7 +3024,7 @@ class UserHandler {
},
{
returnOriginal: false,
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, result) => {
if (err) {
@ -3149,7 +3160,7 @@ class UserHandler {
upsert: true,
projection: { _id: true },
returnOriginal: false,
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, r) => {
if (err) {
@ -3170,7 +3181,7 @@ class UserHandler {
projection: {
_id: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, userData) => {
if (err) {
@ -3282,7 +3293,7 @@ class UserHandler {
projection: {
user: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, addressData) => {
if (err) {
@ -3298,7 +3309,7 @@ class UserHandler {
this.users.collection('domainaliases').findOne(
{ alias: domain },
{
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, aliasData) => {
if (err) {
@ -3319,7 +3330,7 @@ class UserHandler {
projection: {
user: true
},
maxTimeMS: 500
maxTimeMS: consts.DB_MAX_TIME_USERS
},
(err, addressData) => {
if (err) {