mirror of
https://github.com/ONLYOFFICE/server.git
synced 2026-04-07 14:04:35 +08:00
[feature] Filter old rows in getCountWithStatus while "shutdown"
This commit is contained in:
@ -297,11 +297,13 @@ function getExpired(ctx, maxCount, expireSeconds) {
|
|||||||
}, false, false, values);
|
}, false, false, values);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
function getCountWithStatus(ctx, status) {
|
function getCountWithStatus(ctx, status, expireMs) {
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
const values = [];
|
const values = [];
|
||||||
const sqlParam = addSqlParameter(status, values);
|
const expireDate = new Date(Date.now() - expireMs);
|
||||||
const sqlCommand = `SELECT COUNT(id) AS count FROM ${cfgTableResult} WHERE status=${sqlParam};`;
|
const sqlStatus = addSqlParameter(status, values);
|
||||||
|
const sqlDate = addSqlParameter(expireDate, values);
|
||||||
|
const sqlCommand = `SELECT COUNT(id) AS count FROM ${cfgTableResult} WHERE status=${sqlStatus} AND last_open_date>${sqlDate};`;
|
||||||
dbInstance.sqlQuery(ctx, sqlCommand, function(error, result) {
|
dbInstance.sqlQuery(ctx, sqlCommand, function(error, result) {
|
||||||
if (error) {
|
if (error) {
|
||||||
reject(error);
|
reject(error);
|
||||||
|
|||||||
@ -78,7 +78,7 @@ exports.shutdown = function(ctx, editorStat, status) {
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
var remainingFiles = yield editorStat.getShutdownCount(redisKeyShutdown);
|
var remainingFiles = yield editorStat.getShutdownCount(redisKeyShutdown);
|
||||||
let inSavingStatus = yield sqlBase.getCountWithStatus(ctx, commonDefines.FileStatus.SaveVersion);
|
let inSavingStatus = yield sqlBase.getCountWithStatus(ctx, commonDefines.FileStatus.SaveVersion, EXEC_TIMEOUT);
|
||||||
ctx.logger.debug('shutdown remaining files editorStat:%d, db:%d', remainingFiles, inSavingStatus);
|
ctx.logger.debug('shutdown remaining files editorStat:%d, db:%d', remainingFiles, inSavingStatus);
|
||||||
if (!isStartWait && (remainingFiles + inSavingStatus) <= 0) {
|
if (!isStartWait && (remainingFiles + inSavingStatus) <= 0) {
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -38,6 +38,7 @@ const operationContext = require('../../../Common/sources/operationContext');
|
|||||||
const taskResult = require('../../../DocService/sources/taskresult');
|
const taskResult = require('../../../DocService/sources/taskresult');
|
||||||
const commonDefines = require('../../../Common/sources/commondefines');
|
const commonDefines = require('../../../Common/sources/commondefines');
|
||||||
const constants = require('../../../Common/sources/constants');
|
const constants = require('../../../Common/sources/constants');
|
||||||
|
const utils = require("../../../Common/sources/utils");
|
||||||
const configSql = config.get('services.CoAuthoring.sql');
|
const configSql = config.get('services.CoAuthoring.sql');
|
||||||
|
|
||||||
const ctx = new operationContext.Context();
|
const ctx = new operationContext.Context();
|
||||||
@ -420,14 +421,15 @@ describe('Base database connector', function () {
|
|||||||
test('Get Count With Status', async function () {
|
test('Get Count With Status', async function () {
|
||||||
let countWithStatus;
|
let countWithStatus;
|
||||||
let unknownStatus = 99;//to avoid collision with running server
|
let unknownStatus = 99;//to avoid collision with running server
|
||||||
countWithStatus = await baseConnector.getCountWithStatus(ctx, unknownStatus);
|
let EXEC_TIMEOUT = 30000 + utils.getConvertionTimeout(undefined);
|
||||||
|
countWithStatus = await baseConnector.getCountWithStatus(ctx, unknownStatus, EXEC_TIMEOUT);
|
||||||
expect(countWithStatus).toEqual(0);
|
expect(countWithStatus).toEqual(0);
|
||||||
for (const id of getCountWithStatusCase) {
|
for (const id of getCountWithStatusCase) {
|
||||||
const task = createTask(id);
|
const task = createTask(id);
|
||||||
task.status = unknownStatus;
|
task.status = unknownStatus;
|
||||||
await insertIntoResultTable(date, task);
|
await insertIntoResultTable(date, task);
|
||||||
}
|
}
|
||||||
countWithStatus = await baseConnector.getCountWithStatus(ctx, unknownStatus);
|
countWithStatus = await baseConnector.getCountWithStatus(ctx, unknownStatus, EXEC_TIMEOUT);
|
||||||
expect(countWithStatus).toEqual(getCountWithStatusCase.length);
|
expect(countWithStatus).toEqual(getCountWithStatusCase.length);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
Reference in New Issue
Block a user