diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/DatasourceStorageServiceImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/DatasourceStorageServiceImpl.java index 3a732d8e92..641b547fac 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/DatasourceStorageServiceImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/DatasourceStorageServiceImpl.java @@ -4,7 +4,6 @@ import com.appsmith.server.helpers.PluginExecutorHelper; import com.appsmith.server.repositories.DatasourceStorageRepository; import com.appsmith.server.services.ce.DatasourceStorageServiceCEImpl; import com.appsmith.server.solutions.DatasourcePermission; -import com.appsmith.server.solutions.DatasourceStorageTransferSolution; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; @@ -13,17 +12,10 @@ import org.springframework.stereotype.Service; public class DatasourceStorageServiceImpl extends DatasourceStorageServiceCEImpl implements DatasourceStorageService { public DatasourceStorageServiceImpl( DatasourceStorageRepository repository, - DatasourceStorageTransferSolution datasourceStorageTransferSolution, DatasourcePermission datasourcePermission, PluginService pluginService, PluginExecutorHelper pluginExecutorHelper, AnalyticsService analyticsService) { - super( - repository, - datasourceStorageTransferSolution, - datasourcePermission, - pluginService, - pluginExecutorHelper, - analyticsService); + super(repository, datasourcePermission, pluginService, pluginExecutorHelper, analyticsService); } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/DatasourceStorageServiceCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/DatasourceStorageServiceCEImpl.java index fc7b751088..1d88a68a9d 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/DatasourceStorageServiceCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/services/ce/DatasourceStorageServiceCEImpl.java @@ -16,11 +16,7 @@ import com.appsmith.server.repositories.DatasourceStorageRepository; import com.appsmith.server.services.AnalyticsService; import com.appsmith.server.services.PluginService; import com.appsmith.server.solutions.DatasourcePermission; -import com.appsmith.server.solutions.DatasourceStorageTransferSolution; -import com.mongodb.MongoServerException; import lombok.extern.slf4j.Slf4j; -import org.springframework.dao.DuplicateKeyException; -import org.springframework.data.mongodb.UncategorizedMongoDbException; import org.springframework.util.CollectionUtils; import org.springframework.util.StringUtils; import reactor.core.publisher.Flux; @@ -39,7 +35,6 @@ import static java.lang.Boolean.TRUE; public class DatasourceStorageServiceCEImpl implements DatasourceStorageServiceCE { protected final DatasourceStorageRepository repository; - private final DatasourceStorageTransferSolution datasourceStorageTransferSolution; private final DatasourcePermission datasourcePermission; private final PluginService pluginService; private final PluginExecutorHelper pluginExecutorHelper; @@ -47,13 +42,11 @@ public class DatasourceStorageServiceCEImpl implements DatasourceStorageServiceC public DatasourceStorageServiceCEImpl( DatasourceStorageRepository repository, - DatasourceStorageTransferSolution datasourceStorageTransferSolution, DatasourcePermission datasourcePermission, PluginService pluginService, PluginExecutorHelper pluginExecutorHelper, AnalyticsService analyticsService) { this.repository = repository; - this.datasourceStorageTransferSolution = datasourceStorageTransferSolution; this.datasourcePermission = datasourcePermission; this.pluginService = pluginService; this.pluginExecutorHelper = pluginExecutorHelper; @@ -86,21 +79,8 @@ public class DatasourceStorageServiceCEImpl implements DatasourceStorageServiceC datasourceStorage.prepareTransientFields(datasource); return datasourceStorage; }) - // TODO: This is a temporary call being made till storage transfer migrations are done - .switchIfEmpty(Mono.defer(() -> - datasourceStorageTransferSolution.transferAndGetDatasourceStorage(datasource, environmentId))) - .onErrorResume( - e -> e instanceof DuplicateKeyException - || e instanceof MongoServerException - || e instanceof UncategorizedMongoDbException, - error -> { - if (error.getMessage() != null - && error.getMessage().contains("datasource_storage_compound_index")) { - // The duplicate key error is because of the `name` field. - return findByDatasourceAndEnvironmentId(datasource, environmentId); - } - return Mono.error(error); - }); + .switchIfEmpty( + Mono.error(new AppsmithException(AppsmithError.NO_RESOURCE_FOUND, FieldName.DATASOURCE))); } @Override @@ -112,22 +92,12 @@ public class DatasourceStorageServiceCEImpl implements DatasourceStorageServiceC @Override public Flux findByDatasource(Datasource datasource) { return this.findByDatasourceId(datasource.getId()) - // TODO: This is a temporary call being made till storage transfer migrations are done - .switchIfEmpty(Mono.defer( - () -> datasourceStorageTransferSolution.transferToFallbackEnvironmentAndGetDatasourceStorage( - datasource))) - .onErrorResume( - e -> e instanceof DuplicateKeyException - || e instanceof MongoServerException - || e instanceof UncategorizedMongoDbException, - error -> { - if (error.getMessage() != null - && error.getMessage().contains("datasource_storage_compound_index")) { - // The duplicate key error is because of the `name` field. - return findByDatasource(datasource); - } - return Mono.error(error); - }); + .map(datasourceStorage -> { + datasourceStorage.prepareTransientFields(datasource); + return datasourceStorage; + }) + .switchIfEmpty( + Mono.error(new AppsmithException(AppsmithError.NO_RESOURCE_FOUND, FieldName.DATASOURCE))); } protected Mono findByDatasourceIdAndEnvironmentId(String datasourceId, String environmentId) { diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ActionExecutionSolutionImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ActionExecutionSolutionImpl.java index 4a8d6600f8..53965d47de 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ActionExecutionSolutionImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ActionExecutionSolutionImpl.java @@ -35,8 +35,7 @@ public class ActionExecutionSolutionImpl extends ActionExecutionSolutionCEImpl i AuthenticationValidator authenticationValidator, DatasourcePermission datasourcePermission, AnalyticsService analyticsService, - DatasourceStorageService datasourceStorageService, - DatasourceStorageTransferSolution datasourceStorageTransferSolution) { + DatasourceStorageService datasourceStorageService) { super( newActionService, actionPermission, @@ -53,7 +52,6 @@ public class ActionExecutionSolutionImpl extends ActionExecutionSolutionCEImpl i authenticationValidator, datasourcePermission, analyticsService, - datasourceStorageService, - datasourceStorageTransferSolution); + datasourceStorageService); } } diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/DatasourceStorageTransferSolution.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/DatasourceStorageTransferSolution.java deleted file mode 100644 index d5aefba83e..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/DatasourceStorageTransferSolution.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.appsmith.server.solutions; - -import com.appsmith.server.solutions.ce.DatasourceStorageTransferSolutionCE; - -public interface DatasourceStorageTransferSolution extends DatasourceStorageTransferSolutionCE {} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/DatasourceStorageTransferSolutionImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/DatasourceStorageTransferSolutionImpl.java deleted file mode 100644 index 79e2e9ab86..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/DatasourceStorageTransferSolutionImpl.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.appsmith.server.solutions; - -import com.appsmith.server.repositories.DatasourceRepository; -import com.appsmith.server.repositories.DatasourceStorageRepository; -import com.appsmith.server.services.WorkspaceService; -import com.appsmith.server.solutions.ce.DatasourceStorageTransferSolutionCEImpl; -import lombok.extern.slf4j.Slf4j; -import org.springframework.stereotype.Service; - -@Service -@Slf4j -public class DatasourceStorageTransferSolutionImpl extends DatasourceStorageTransferSolutionCEImpl - implements DatasourceStorageTransferSolution { - public DatasourceStorageTransferSolutionImpl( - DatasourceRepository datasourceRepository, - DatasourceStorageRepository datasourceStorageRepository, - WorkspaceService workspaceService) { - super(datasourceRepository, datasourceStorageRepository, workspaceService); - } -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImpl.java index 141ee5d739..456887a778 100644 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImpl.java +++ b/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImpl.java @@ -41,7 +41,6 @@ import com.appsmith.server.services.PluginService; import com.appsmith.server.services.SessionUserService; import com.appsmith.server.solutions.ActionPermission; import com.appsmith.server.solutions.DatasourcePermission; -import com.appsmith.server.solutions.DatasourceStorageTransferSolution; import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.JsonNode; @@ -122,7 +121,6 @@ public class ActionExecutionSolutionCEImpl implements ActionExecutionSolutionCE static final String EXECUTE_ACTION_DTO = "executeActionDTO"; static final String PARAMETER_MAP = "parameterMap"; List patternList = new ArrayList<>(); - private DatasourceStorageTransferSolution datasourceStorageTransferSolution; public ActionExecutionSolutionCEImpl( NewActionService newActionService, @@ -140,8 +138,7 @@ public class ActionExecutionSolutionCEImpl implements ActionExecutionSolutionCE AuthenticationValidator authenticationValidator, DatasourcePermission datasourcePermission, AnalyticsService analyticsService, - DatasourceStorageService datasourceStorageService, - DatasourceStorageTransferSolution datasourceStorageTransferSolution) { + DatasourceStorageService datasourceStorageService) { this.newActionService = newActionService; this.actionPermission = actionPermission; this.observationRegistry = observationRegistry; @@ -158,7 +155,6 @@ public class ActionExecutionSolutionCEImpl implements ActionExecutionSolutionCE this.datasourcePermission = datasourcePermission; this.analyticsService = analyticsService; this.datasourceStorageService = datasourceStorageService; - this.datasourceStorageTransferSolution = datasourceStorageTransferSolution; this.patternList.add(Pattern.compile(PARAM_KEY_REGEX)); this.patternList.add(Pattern.compile(BLOB_KEY_REGEX)); @@ -508,9 +504,8 @@ public class ActionExecutionSolutionCEImpl implements ActionExecutionSolutionCE } else if (datasource == null) { datasourceStorageMono = Mono.empty(); } else { - // For embedded datasources, we are simply relying on datasource configuration property - datasourceStorageMono = Mono.just(datasourceStorageTransferSolution.initializeDatasourceStorage( - datasource, environmentId)); + // For embedded datasource, we are simply relying on datasource configuration property + datasourceStorageMono = Mono.just(new DatasourceStorage(datasource, environmentId)); } return datasourceStorageMono diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/DatasourceStorageTransferSolutionCE.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/DatasourceStorageTransferSolutionCE.java deleted file mode 100644 index 6e183a8a0d..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/DatasourceStorageTransferSolutionCE.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.appsmith.server.solutions.ce; - -import com.appsmith.external.models.Datasource; -import com.appsmith.external.models.DatasourceStorage; -import reactor.core.publisher.Mono; - -public interface DatasourceStorageTransferSolutionCE { - DatasourceStorage initializeDatasourceStorage(Datasource datasource, String environmentId); - - Mono transferAndGetDatasourceStorage(Datasource datasource, String environmentId); - - Mono transferToFallbackEnvironmentAndGetDatasourceStorage(Datasource datasource); -} diff --git a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/DatasourceStorageTransferSolutionCEImpl.java b/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/DatasourceStorageTransferSolutionCEImpl.java deleted file mode 100644 index 3a22896344..0000000000 --- a/app/server/appsmith-server/src/main/java/com/appsmith/server/solutions/ce/DatasourceStorageTransferSolutionCEImpl.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.appsmith.server.solutions.ce; - -import com.appsmith.external.models.Datasource; -import com.appsmith.external.models.DatasourceStorage; -import com.appsmith.server.constants.FieldName; -import com.appsmith.server.repositories.DatasourceRepository; -import com.appsmith.server.repositories.DatasourceStorageRepository; -import com.appsmith.server.services.WorkspaceService; -import lombok.extern.slf4j.Slf4j; -import org.jetbrains.annotations.NotNull; -import org.springframework.transaction.annotation.Transactional; -import reactor.core.publisher.Mono; -import reactor.util.function.Tuple2; - -@Slf4j -public class DatasourceStorageTransferSolutionCEImpl implements DatasourceStorageTransferSolutionCE { - - private final DatasourceRepository datasourceRepository; - - private final DatasourceStorageRepository datasourceStorageRepository; - private final WorkspaceService workspaceService; - - public DatasourceStorageTransferSolutionCEImpl( - DatasourceRepository datasourceRepository, - DatasourceStorageRepository datasourceStorageRepository, - WorkspaceService workspaceService) { - this.datasourceRepository = datasourceRepository; - this.datasourceStorageRepository = datasourceStorageRepository; - this.workspaceService = workspaceService; - } - - @Override - public DatasourceStorage initializeDatasourceStorage(Datasource datasource, String environmentId) { - return new DatasourceStorage(datasource, FieldName.UNUSED_ENVIRONMENT_ID); - } - - @Transactional - @Override - public Mono transferAndGetDatasourceStorage(Datasource datasource, String environmentId) { - return this.transferDatasourceStorage(datasource, environmentId); - } - - @NotNull private Mono transferDatasourceStorage(Datasource datasource, String environmentId) { - final DatasourceStorage datasourceStorage = this.initializeDatasourceStorage(datasource, environmentId); - datasource.setDatasourceConfiguration(null); - datasource.setInvalids(null); - datasource.setHasDatasourceStorage(true); - return datasourceStorageRepository - .save(datasourceStorage) - .zipWhen(datasourceStorage1 -> datasourceRepository.save(datasource)) - .map(Tuple2::getT1); - } - - @Transactional - @Override - public Mono transferToFallbackEnvironmentAndGetDatasourceStorage(Datasource datasource) { - - return workspaceService - .getDefaultEnvironmentId(datasource.getWorkspaceId()) - .flatMap(environmentId -> transferDatasourceStorage(datasource, environmentId)); - } -} diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/solutions/DatasourceTriggerSolutionTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/solutions/DatasourceTriggerSolutionTest.java index e21cb13bc7..1da434b9f4 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/solutions/DatasourceTriggerSolutionTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/solutions/DatasourceTriggerSolutionTest.java @@ -146,19 +146,19 @@ public class DatasourceTriggerSolutionTest { Mockito.when(datasourceStructureSolution.getStructure(Mockito.anyString(), Mockito.anyBoolean(), Mockito.any())) .thenReturn(Mono.just(testStructure)); - Datasource datasource = datasourceService + datasourceService .findById(datasourceId, datasourcePermission.getReadPermission()) .block(); Mockito.doReturn(Mono.just(Boolean.TRUE)).when(featureFlagService).check(Mockito.any()); Mono tableNameMono = datasourceTriggerSolution.trigger( datasourceId, - null, + defaultEnvironmentId, new TriggerRequestDTO("ENTITY_SELECTOR", Map.of(), ClientDataDisplayType.DROP_DOWN)); Mono columnNamesMono = datasourceTriggerSolution.trigger( datasourceId, - null, + defaultEnvironmentId, new TriggerRequestDTO( "ENTITY_SELECTOR", Map.of("tableName", "Table1"), ClientDataDisplayType.DROP_DOWN)); diff --git a/app/server/appsmith-server/src/test/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImplTest.java b/app/server/appsmith-server/src/test/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImplTest.java index 25a5fd5988..e59fb46d1c 100644 --- a/app/server/appsmith-server/src/test/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImplTest.java +++ b/app/server/appsmith-server/src/test/java/com/appsmith/server/solutions/ce/ActionExecutionSolutionCEImplTest.java @@ -23,7 +23,6 @@ import com.appsmith.server.services.PluginService; import com.appsmith.server.services.SessionUserService; import com.appsmith.server.solutions.ActionPermission; import com.appsmith.server.solutions.DatasourcePermission; -import com.appsmith.server.solutions.DatasourceStorageTransferSolution; import com.fasterxml.jackson.databind.ObjectMapper; import io.micrometer.observation.ObservationRegistry; import org.junit.jupiter.api.BeforeEach; @@ -123,9 +122,6 @@ class ActionExecutionSolutionCEImplTest { @MockBean DatasourceStorageService datasourceStorageService; - @MockBean - DatasourceStorageTransferSolution datasourceStorageTransferSolution; - private BodyExtractor.Context context; private Map hints; @@ -148,8 +144,7 @@ class ActionExecutionSolutionCEImplTest { authenticationValidator, datasourcePermission, analyticsService, - datasourceStorageService, - datasourceStorageTransferSolution); + datasourceStorageService); ObservationRegistry.ObservationConfig mockObservationConfig = Mockito.mock(ObservationRegistry.ObservationConfig.class);