From 7a222c6aae9697e673d2b5942fa2dc25630dff90 Mon Sep 17 00:00:00 2001 From: Iain Sproat <68657+iainsproat@users.noreply.github.com> Date: Wed, 20 Aug 2025 13:54:15 +0100 Subject: [PATCH] chore(feature flags): remove legacyIfcImporterEnabled & experimentalIfcImporterEnabled (#5270) - experimentalIfcImporterEnabled is now assumed to be permanently true - legacyIfcImporterEnabled is now assumed to be permanently false --- packages/fileimport-service/.env.example | 2 -- .../fileimport-service/src/controller/daemon.ts | 14 ++------------ .../fileimport-service/src/nextGen/jobProcessor.ts | 9 +++------ packages/shared/src/environment/featureFlags.ts | 2 -- packages/shared/src/environment/index.ts | 12 ------------ .../templates/fileimport_service/deployment.yml | 8 -------- .../templates/ifc_import_service/deployment.yml | 4 ---- utils/helm/speckle-server/values.schema.json | 12 +----------- utils/helm/speckle-server/values.yaml | 10 ++++------ 9 files changed, 10 insertions(+), 63 deletions(-) diff --git a/packages/fileimport-service/.env.example b/packages/fileimport-service/.env.example index 767e91e0b..3e68740f0 100644 --- a/packages/fileimport-service/.env.example +++ b/packages/fileimport-service/.env.example @@ -4,8 +4,6 @@ POSTGRES_MAX_CONNECTIONS_FILE_IMPORT_SERVICE='1' POSTGRES_CONNECTION_ACQUIRE_TIMEOUT_MILLIS='16000' POSTGRES_CONNECTION_CREATE_TIMEOUT_MILLIS='5000' FF_WORKSPACES_MULTI_REGION_ENABLED=false -FF_LEGACY_IFC_IMPORTER_ENABLED=true -FF_EXPERIMENTAL_IFC_IMPORTER_ENABLED=false FF_NEXT_GEN_FILE_IMPORTER_ENABLED=false REDIS_URL="redis://127.0.0.1:6379" diff --git a/packages/fileimport-service/src/controller/daemon.ts b/packages/fileimport-service/src/controller/daemon.ts index f14a5f612..095d4fb16 100644 --- a/packages/fileimport-service/src/controller/daemon.ts +++ b/packages/fileimport-service/src/controller/daemon.ts @@ -19,10 +19,6 @@ import { getConnectionSettings, obfuscateConnectionString } from '@speckle/shared/environment/db' -import { getFeatureFlags } from '@speckle/shared/environment' - -const { FF_LEGACY_IFC_IMPORTER_ENABLED, FF_EXPERIMENTAL_IFC_IMPORTER_ENABLED } = - getFeatureFlags() const HEALTHCHECK_FILE_PATH = '/tmp/last_successful_query' @@ -179,10 +175,7 @@ async function doTask( taskLogger.info('Triggering importer for {fileType}') if (info.fileType.toLowerCase() === 'ifc') { - if ( - info.fileName.toLowerCase().endsWith('.legacyimporter.ifc') || - FF_LEGACY_IFC_IMPORTER_ENABLED - ) { + if (info.fileName.toLowerCase().endsWith('.legacyimporter.ifc')) { await runProcessWithTimeout( taskLogger, process.env['NODE_BINARY_PATH'] || 'node', @@ -206,10 +199,7 @@ async function doTask( TIME_LIMIT, TMP_RESULTS_PATH ) - } else if ( - info.fileName.toLowerCase().endsWith('.dotnetimporter.ifc') || - !FF_EXPERIMENTAL_IFC_IMPORTER_ENABLED - ) { + } else if (info.fileName.toLowerCase().endsWith('.dotnetimporter.ifc')) { await runProcessWithTimeout( taskLogger, process.env['DOTNET_BINARY_PATH'] || 'dotnet', diff --git a/packages/fileimport-service/src/nextGen/jobProcessor.ts b/packages/fileimport-service/src/nextGen/jobProcessor.ts index b0262d853..f5ad26363 100644 --- a/packages/fileimport-service/src/nextGen/jobProcessor.ts +++ b/packages/fileimport-service/src/nextGen/jobProcessor.ts @@ -11,9 +11,6 @@ import { DOTNET_BINARY_PATH, RHINO_IMPORTER_PATH } from './config.js' import { getIfcDllPath } from '@/controller/helpers/env.js' import { z } from 'zod' import { TIME_MS } from '@speckle/shared' -import { getFeatureFlags } from '@speckle/shared/environment' - -const { FF_EXPERIMENTAL_IFC_IMPORTER_ENABLED } = getFeatureFlags() const jobSuccess = z.object({ success: z.literal(true), @@ -123,9 +120,9 @@ export const jobProcessor = async ({ switch (fileType) { case 'ifc': parserUsed = 'ifc' - const useDotnetIfcImporter = - job.fileName.toLowerCase().endsWith('.dotnetimporter.ifc') || - !FF_EXPERIMENTAL_IFC_IMPORTER_ENABLED + const useDotnetIfcImporter = job.fileName + .toLowerCase() + .endsWith('.dotnetimporter.ifc') if (useDotnetIfcImporter) { await runProcessWithTimeout( diff --git a/packages/shared/src/environment/featureFlags.ts b/packages/shared/src/environment/featureFlags.ts index e1d55c8b6..bb4ee6cad 100644 --- a/packages/shared/src/environment/featureFlags.ts +++ b/packages/shared/src/environment/featureFlags.ts @@ -19,8 +19,6 @@ export type FeatureFlags = { FF_RHINO_FILE_IMPORTER_ENABLED: boolean FF_BACKGROUND_JOBS_ENABLED: boolean FF_LEGACY_FILE_IMPORTS_ENABLED: boolean - FF_LEGACY_IFC_IMPORTER_ENABLED: boolean - FF_EXPERIMENTAL_IFC_IMPORTER_ENABLED: boolean FF_ACC_INTEGRATION_ENABLED: boolean FF_SAVED_VIEWS_ENABLED: boolean FF_USERS_INVITE_SCOPE_IS_PUBLIC: boolean diff --git a/packages/shared/src/environment/index.ts b/packages/shared/src/environment/index.ts index c047a193f..56ba1ac6c 100644 --- a/packages/shared/src/environment/index.ts +++ b/packages/shared/src/environment/index.ts @@ -134,18 +134,6 @@ export const parseFeatureFlags = ( 'Enables the legacy file importer. This proxies file uploads via REST API on the server instead of directly PUTing files to S3 via pre-signed urls.', defaults: { _: false } }, - FF_LEGACY_IFC_IMPORTER_ENABLED: { - schema: z.boolean(), - description: - 'Enables the legacy javascript based webIFC file importer (pre-2025). Even if disabled this importer can be accessed by appending `.legacyimporter.ifc` to the uploaded file name. This is deprecated and will be removed in the future.', - defaults: { _: false } - }, - FF_EXPERIMENTAL_IFC_IMPORTER_ENABLED: { - schema: z.boolean(), - description: - 'Enables the IFC file importer based on IFCOpenShell (as of July 2025). Even if enabled, the previous webIFC & .Net importer can be accessed by appending `.dotnetimporter.ifc` to the uploaded file name.', - defaults: { _: false } - }, FF_ACC_INTEGRATION_ENABLED: { schema: z.boolean(), description: diff --git a/utils/helm/speckle-server/templates/fileimport_service/deployment.yml b/utils/helm/speckle-server/templates/fileimport_service/deployment.yml index 0c77694d1..1c979cc66 100644 --- a/utils/helm/speckle-server/templates/fileimport_service/deployment.yml +++ b/utils/helm/speckle-server/templates/fileimport_service/deployment.yml @@ -184,14 +184,6 @@ spec: - name: FF_NEXT_GEN_FILE_IMPORTER_ENABLED value: {{ .Values.featureFlags.nextGenFileImporterEnabled | quote }} {{- end }} - {{- if .Values.featureFlags.experimentalIfcImporterEnabled }} - - name: FF_EXPERIMENTAL_IFC_IMPORTER_ENABLED - value: {{ .Values.featureFlags.experimentalIfcImporterEnabled | quote }} - {{- end }} - {{- if .Values.featureFlags.legacyIfcImporterEnabled }} - - name: FF_LEGACY_IFC_IMPORTER_ENABLED - value: {{ .Values.featureFlags.legacyIfcImporterEnabled | quote }} - {{- end }} {{- with .Values.fileimport_service.additionalEnvVars }} {{- toYaml . | nindent 10}} {{- end }} diff --git a/utils/helm/speckle-server/templates/ifc_import_service/deployment.yml b/utils/helm/speckle-server/templates/ifc_import_service/deployment.yml index 45256ac46..409f0c3f5 100644 --- a/utils/helm/speckle-server/templates/ifc_import_service/deployment.yml +++ b/utils/helm/speckle-server/templates/ifc_import_service/deployment.yml @@ -103,10 +103,6 @@ spec: - name: FILE_IMPORT_TIME_LIMIT_MIN value: {{ .Values.file_import_time_limit_min | quote }} - {{- if .Values.featureFlags.experimentalIfcImporterEnabled }} - - name: FF_EXPERIMENTAL_IFC_IMPORTER_ENABLED - value: {{ .Values.featureFlags.experimentalIfcImporterEnabled | quote }} - {{- end }} {{- with .Values.ifc_import_service.additionalEnvVars }} {{- toYaml . | nindent 10}} {{- end }} diff --git a/utils/helm/speckle-server/values.schema.json b/utils/helm/speckle-server/values.schema.json index 37b285540..fc16ca99d 100644 --- a/utils/helm/speckle-server/values.schema.json +++ b/utils/helm/speckle-server/values.schema.json @@ -115,16 +115,6 @@ "description": "Enables the legacy file upload mechanism, using REST API to proxy file uploads via the server", "default": false }, - "experimentalIfcImporterEnabled": { - "type": "boolean", - "description": "Enables the ability to parse IFC files using the experimental IFC importer", - "default": false - }, - "legacyIfcImporterEnabled": { - "type": "boolean", - "description": "Enables the ability to parse IFC files using the legacy IFC importer.", - "default": false - }, "backgroundJobsEnabled": { "type": "boolean", "description": "Enables the ability to run background jobs (such as the IFC importer) in Speckle", @@ -2336,7 +2326,7 @@ "properties": { "enabled": { "type": "boolean", - "description": "If enabled, the File Import Service will be deployed within the cluster.", + "description": "If enabled, the Legacy File Import Service will be deployed within the cluster.", "default": true }, "replicas": { diff --git a/utils/helm/speckle-server/values.yaml b/utils/helm/speckle-server/values.yaml index 2780b5f65..547c69c62 100644 --- a/utils/helm/speckle-server/values.yaml +++ b/utils/helm/speckle-server/values.yaml @@ -67,10 +67,6 @@ featureFlags: nextGenFileImporterEnabled: false ## @param featureFlags.legacyFileImportsEnabled Enables the legacy file upload mechanism, using REST API to proxy file uploads via the server legacyFileImportsEnabled: false - ## @param featureFlags.experimentalIfcImporterEnabled Enables the ability to parse IFC files using the experimental IFC importer - experimentalIfcImporterEnabled: false - ## @param featureFlags.legacyIfcImporterEnabled Enables the ability to parse IFC files using the legacy IFC importer. - legacyIfcImporterEnabled: false ## @param featureFlags.backgroundJobsEnabled Enables the ability to run background jobs (such as the IFC importer) in Speckle backgroundJobsEnabled: false ## @param featureFlags.accIntegrationEnabled Enables the ability to import data from ACC @@ -1407,11 +1403,13 @@ webhook_service: ## @section File Import Service ## @descriptionStart -## Defines parameters related to the File Import Service component of Speckle. +## DEPRECATED +## Defines parameters related to the Legacy file Import Service component of Speckle. +## Use the ifc_import_service instead. ## @descriptionEnd ## fileimport_service: - ## @param fileimport_service.enabled If enabled, the File Import Service will be deployed within the cluster. + ## @param fileimport_service.enabled If enabled, the Legacy File Import Service will be deployed within the cluster. enabled: true ## @param fileimport_service.replicas The number of instances of the FileImport Service pod to be deployed within the cluster. ##