From a8bd11705654e9c76c5db4f26c619262899880e1 Mon Sep 17 00:00:00 2001 From: Anshul Singh Date: Wed, 13 Nov 2024 12:10:03 +0530 Subject: [PATCH] [core] Add guardrails to prevent same dataset from onboarding twice (#1649) [core] Harden dataset persistence for uniqueness Co-authored-by: Anshul Singh --- .../ai/startree/thirdeye/datasource/DataSourceOnboarder.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/thirdeye-core/src/main/java/ai/startree/thirdeye/datasource/DataSourceOnboarder.java b/thirdeye-core/src/main/java/ai/startree/thirdeye/datasource/DataSourceOnboarder.java index bd995450c0..642f965037 100644 --- a/thirdeye-core/src/main/java/ai/startree/thirdeye/datasource/DataSourceOnboarder.java +++ b/thirdeye-core/src/main/java/ai/startree/thirdeye/datasource/DataSourceOnboarder.java @@ -129,6 +129,11 @@ private DatasetConfigDTO persist(final DatasetConfigDTO datasetConfigDTO, final List metrics = datasetConfigDTO.getMetrics(); datasetConfigDTO.setAuth(auth); datasetConfigDTO.setMetrics(null); + final DatasetConfigDTO existingDatasetConfig = datasetConfigManager.findUniqueByNameAndNamespace( + datasetConfigDTO.getDataset(), datasetConfigDTO.namespace()); + checkState(existingDatasetConfig == null, + "Dataset with name %s already exists in namespace %s", + datasetConfigDTO.getDataset(), datasetConfigDTO.namespace()); final Long datasetId = datasetConfigManager.save(datasetConfigDTO); checkState(datasetId != null, "Failed creating dataset %s", datasetConfigDTO.getDataset());