From 28adcbffb9cacea4e4ab4674b87cff8bdcd945b7 Mon Sep 17 00:00:00 2001 From: Weiko Date: Tue, 21 Jul 2026 18:52:51 +0200 Subject: [PATCH] Remove dead code from legacy metadataVersion cache mechanism (#23122) - Drop unused setORMEntitySchema/getORMEntitySchema from WorkspaceCacheStorageService - Drop MetadataObjectMetadataMaps cache key, only referenced by the flush loop - Drop never-populated workspaceMetadataVersion field from workspace auth context type and builders - Drop unthrown TwentyORMExceptionCode.METADATA_VERSION_MISMATCH - Drop unused WorkspaceMetadataVersionModule imports in field-metadata and object-metadata modules Review in cubic --- .../auth/types/workspace-auth-context.type.ts | 1 - .../utils/build-api-key-auth-context.util.ts | 2 -- .../build-application-auth-context.util.ts | 2 -- ...nding-activation-user-auth-context.util.ts | 2 -- .../utils/build-system-auth-context.util.ts | 2 -- .../utils/build-user-auth-context.util.ts | 2 -- .../field-metadata/field-metadata.module.ts | 2 -- .../object-metadata/object-metadata.module.ts | 2 -- .../exceptions/twenty-orm.exception.ts | 3 --- .../workspace-cache-storage.service.ts | 27 ------------------- 10 files changed, 45 deletions(-) diff --git a/packages/twenty-server/src/engine/core-modules/auth/types/workspace-auth-context.type.ts b/packages/twenty-server/src/engine/core-modules/auth/types/workspace-auth-context.type.ts index 0461f84664..ec1b79e768 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/types/workspace-auth-context.type.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/types/workspace-auth-context.type.ts @@ -10,7 +10,6 @@ export type WorkspaceAuthContextType = interface BaseWorkspaceAuthContext { type: WorkspaceAuthContextType; workspace: NonNullable; - workspaceMetadataVersion?: string; } export interface ApiKeyWorkspaceAuthContext extends BaseWorkspaceAuthContext { diff --git a/packages/twenty-server/src/engine/core-modules/auth/utils/build-api-key-auth-context.util.ts b/packages/twenty-server/src/engine/core-modules/auth/utils/build-api-key-auth-context.util.ts index 0eb06238bb..ae3cef5d4a 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/utils/build-api-key-auth-context.util.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/utils/build-api-key-auth-context.util.ts @@ -4,7 +4,6 @@ import { type ApiKeyWorkspaceAuthContext } from 'src/engine/core-modules/auth/ty type ApiKeyAuthContextInput = { workspace: NonNullable; apiKey: NonNullable; - workspaceMetadataVersion?: string; }; export const buildApiKeyAuthContext = ( @@ -14,6 +13,5 @@ export const buildApiKeyAuthContext = ( type: 'apiKey', workspace: input.workspace, apiKey: input.apiKey, - workspaceMetadataVersion: input.workspaceMetadataVersion, }; }; diff --git a/packages/twenty-server/src/engine/core-modules/auth/utils/build-application-auth-context.util.ts b/packages/twenty-server/src/engine/core-modules/auth/utils/build-application-auth-context.util.ts index b71ce31622..d827b09671 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/utils/build-application-auth-context.util.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/utils/build-application-auth-context.util.ts @@ -4,7 +4,6 @@ import { type ApplicationWorkspaceAuthContext } from 'src/engine/core-modules/au type ApplicationAuthContextInput = { workspace: NonNullable; application: NonNullable; - workspaceMetadataVersion?: string; }; export const buildApplicationAuthContext = ( @@ -14,6 +13,5 @@ export const buildApplicationAuthContext = ( type: 'application', workspace: input.workspace, application: input.application, - workspaceMetadataVersion: input.workspaceMetadataVersion, }; }; diff --git a/packages/twenty-server/src/engine/core-modules/auth/utils/build-pending-activation-user-auth-context.util.ts b/packages/twenty-server/src/engine/core-modules/auth/utils/build-pending-activation-user-auth-context.util.ts index 1f2a8add98..b8e41a30d1 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/utils/build-pending-activation-user-auth-context.util.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/utils/build-pending-activation-user-auth-context.util.ts @@ -5,7 +5,6 @@ type PendingActivationUserAuthContextInput = { workspace: NonNullable; userWorkspaceId: NonNullable; user: NonNullable; - workspaceMetadataVersion?: string; }; export const buildPendingActivationUserAuthContext = ( @@ -16,6 +15,5 @@ export const buildPendingActivationUserAuthContext = ( workspace: input.workspace, userWorkspaceId: input.userWorkspaceId, user: input.user, - workspaceMetadataVersion: input.workspaceMetadataVersion, }; }; diff --git a/packages/twenty-server/src/engine/core-modules/auth/utils/build-system-auth-context.util.ts b/packages/twenty-server/src/engine/core-modules/auth/utils/build-system-auth-context.util.ts index b6be58fe90..192e99aee0 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/utils/build-system-auth-context.util.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/utils/build-system-auth-context.util.ts @@ -3,7 +3,6 @@ import { type SystemWorkspaceAuthContext } from 'src/engine/core-modules/auth/ty type SystemAuthContextInput = { workspace: NonNullable; - workspaceMetadataVersion?: string; }; export const buildSystemAuthContext = ( @@ -12,6 +11,5 @@ export const buildSystemAuthContext = ( return { type: 'system', workspace: input.workspace, - workspaceMetadataVersion: input.workspaceMetadataVersion, }; }; diff --git a/packages/twenty-server/src/engine/core-modules/auth/utils/build-user-auth-context.util.ts b/packages/twenty-server/src/engine/core-modules/auth/utils/build-user-auth-context.util.ts index 12cee0a64e..d3cc9d37ae 100644 --- a/packages/twenty-server/src/engine/core-modules/auth/utils/build-user-auth-context.util.ts +++ b/packages/twenty-server/src/engine/core-modules/auth/utils/build-user-auth-context.util.ts @@ -7,7 +7,6 @@ type UserAuthContextInput = { user: NonNullable; workspaceMemberId: NonNullable; workspaceMember: NonNullable; - workspaceMetadataVersion?: string; }; export const buildUserAuthContext = ( @@ -20,6 +19,5 @@ export const buildUserAuthContext = ( user: input.user, workspaceMemberId: input.workspaceMemberId, workspaceMember: input.workspaceMember, - workspaceMetadataVersion: input.workspaceMetadataVersion, }; }; diff --git a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.module.ts b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.module.ts index ab236fb6a2..0d50f5b2ac 100644 --- a/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/field-metadata/field-metadata.module.ts @@ -30,7 +30,6 @@ import { ViewFieldModule } from 'src/engine/metadata-modules/view-field/view-fie import { ViewFilterModule } from 'src/engine/metadata-modules/view-filter/view-filter.module'; import { ViewGroupModule } from 'src/engine/metadata-modules/view-group/view-group.module'; import { ViewModule } from 'src/engine/metadata-modules/view/view.module'; -import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module'; import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace-migration/workspace-migration.module'; import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache.module'; @@ -54,7 +53,6 @@ import { UpdateFieldInput } from './dtos/update-field.input'; FieldMetadataEntity, ObjectMetadataEntity, ]), - WorkspaceMetadataVersionModule, WorkspaceCacheStorageModule, ObjectMetadataModule, TypeORMModule, diff --git a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts index bce3ce92fa..77a588aa50 100644 --- a/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts +++ b/packages/twenty-server/src/engine/metadata-modules/object-metadata/object-metadata.module.ts @@ -35,7 +35,6 @@ import { PermissionsGraphqlApiExceptionFilter } from 'src/engine/metadata-module import { ViewFieldModule } from 'src/engine/metadata-modules/view-field/view-field.module'; import { ViewEntity } from 'src/engine/metadata-modules/view/entities/view.entity'; import { ViewModule } from 'src/engine/metadata-modules/view/view.module'; -import { WorkspaceMetadataVersionModule } from 'src/engine/metadata-modules/workspace-metadata-version/workspace-metadata-version.module'; import { WorkspaceCacheStorageModule } from 'src/engine/workspace-cache-storage/workspace-cache-storage.module'; import { WorkspaceCacheModule } from 'src/engine/workspace-cache/workspace-cache.module'; import { WorkspaceDataSourceModule } from 'src/engine/workspace-datasource/workspace-datasource.module'; @@ -59,7 +58,6 @@ import { WorkspaceMigrationModule } from 'src/engine/workspace-manager/workspace ]), TypeOrmModule.forFeature([FeatureFlagEntity, ViewEntity]), ApplicationModule, - WorkspaceMetadataVersionModule, IndexMetadataModule, PermissionsModule, WorkspaceCacheStorageModule, diff --git a/packages/twenty-server/src/engine/twenty-orm/exceptions/twenty-orm.exception.ts b/packages/twenty-server/src/engine/twenty-orm/exceptions/twenty-orm.exception.ts index 95dd81e3e3..8d6f08e776 100644 --- a/packages/twenty-server/src/engine/twenty-orm/exceptions/twenty-orm.exception.ts +++ b/packages/twenty-server/src/engine/twenty-orm/exceptions/twenty-orm.exception.ts @@ -6,7 +6,6 @@ import { STANDARD_ERROR_MESSAGE } from 'src/engine/api/common/common-query-runne import { CustomException } from 'src/utils/custom-exception'; export enum TwentyORMExceptionCode { - METADATA_VERSION_MISMATCH = 'METADATA_VERSION_MISMATCH', WORKSPACE_SCHEMA_NOT_FOUND = 'WORKSPACE_SCHEMA_NOT_FOUND', ROLES_PERMISSIONS_VERSION_NOT_FOUND = 'ROLES_PERMISSIONS_VERSION_NOT_FOUND', FEATURE_FLAG_MAP_VERSION_NOT_FOUND = 'FEATURE_FLAG_MAP_VERSION_NOT_FOUND', @@ -33,8 +32,6 @@ const getTwentyORMExceptionUserFriendlyMessage = ( code: TwentyORMExceptionCode, ) => { switch (code) { - case TwentyORMExceptionCode.METADATA_VERSION_MISMATCH: - return msg`Data version mismatch. Please refresh and try again.`; case TwentyORMExceptionCode.WORKSPACE_SCHEMA_NOT_FOUND: return msg`Workspace schema not found.`; case TwentyORMExceptionCode.ROLES_PERMISSIONS_VERSION_NOT_FOUND: diff --git a/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts b/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts index 9c01288fdd..8b1dfe79d6 100644 --- a/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts +++ b/packages/twenty-server/src/engine/workspace-cache-storage/workspace-cache-storage.service.ts @@ -3,7 +3,6 @@ import { Injectable } from '@nestjs/common'; import crypto from 'crypto'; import { isDefined } from 'twenty-shared/utils'; -import { type EntitySchemaOptions } from 'typeorm'; import { type FeatureFlagMap } from 'src/engine/core-modules/feature-flag/interfaces/feature-flag-map.interface'; @@ -14,7 +13,6 @@ import { CacheStorageNamespace } from 'src/engine/core-modules/cache-storage/typ export const METADATA_VERSIONED_WORKSPACE_CACHE_KEY = { GraphQLTypeDefs: 'graphql:type-defs', MetadataVersion: 'metadata:workspace-metadata-version', - MetadataObjectMetadataMaps: 'metadata:object-metadata-maps', GraphQLUsedScalarNames: 'graphql:used-scalar-names', ORMEntitySchemas: 'orm:entity-schemas', } as const; @@ -44,31 +42,6 @@ export class WorkspaceCacheStorageService { private readonly cacheStorageService: CacheStorageService, ) {} - setORMEntitySchema( - workspaceId: string, - metadataVersion: number, - // oxlint-disable-next-line typescript/no-explicit-any - entitySchemas: EntitySchemaOptions[], - ) { - // oxlint-disable-next-line typescript/no-explicit-any - return this.cacheStorageService.set[]>( - `${METADATA_VERSIONED_WORKSPACE_CACHE_KEY.ORMEntitySchemas}:${workspaceId}:${metadataVersion}`, - entitySchemas, - TTL_ONE_WEEK, - ); - } - - getORMEntitySchema( - workspaceId: string, - metadataVersion: number, - // oxlint-disable-next-line typescript/no-explicit-any - ): Promise[] | undefined> { - // oxlint-disable-next-line typescript/no-explicit-any - return this.cacheStorageService.get[]>( - `${METADATA_VERSIONED_WORKSPACE_CACHE_KEY.ORMEntitySchemas}:${workspaceId}:${metadataVersion}`, - ); - } - setMetadataVersion( workspaceId: string, metadataVersion: number,