Investigate memory leak (#19213)

In search for cache leak + Remove old instrumentation
This commit is contained in:
Etienne
2026-04-02 13:23:10 +02:00
committed by GitHub
parent 885ab8b444
commit 579714b62f
16 changed files with 87 additions and 113 deletions
@@ -1,5 +1,3 @@
import { Logger } from '@nestjs/common';
import { type Request } from 'express';
import { DocumentNode, parse } from 'graphql';
import { type Plugin } from 'graphql-yoga';
@@ -7,15 +5,12 @@ import { FeatureFlagKey } from 'twenty-shared/types';
import { isNull } from '@sniptt/guards';
import { type DirectExecutionService } from 'src/engine/api/graphql/direct-execution/direct-execution.service';
import { queryTimingContextStorage } from 'src/engine/core-modules/graphql/storage/query-timing-context.storage';
import { computeSkipWorkspaceSchemaCreation } from 'src/engine/api/graphql/direct-execution/utils/compute-skip-workspace-schema-creation.util';
import { findOperationDefinition } from 'src/engine/api/graphql/direct-execution/utils/find-operation-definition.util';
import { hasOnlyGeneratedWorkspaceResolvers } from 'src/engine/api/graphql/direct-execution/utils/has-only-generated-workspace-resolvers.util';
import { isSubscriptionOperation } from 'src/engine/api/graphql/direct-execution/utils/is-subscription-operation.util';
import { type FeatureFlagService } from 'src/engine/core-modules/feature-flag/services/feature-flag.service';
const logger = new Logger('GraphQLQueryTiming');
export type DirectExecutionPluginConfig = {
directExecutionService: DirectExecutionService;
featureFlagService: FeatureFlagService;
@@ -89,33 +84,6 @@ export function useDirectExecution(
return;
}
const isTimingEnabled = await config.featureFlagService.isFeatureEnabled(
FeatureFlagKey.IS_GRAPHQL_QUERY_TIMING_ENABLED,
req.workspace.id,
);
const resolvedOperationName = operationName ?? 'Anonymous';
if (isTimingEnabled) {
const startTime = performance.now();
const timedResult = await queryTimingContextStorage.run(true, () =>
config.directExecutionService.execute(req, document),
);
const durationMs = (performance.now() - startTime).toFixed(2);
logger.log(
`[direct-execution] ${resolvedOperationName}${durationMs}ms (workspace: ${req.workspace.id})`,
);
if (isNull(timedResult)) {
return;
}
return endResponse(Response.json(timedResult));
}
const result = await config.directExecutionService.execute(req, document);
if (isNull(result)) {