From 1168d12018baae9e667828f2b53c7d34e292bddf Mon Sep 17 00:00:00 2001 From: Hongbo Wu Date: Thu, 27 Jun 2024 17:10:58 +0800 Subject: [PATCH] use read replica for raw query --- packages/api/src/jobs/rss/refreshAllFeeds.ts | 15 +++++++++++---- packages/api/src/utils/logger.ts | 2 +- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/api/src/jobs/rss/refreshAllFeeds.ts b/packages/api/src/jobs/rss/refreshAllFeeds.ts index 8d49b6096..a75385187 100644 --- a/packages/api/src/jobs/rss/refreshAllFeeds.ts +++ b/packages/api/src/jobs/rss/refreshAllFeeds.ts @@ -22,8 +22,12 @@ export const refreshAllFeeds = async (db: DataSource): Promise => { refreshID: uuid(), startedAt: new Date().toISOString(), } as RSSRefreshContext - const subscriptionGroups = (await db.createEntityManager().query( - ` + let subscriptionGroups = [] + + const slaveQueryRunner = db.createQueryRunner('slave') + try { + subscriptionGroups = (await slaveQueryRunner.query( + ` SELECT url, ARRAY_AGG(s.id) AS "subscriptionIds", @@ -45,8 +49,11 @@ export const refreshAllFeeds = async (db: DataSource): Promise => { GROUP BY url `, - ['RSS', 'ACTIVE', 'following', 'ACTIVE'] - )) as RssSubscriptionGroup[] + ['RSS', 'ACTIVE', 'following', 'ACTIVE'] + )) as RssSubscriptionGroup[] + } finally { + await slaveQueryRunner.release() + } logger.info(`rss: checking ${subscriptionGroups.length}`, { refreshContext, diff --git a/packages/api/src/utils/logger.ts b/packages/api/src/utils/logger.ts index 7e94ea108..6da5ccaa9 100644 --- a/packages/api/src/utils/logger.ts +++ b/packages/api/src/utils/logger.ts @@ -36,7 +36,7 @@ export class CustomTypeOrmLogger logQuery(query: string, parameters?: any[], queryRunner?: QueryRunner) { this.logger.info(query, { - isReplicated: queryRunner?.connection?.driver?.isReplicated, + replicationMode: queryRunner?.getReplicationMode(), parameters, }) }