in src/dataServices/dynamoDbDataService.ts [239:260]
async throttleExportRequestsIfNeeded(requesterUserId: string, tenantId?: string) {
const jobStatusesToThrottle: ExportJobStatus[] = ['canceling', 'in-progress'];
const exportJobItems = await this.getJobsWithExportStatuses(jobStatusesToThrottle);
if (exportJobItems) {
const numberOfConcurrentUserRequest = exportJobItems.filter((item) => {
return DynamoDBConverter.unmarshall(item).jobOwnerId === requesterUserId;
}).length;
let concurrentTenantRequest = exportJobItems;
if (tenantId) {
concurrentTenantRequest = exportJobItems.filter((item) => {
return DynamoDBConverter.unmarshall(item).tenantId === tenantId;
});
}
if (
numberOfConcurrentUserRequest >= this.MAXIMUM_CONCURRENT_REQUEST_PER_USER ||
concurrentTenantRequest.length >= this.MAXIMUM_SYSTEM_LEVEL_CONCURRENT_REQUESTS
) {
throw new TooManyConcurrentExportRequestsError();
}
}
}