From 3d33954036b5f6cd239690dd3b7bcb05fc718ba1 Mon Sep 17 00:00:00 2001 From: Denis Bykhov Date: Mon, 30 Jun 2025 14:24:13 +0500 Subject: [PATCH] Reduce getWorkspacesInfo calls (#9408) * Reduce getWorkspacesInfo calls Signed-off-by: Denis Bykhov * Fix formatting Signed-off-by: Denis Bykhov --------- Signed-off-by: Denis Bykhov --- .../calendar/pod-calendar/src/calendarController.ts | 2 ++ services/calendar/pod-calendar/src/kvsUtils.ts | 9 +++++++++ services/calendar/pod-calendar/src/pushHandler.ts | 11 +---------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/services/calendar/pod-calendar/src/calendarController.ts b/services/calendar/pod-calendar/src/calendarController.ts index 40b790d6b8..bdd5445349 100644 --- a/services/calendar/pod-calendar/src/calendarController.ts +++ b/services/calendar/pod-calendar/src/calendarController.ts @@ -25,6 +25,7 @@ import { import config from './config' import { getIntegrations } from './integrations' import { WorkspaceClient } from './workspaceClient' +import { cleanUserByEmail } from './kvsUtils' export class CalendarController { protected static _instance: CalendarController @@ -66,6 +67,7 @@ export class CalendarController { } private async runAll (groups: Map): Promise { + await cleanUserByEmail() const ids = [...groups.keys()] if (ids.length === 0) return const limiter = new RateLimiter(config.InitLimit) diff --git a/services/calendar/pod-calendar/src/kvsUtils.ts b/services/calendar/pod-calendar/src/kvsUtils.ts index f5f368ab1e..18b9efa14d 100644 --- a/services/calendar/pod-calendar/src/kvsUtils.ts +++ b/services/calendar/pod-calendar/src/kvsUtils.ts @@ -89,3 +89,12 @@ export async function removeUserByEmail (user: User, email: GoogleEmail): Promis await client.setValue(key, newCurr) } } + +export async function cleanUserByEmail (): Promise { + const client = getKvsClient() + const keys = await client.listKeys(`${CALENDAR_INTEGRATION}:users:`) + if (keys == null) return + for (const key in keys) { + await client.deleteKey(key) + } +} diff --git a/services/calendar/pod-calendar/src/pushHandler.ts b/services/calendar/pod-calendar/src/pushHandler.ts index b421f05e92..8f29952749 100644 --- a/services/calendar/pod-calendar/src/pushHandler.ts +++ b/services/calendar/pod-calendar/src/pushHandler.ts @@ -14,7 +14,7 @@ // import { AccountClient } from '@hcengineering/account-client' -import { isActiveMode, MeasureContext, TxOperations } from '@hcengineering/core' +import { MeasureContext, TxOperations } from '@hcengineering/core' import { getClient } from './client' import { getUserByEmail, removeUserByEmail } from './kvsUtils' import { IncomingSyncManager } from './sync' @@ -65,16 +65,7 @@ export class PushHandler { async push (email: GoogleEmail, mode: 'events' | 'calendar', calendarId?: string): Promise { const tokens = await getUserByEmail(email) this.ctx.info('push', { email, mode, calendarId, tokens: tokens.length }) - const workspaces = [...new Set(tokens.map((p) => p.workspace))] - const infos = await this.accountClient.getWorkspacesInfo(workspaces) for (const token of tokens) { - const info = infos.find((p) => p.uuid === token.workspace) - if (info === undefined) { - continue - } - if (!isActiveMode(info.mode)) { - continue - } await this.sync(token, mode === 'events' ? calendarId ?? null : null) } }