Skip to content

Commit 9c3f9aa

Browse files
committedSep 12, 2024··
[feature] Filter old rows in getCountWithStatus while "shutdown"
1 parent dc1932b commit 9c3f9aa

File tree

3 files changed

+10
-6
lines changed

3 files changed

+10
-6
lines changed
 

‎DocService/sources/databaseConnectors/baseConnector.js

+5-3
Original file line numberDiff line numberDiff line change
@@ -297,11 +297,13 @@ function getExpired(ctx, maxCount, expireSeconds) {
297297
}, false, false, values);
298298
});
299299
}
300-
function getCountWithStatus(ctx, status) {
300+
function getCountWithStatus(ctx, status, expireMs) {
301301
return new Promise(function(resolve, reject) {
302302
const values = [];
303-
const sqlParam = addSqlParameter(status, values);
304-
const sqlCommand = `SELECT COUNT(id) AS count FROM ${cfgTableResult} WHERE status=${sqlParam};`;
303+
const expireDate = new Date(Date.now() - expireMs);
304+
const sqlStatus = addSqlParameter(status, values);
305+
const sqlDate = addSqlParameter(expireDate, values);
306+
const sqlCommand = `SELECT COUNT(id) AS count FROM ${cfgTableResult} WHERE status=${sqlStatus} AND last_open_date>${sqlDate};`;
305307
dbInstance.sqlQuery(ctx, sqlCommand, function(error, result) {
306308
if (error) {
307309
reject(error);

‎DocService/sources/shutdown.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ exports.shutdown = function(ctx, editorStat, status) {
7878
break;
7979
}
8080
var remainingFiles = yield editorStat.getShutdownCount(redisKeyShutdown);
81-
let inSavingStatus = yield sqlBase.getCountWithStatus(ctx, commonDefines.FileStatus.SaveVersion);
81+
let inSavingStatus = yield sqlBase.getCountWithStatus(ctx, commonDefines.FileStatus.SaveVersion, EXEC_TIMEOUT);
8282
ctx.logger.debug('shutdown remaining files editorStat:%d, db:%d', remainingFiles, inSavingStatus);
8383
if (!isStartWait && (remainingFiles + inSavingStatus) <= 0) {
8484
break;

‎tests/integration/databaseTests/baseConnector.tests.js

+4-2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ const operationContext = require('../../../Common/sources/operationContext');
3838
const taskResult = require('../../../DocService/sources/taskresult');
3939
const commonDefines = require('../../../Common/sources/commondefines');
4040
const constants = require('../../../Common/sources/constants');
41+
const utils = require("../../../Common/sources/utils");
4142
const configSql = config.get('services.CoAuthoring.sql');
4243

4344
const ctx = new operationContext.Context();
@@ -420,14 +421,15 @@ describe('Base database connector', function () {
420421
test('Get Count With Status', async function () {
421422
let countWithStatus;
422423
let unknownStatus = 99;//to avoid collision with running server
423-
countWithStatus = await baseConnector.getCountWithStatus(ctx, unknownStatus);
424+
let EXEC_TIMEOUT = 30000 + utils.getConvertionTimeout(undefined);
425+
countWithStatus = await baseConnector.getCountWithStatus(ctx, unknownStatus, EXEC_TIMEOUT);
424426
expect(countWithStatus).toEqual(0);
425427
for (const id of getCountWithStatusCase) {
426428
const task = createTask(id);
427429
task.status = unknownStatus;
428430
await insertIntoResultTable(date, task);
429431
}
430-
countWithStatus = await baseConnector.getCountWithStatus(ctx, unknownStatus);
432+
countWithStatus = await baseConnector.getCountWithStatus(ctx, unknownStatus, EXEC_TIMEOUT);
431433
expect(countWithStatus).toEqual(getCountWithStatusCase.length);
432434
});
433435
});

0 commit comments

Comments
 (0)
Please sign in to comment.