From 6cb3bdc567a57d288709330c06f6441989b5f6db Mon Sep 17 00:00:00 2001 From: "devin-ai-integration[bot]" <158243242+devin-ai-integration[bot]@users.noreply.github.com> Date: Sat, 17 May 2025 17:05:45 -0400 Subject: [PATCH] perf: add p-limit to _getUsersAvailability to limit concurrent executions to 10 (#21374) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> Co-authored-by: keith@cal.com --- packages/lib/getUserAvailability.ts | 33 +++++++++++++++++------------ 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/packages/lib/getUserAvailability.ts b/packages/lib/getUserAvailability.ts index 2e5076ed45..e8d9dd6c76 100644 --- a/packages/lib/getUserAvailability.ts +++ b/packages/lib/getUserAvailability.ts @@ -7,6 +7,7 @@ import type { EventType as PrismaEventType, } from "@prisma/client"; import * as Sentry from "@sentry/nextjs"; +import pLimit from "p-limit"; import { z } from "zod"; import type { Dayjs } from "@calcom/dayjs"; @@ -699,22 +700,26 @@ type GetUsersAvailabilityProps = { }; const _getUsersAvailability = async ({ users, query, initialData }: GetUsersAvailabilityProps) => { + const limit = pLimit(10); + return await Promise.all( users.map((user) => - _getUserAvailability( - { - ...query, - userId: user.id, - username: user.username || "", - }, - initialData - ? { - ...initialData, - user, - currentBookings: user.currentBookings, - outOfOfficeDays: user.outOfOfficeDays, - } - : undefined + limit(() => + _getUserAvailability( + { + ...query, + userId: user.id, + username: user.username || "", + }, + initialData + ? { + ...initialData, + user, + currentBookings: user.currentBookings, + outOfOfficeDays: user.outOfOfficeDays, + } + : undefined + ) ) ) );