You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by sh...@apache.org on 2018/09/11 03:18:24 UTC

[kylin] 01/05: KYLIN-3258 No check for duplicate cube name when creating a hybrid cube

This is an automated email from the ASF dual-hosted git repository.

shaofengshi pushed a commit to branch 2.5.x
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 3e6307473d60036feb8c8497379eb4841d82d093
Author: GinaZhai <na...@kyligence.io>
AuthorDate: Fri Sep 7 11:33:13 2018 +0800

    KYLIN-3258 No check for duplicate cube name when creating a hybrid cube
---
 .../main/java/org/apache/kylin/rest/job/HybridCubeCLI.java | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/server-base/src/main/java/org/apache/kylin/rest/job/HybridCubeCLI.java b/server-base/src/main/java/org/apache/kylin/rest/job/HybridCubeCLI.java
index 48e7f40..e332e1d 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/job/HybridCubeCLI.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/job/HybridCubeCLI.java
@@ -20,11 +20,14 @@ package org.apache.kylin.rest.job;
 
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
 import java.util.List;
 
 import org.apache.commons.cli.Option;
 import org.apache.commons.cli.OptionBuilder;
 import org.apache.commons.cli.Options;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.persistence.ResourceStore;
@@ -145,6 +148,17 @@ public class HybridCubeCLI extends AbstractApplication {
             realizationEntries.add(RealizationEntry.create(RealizationType.CUBE, cube.getName()));
         }
 
+        int realizationEntriesLen = realizationEntries.size();
+        HashSet<RealizationEntry> hashSet = new HashSet<>();
+        for (int i = 0; i < realizationEntriesLen; i++) {
+            hashSet.add(realizationEntries.get(i));
+        }
+        int hashSetLen = hashSet.size();
+        if (realizationEntriesLen != hashSetLen) {
+            Collection<RealizationEntry> duplicateCubes = CollectionUtils.subtract(realizationEntries, hashSet);
+            throw new IllegalArgumentException("The Cubes name does duplicate, could not create: " + duplicateCubes);
+        }
+
         if ("create".equals(action)) {
             if (hybridInstance != null) {
                 throw new IllegalArgumentException("The Hybrid Cube does exist, could not create: " + hybridName);