fix pruneStaleGames function

This commit is contained in:
AlecM33
2022-07-23 22:10:13 -04:00
parent 619d365ef1
commit a891251ac7
3 changed files with 42 additions and 19 deletions

View File

@@ -25,8 +25,7 @@ class GameManager {
this.logger.error('Tried to create game with invalid options: ' + JSON.stringify(gameParams));
return Promise.reject(globals.ERROR_MESSAGE.BAD_CREATE_REQUEST);
} else {
// to avoid excessive memory build-up, every time a game is created, check for and purge any stale games.
// pruneStaleGames(this.activeGameRunner.activeGames, this.activeGameRunner.timerThreads, this.logger);
this.pruneStaleGames();
const newAccessCode = this.generateAccessCode(globals.ACCESS_CODE_CHAR_POOL);
if (newAccessCode === null) {
return Promise.reject(globals.ERROR_MESSAGE.NO_UNIQUE_ACCESS_CODE);
@@ -382,6 +381,23 @@ class GameManager {
return array;
};
pruneStaleGames = () => {
this.activeGameRunner.activeGames.forEach((value, key) => {
if (value.createTime) {
const createDate = new Date(value.createTime);
if (createDate.setHours(createDate.getHours() + globals.STALE_GAME_HOURS) < Date.now()) {
this.logger.info('PRUNING STALE GAME ' + key);
this.activeGameRunner.activeGames.delete(key);
if (this.activeGameRunner.timerThreads[key]) {
this.logger.info('KILLING STALE TIMER PROCESS FOR ' + key);
this.activeGameRunner.timerThreads[key].kill();
delete this.activeGameRunner.timerThreads[key];
}
}
}
});
};
}
function getRandomInt (max) {
@@ -478,23 +494,6 @@ function isNameTaken (game, name) {
|| (game.spectators.find((spectator) => spectator.name.toLowerCase().trim() === processedName));
}
// function pruneStaleGames (activeGames, timerThreads, logger) {
// for (const [accessCode, game] of Object.entries(activeGames)) {
// if (game.createTime) {
// const createDate = new Date(game.createTime);
// if (createDate.setHours(createDate.getHours() + globals.STALE_GAME_HOURS) < Date.now()) {
// logger.info('PRUNING STALE GAME ' + accessCode);
// delete activeGames[accessCode];
// if (timerThreads[accessCode]) {
// logger.info('KILLING STALE TIMER PROCESS FOR ' + accessCode);
// timerThreads[accessCode].kill();
// delete timerThreads[accessCode];
// }
// }
// }
// }
// }
function getGameSize (cards) {
let quantity = 0;
for (const card of cards) {