diff --git a/src/lib/queues/game-metrics/flush-metrics-queue-handler.ts b/src/lib/queues/game-metrics/flush-metrics-queue-handler.ts index 19d0987e..b93b23f2 100644 --- a/src/lib/queues/game-metrics/flush-metrics-queue-handler.ts +++ b/src/lib/queues/game-metrics/flush-metrics-queue-handler.ts @@ -24,9 +24,8 @@ export async function postFlushCheckMemberships(playerIds: string[]) { const em = orm.em.fork() as EntityManager try { const players = await em.repo(Player).find({ id: { $in: playerIds } }) - for (const player of players) { - await player.checkGroupMemberships(em.fork()) - } + const promises = players.map((player) => player.checkGroupMemberships(em)) + await Promise.all(promises) } finally { em.clear() } diff --git a/src/services/api/event-api.service.ts b/src/services/api/event-api.service.ts index 95df9444..125bd41e 100644 --- a/src/services/api/event-api.service.ts +++ b/src/services/api/event-api.service.ts @@ -12,12 +12,14 @@ import Redis from 'ioredis' import { FlushEventsQueueHandler } from '../../lib/queues/game-metrics/flush-events-queue-handler' import PlayerAlias from '../../entities/player-alias' -export default class EventAPIService extends APIService { - private queueHandler: FlushEventsQueueHandler +let queueHandler: FlushEventsQueueHandler +export default class EventAPIService extends APIService { constructor() { super() - this.queueHandler = new FlushEventsQueueHandler() + if (!queueHandler) { + queueHandler = new FlushEventsQueueHandler() + } } @Route({ @@ -137,7 +139,7 @@ export default class EventAPIService extends APIService { } } const eventsArray = Array.from(eventsMap.values()) - await Promise.all(eventsArray.map((event) => this.queueHandler.add(event))) + await Promise.all(eventsArray.map((event) => queueHandler.add(event))) // flush player meta props set by event.setProps() await em.flush() diff --git a/src/services/api/game-stat-api.service.ts b/src/services/api/game-stat-api.service.ts index f15b7cb3..198b6a78 100644 --- a/src/services/api/game-stat-api.service.ts +++ b/src/services/api/game-stat-api.service.ts @@ -17,12 +17,14 @@ import { pageValidation } from '../../lib/pagination/pageValidation' import { DEFAULT_PAGE_SIZE } from '../../lib/pagination/itemsPerPage' import { withResponseCache } from '../../lib/perf/responseCache' -export default class GameStatAPIService extends APIService { - private queueHandler: FlushStatSnapshotsQueueHandler +let queueHandler: FlushStatSnapshotsQueueHandler +export default class GameStatAPIService extends APIService { constructor() { super() - this.queueHandler = new FlushStatSnapshotsQueueHandler() + if (!queueHandler) { + queueHandler = new FlushStatSnapshotsQueueHandler() + } } @Route({ @@ -224,7 +226,7 @@ export default class GameStatAPIService extends APIService { if (continuityDate) { snapshot.createdAt = continuityDate } - await this.queueHandler.add(snapshot) + await queueHandler.add(snapshot) } return {