async throttleExportRequestsIfNeeded()

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();
            }
        }
    }