Add logging on currentWorkspaceMember query (#6706)

We are experiencing slow GetCurrentUser endpoint, this is helping us
troubleshoot
This commit is contained in:
Charles Bochet
2024-08-21 11:48:20 +02:00
committed by GitHub
parent 6caa78008f
commit 614a81860f
6 changed files with 55 additions and 12 deletions

View File

@ -40,18 +40,24 @@ export class UserService extends TypeOrmQueryService<User> {
return null;
}
console.time('loadWorkspaceMember repo');
const workspaceMemberRepository =
await this.twentyORMGlobalManager.getRepositoryForWorkspace<WorkspaceMemberWorkspaceEntity>(
user.defaultWorkspaceId,
'workspaceMember',
);
console.timeEnd('loadWorkspaceMember repo');
console.time('loadWorkspaceMember find');
const workspaceMember = await workspaceMemberRepository.findOne({
where: {
userId: user.id,
},
});
console.timeEnd('loadWorkspaceMember find');
return workspaceMember;
}
@ -60,13 +66,22 @@ export class UserService extends TypeOrmQueryService<User> {
return [];
}
console.time('loadWorkspaceMembers repo');
const workspaceMemberRepository =
await this.twentyORMGlobalManager.getRepositoryForWorkspace<WorkspaceMemberWorkspaceEntity>(
workspace.id,
'workspaceMember',
);
return workspaceMemberRepository.find();
console.timeEnd('loadWorkspaceMembers repo');
console.time('loadWorkspaceMembers find');
const workspaceMembers = workspaceMemberRepository.find();
console.timeEnd('loadWorkspaceMembers find');
return workspaceMembers;
}
async deleteUser(userId: string): Promise<User> {

View File

@ -98,6 +98,7 @@ export class UserResolver {
nullable: true,
})
async workspaceMember(@Parent() user: User): Promise<WorkspaceMember | null> {
console.time('resolver workspaceMember');
const workspaceMember = await this.userService.loadWorkspaceMember(user);
if (workspaceMember && workspaceMember.avatarUrl) {
@ -108,6 +109,7 @@ export class UserResolver {
workspaceMember.avatarUrl = `${workspaceMember.avatarUrl}?token=${avatarUrlToken}`;
}
console.timeEnd('resolver workspaceMember');
// TODO: Fix typing disrepency between Entity and DTO
return workspaceMember as WorkspaceMember | null;
@ -117,6 +119,7 @@ export class UserResolver {
nullable: true,
})
async workspaceMembers(@Parent() user: User): Promise<WorkspaceMember[]> {
console.time('resolver workspaceMembers');
const workspaceMembers = await this.userService.loadWorkspaceMembers(
user.defaultWorkspace,
);
@ -132,6 +135,8 @@ export class UserResolver {
}
}
console.timeEnd('resolver workspaceMembers');
// TODO: Fix typing disrepency between Entity and DTO
return workspaceMembers as WorkspaceMember[];
}