fix: Implemented a p-limit in PullRequestsDashboardProvider to stop unlimited parallelism.

Signed-off-by: Marley Powell <Marley.Powell@exclaimer.com>
This commit is contained in:
Marley Powell
2022-01-04 09:17:49 +00:00
parent 30d3623bf1
commit dc55aa89f6
2 changed files with 29 additions and 20 deletions
@@ -27,6 +27,7 @@
"azure-devops-node-api": "^11.0.1",
"express": "^4.17.1",
"express-promise-router": "^4.1.0",
"p-limit": "^3.1.0",
"winston": "^3.2.1",
"yn": "^4.0.0"
},
@@ -23,6 +23,7 @@ import {
import { AzureDevOpsApi } from './AzureDevOpsApi';
import { Logger } from 'winston';
import limiterFactory from 'p-limit';
export class PullRequestsDashboardProvider {
private teams = new Map<string, Team>();
@@ -58,33 +59,40 @@ export class PullRequestsDashboardProvider {
this.teams = new Map<string, Team>();
this.teamMembers = new Map<string, TeamMember>();
const limiter = limiterFactory(5);
await Promise.all(
teams.map(async team => {
const teamId = team.id;
teams.map(team =>
limiter(async () => {
const teamId = team.id;
if (teamId) {
const teamMembers = await this.azureDevOpsApi.getTeamMembers(team);
if (teamId) {
const teamMembers = await this.azureDevOpsApi.getTeamMembers(team);
if (teamMembers) {
team.members = teamMembers.reduce((arr, teamMember) => {
const teamMemberId = teamMember.id;
if (teamMembers) {
team.members = teamMembers.reduce((arr, teamMember) => {
const teamMemberId = teamMember.id;
if (teamMemberId) {
arr.push(teamMemberId);
const memberOf = [
...(this.teamMembers.get(teamMemberId)?.memberOf ?? []),
teamId,
];
this.teamMembers.set(teamMemberId, { ...teamMember, memberOf });
}
if (teamMemberId) {
arr.push(teamMemberId);
const memberOf = [
...(this.teamMembers.get(teamMemberId)?.memberOf ?? []),
teamId,
];
this.teamMembers.set(teamMemberId, {
...teamMember,
memberOf,
});
}
return arr;
}, [] as string[]);
return arr;
}, [] as string[]);
this.teams.set(teamId, team);
this.teams.set(teamId, team);
}
}
}
}),
}),
),
);
}