On workspace creation generate sdk client through a job (#19271)

Avoid overloading the workspace creation with the standard and custom
app sdk generation, do through a job

```ts
[Nest] 90397  - 04/02/2026, 4:44:20 PM     LOG [CoreEntityCacheService] Cache stats: localCacheSize=0 memoizerCacheSize=0 memoizerPendingSize=0 entriesByKey={} versionsByKey={}
[Nest] 90397  - 04/02/2026, 4:45:03 PM     LOG [BullMQDriver] Processing job 4325 with name CallWebhookJobsForMetadataJob on queue webhook-queue
[Nest] 90397  - 04/02/2026, 4:45:03 PM     LOG [BullMQDriver] Processing job 1 with name GenerateSdkClientJob on queue workspace-queue
[Nest] 90397  - 04/02/2026, 4:45:03 PM     LOG [BullMQDriver] Job 1 with name GenerateSdkClientJob processed on queue workspace-queue in 0.64ms
[Nest] 90397  - 04/02/2026, 4:45:03 PM     LOG [BullMQDriver] Processing job 2 with name GenerateSdkClientJob on queue workspace-queue
[Nest] 90397  - 04/02/2026, 4:45:03 PM     LOG [BullMQDriver] Job 2 with name GenerateSdkClientJob processed on queue workspace-queue in 0.06ms
[Nest] 90397  - 04/02/2026, 4:45:03 PM     LOG [BullMQDriver] Job 4325 with name CallWebhookJobsForMetadataJob processed on queue webhook-queue in 17.47ms
[Nest] 90397  - 04/02/2026, 4:45:03 PM     LOG [BullMQDriver] Processing job 4326 with name CallWebhookJobsForMetadataJob on queue webhook-queue
```
This commit is contained in:
Paul Rastoin
2026-04-02 17:53:56 +02:00
committed by GitHub
parent 779e613df3
commit a53b9cb68a
4 changed files with 70 additions and 17 deletions
@@ -29,6 +29,8 @@ import { WebhookJobModule } from 'src/engine/metadata-modules/webhook/jobs/webho
import { SubscriptionsModule } from 'src/engine/subscriptions/subscriptions.module';
import { CleanOnboardingWorkspacesJob } from 'src/engine/workspace-manager/workspace-cleaner/crons/clean-onboarding-workspaces.job';
import { CleanSuspendedWorkspacesJob } from 'src/engine/workspace-manager/workspace-cleaner/crons/clean-suspended-workspaces.job';
import { GenerateSdkClientJob } from 'src/engine/core-modules/sdk-client/jobs/generate-sdk-client.job';
import { SdkClientModule } from 'src/engine/core-modules/sdk-client/sdk-client.module';
import { CleanWorkspaceDeletionWarningUserVarsJob } from 'src/engine/workspace-manager/workspace-cleaner/jobs/clean-workspace-deletion-warning-user-vars.job';
import { WorkspaceCleanerModule } from 'src/engine/workspace-manager/workspace-cleaner/workspace-cleaner.module';
import { CalendarEventParticipantManagerModule } from 'src/modules/calendar/calendar-event-participant-manager/calendar-event-participant-manager.module';
@@ -64,6 +66,7 @@ import { WorkflowModule } from 'src/modules/workflow/workflow.module';
WorkflowModule,
FavoriteModule,
NavigationMenuItemModule,
SdkClientModule,
WorkspaceCleanerModule,
SubscriptionsModule,
AuditJobModule,
@@ -80,6 +83,7 @@ import { WorkflowModule } from 'src/modules/workflow/workflow.module';
HandleWorkspaceMemberDeletedJob,
CleanWorkspaceDeletionWarningUserVarsJob,
UpdateWorkspaceMemberEmailJob,
GenerateSdkClientJob,
],
})
export class JobsModule {
@@ -0,0 +1,37 @@
import { Logger } from '@nestjs/common';
import { Processor } from 'src/engine/core-modules/message-queue/decorators/processor.decorator';
import { MessageQueue } from 'src/engine/core-modules/message-queue/message-queue.constants';
import { Process } from 'src/engine/core-modules/message-queue/decorators/process.decorator';
import { SdkClientGenerationService } from 'src/engine/core-modules/sdk-client/sdk-client-generation.service';
export type GenerateSdkClientJobData = {
workspaceId: string;
applicationId: string;
applicationUniversalIdentifier: string;
};
@Processor(MessageQueue.workspaceQueue)
export class GenerateSdkClientJob {
private readonly logger = new Logger(GenerateSdkClientJob.name);
constructor(
private readonly sdkClientGenerationService: SdkClientGenerationService,
) {}
@Process(GenerateSdkClientJob.name)
async handle(data: GenerateSdkClientJobData): Promise<void> {
try {
await this.sdkClientGenerationService.generateSdkClientForApplication({
workspaceId: data.workspaceId,
applicationId: data.applicationId,
applicationUniversalIdentifier: data.applicationUniversalIdentifier,
});
} catch (error) {
this.logger.error(
`Failed to generate SDK client for application "${data.applicationUniversalIdentifier}" in workspace "${data.workspaceId}"`,
error instanceof Error ? error.stack : String(error),
);
}
}
}