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

xxyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/kylin.git

commit 36fa31b6b983edaa5f50879ae3c31fe6e353530e
Author: Zhong, Yanghong <nju_y...@apache.org>
AuthorDate: Tue Jun 9 10:18:52 2020 +0800

    KYLIN-4485 Minor fix
---
 .../java/org/apache/kylin/common/KConstants.java   | 23 -------------------
 .../org/apache/kylin/common/KylinConfigBase.java   | 26 ++++++++++++++++++----
 .../src/main/resources/kylin-defaults.properties   |  3 +++
 .../kylin/metadata/TableMetadataManager.java       |  2 +-
 .../kylin/rest/service/MigrationService.java       |  2 +-
 .../apache/kylin/rest/service/TableService.java    |  2 +-
 .../kylin/rest/service/AdminServiceTest.java       |  1 +
 .../org/apache/kylin/tool/CubeMigrationCLI.java    |  4 ++--
 webapp/app/js/services/kylinProperties.js          |  8 +++++++
 webapp/app/partials/cubes/cubes.html               |  6 ++---
 10 files changed, 42 insertions(+), 35 deletions(-)

diff --git a/core-common/src/main/java/org/apache/kylin/common/KConstants.java 
b/core-common/src/main/java/org/apache/kylin/common/KConstants.java
deleted file mode 100644
index 5e1723c..0000000
--- a/core-common/src/main/java/org/apache/kylin/common/KConstants.java
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.kylin.common;
-
-public class KConstants {
-    public static final int DEFAULT_SERVICE_PORT = 7070;
-}
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java 
b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
index 7db46a6..041f545 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigBase.java
@@ -204,6 +204,15 @@ public abstract class KylinConfigBase implements 
Serializable {
         }
     }
 
+    final protected String[] getRawStringArray(String prop, String[] dft) {
+        final String property = properties.getProperty(prop);
+        if (!StringUtils.isBlank(property)) {
+            return property.split("\\s*,\\s*");
+        } else {
+            return dft;
+        }
+    }
+
     final protected int[] getOptionalIntArray(String prop, String[] dft) {
         String[] strArray = getOptionalStringArray(prop, dft);
         int[] intArray = new int[strArray.length];
@@ -711,7 +720,7 @@ public abstract class KylinConfigBase implements 
Serializable {
     }
 
     public boolean isRowKeyEncodingAutoConvert() {
-        return 
Boolean.parseBoolean(getOptional("kylin.cube.kylin.cube.rowkey-encoding-auto-convert",
 "true"));
+        return 
Boolean.parseBoolean(getOptional("kylin.cube.rowkey-encoding-auto-convert", 
"true"));
     }
     
     public String getSegmentAdvisor() {
@@ -2136,6 +2145,10 @@ public abstract class KylinConfigBase implements 
Serializable {
         return getOptionalStringArray("kylin.server.cluster-servers", new 
String[0]);
     }
 
+    public String[] getRawRestServers() {
+        return getRawStringArray("kylin.server.cluster-servers", new 
String[0]);
+    }
+
     public String getServerRestAddress() {
         return getOptional("kylin.server.host-address", "localhost:7070");
     }
@@ -2250,6 +2263,7 @@ public abstract class KylinConfigBase implements 
Serializable {
 
     public String getPropertiesWhiteList() {
         return getOptional("kylin.web.properties.whitelist", 
"kylin.web.timezone,kylin.query.cache-enabled,kylin.env,"
+                + "kylin.cube.migration.enabled,"
                 + "kylin.web.hive-limit,kylin.storage.default,"
                 + 
"kylin.engine.default,kylin.web.link-hadoop,kylin.web.link-diagnostic,"
                 + 
"kylin.web.contact-mail,kylin.web.help.length,kylin.web.help.0,kylin.web.help.1,kylin.web.help.2,"
@@ -2367,6 +2381,10 @@ public abstract class KylinConfigBase implements 
Serializable {
     // 
============================================================================
     // CUBE MIGRATION
     // 
============================================================================
+    public boolean isMigrationCubeEnabled() {
+        return 
Boolean.parseBoolean(getOptional("kylin.cube.migration.enabled", FALSE));
+    }
+
     public int getMigrationRuleExpansionRateThreshold() {
         return 
Integer.parseInt(getOptional("kylin.cube.migration.expansion-rate", "5"));
     }
@@ -2395,12 +2413,12 @@ public abstract class KylinConfigBase implements 
Serializable {
         return getOptional("kylin.cube.migration.target-address", 
"sandbox:80");
     }
 
-    public String getMigrationEmailSuffix() {
-        return getOptional("kylin.cube.migration.mail-suffix", "@mail.com");
+    public String getNotificationMailSuffix() {
+        return getOptional("kylin.cube.notification-mail-suffix", "@mail.com");
     }
 
     public boolean isMigrationApplyQueryLatencyRule() {
-        return 
Boolean.parseBoolean(getOptional("kylin.cube.migration.rule-query-latency-enabled",
 "true"));
+        return 
Boolean.parseBoolean(getOptional("kylin.cube.migration.rule-query-latency-enabled",
 TRUE));
     }
 
     // 
============================================================================
diff --git a/core-common/src/main/resources/kylin-defaults.properties 
b/core-common/src/main/resources/kylin-defaults.properties
index 1dee90f..c16419a 100644
--- a/core-common/src/main/resources/kylin-defaults.properties
+++ b/core-common/src/main/resources/kylin-defaults.properties
@@ -77,6 +77,9 @@ kylin.web.link-diagnostic=
 kylin.web.contact-mail=
 kylin.server.external-acl-provider=
 
+### CUBE MIGRATION
+kylin.cube.migration.enabled=false
+
 # Default time filter for job list, 0->current day, 1->last one day, 2->last 
one week, 3->last one year, 4->all
 kylin.web.default-time-filter=1
 
diff --git 
a/core-metadata/src/main/java/org/apache/kylin/metadata/TableMetadataManager.java
 
b/core-metadata/src/main/java/org/apache/kylin/metadata/TableMetadataManager.java
index ec903d4..0d84c34 100644
--- 
a/core-metadata/src/main/java/org/apache/kylin/metadata/TableMetadataManager.java
+++ 
b/core-metadata/src/main/java/org/apache/kylin/metadata/TableMetadataManager.java
@@ -327,7 +327,7 @@ public class TableMetadataManager {
 
     public void reloadTableExtQuietly(String table, String project) {
         try (AutoLock lock = srcExtMapLock.lockForWrite()) {
-            srcExtCrud.reloadQuietly(TableExtDesc.concatResourcePath(table, 
project));
+            srcExtCrud.reloadQuietly(TableDesc.makeResourceName(table, 
project));
         }
     }
 
diff --git 
a/cube-migration/src/main/java/org/apache/kylin/rest/service/MigrationService.java
 
b/cube-migration/src/main/java/org/apache/kylin/rest/service/MigrationService.java
index ca1e71b..67fce7e 100644
--- 
a/cube-migration/src/main/java/org/apache/kylin/rest/service/MigrationService.java
+++ 
b/cube-migration/src/main/java/org/apache/kylin/rest/service/MigrationService.java
@@ -169,7 +169,7 @@ public class MigrationService extends BasicService {
         logger.info("ProjectUUID : " + prjInstance.getUuid());
         Acl acl = accessService.getAcl(ae);
 
-        String mailSuffix = 
KylinConfig.getInstanceFromEnv().getMigrationEmailSuffix();
+        String mailSuffix = 
KylinConfig.getInstanceFromEnv().getNotificationMailSuffix();
         List<String> cubeAdmins = Lists.newArrayList();
         if (acl != null) {
             for (AccessControlEntry ace : acl.getEntries()) {
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/TableService.java 
b/server-base/src/main/java/org/apache/kylin/rest/service/TableService.java
index 0420ad8..0d3f9f0 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/TableService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/TableService.java
@@ -141,7 +141,7 @@ public class TableService extends BasicService {
             hiveTableDesc = pair.getFirst();
         } catch (Exception e) {
             logger.error("Fail to get metadata for hive table {} due to ", 
tableDesc.getIdentity(), e);
-            throw new RuntimeException("Fail to get metadata for hive table" + 
tableDesc.getIdentity());
+            throw new RuntimeException("Fail to get metadata for hive table " 
+ tableDesc.getIdentity());
         }
 
         TableSchemaUpdateChecker.CheckResult result = 
getSchemaUpdateChecker().allowMigrate(tableDesc, hiveTableDesc);
diff --git 
a/server/src/test/java/org/apache/kylin/rest/service/AdminServiceTest.java 
b/server/src/test/java/org/apache/kylin/rest/service/AdminServiceTest.java
index dd098de..e732580 100644
--- a/server/src/test/java/org/apache/kylin/rest/service/AdminServiceTest.java
+++ b/server/src/test/java/org/apache/kylin/rest/service/AdminServiceTest.java
@@ -63,6 +63,7 @@ public class AdminServiceTest extends ServiceTestBase {
                     "kylin.cube.cubeplanner.enabled=true\n" +
                     "kylin.web.help=\n" +
                     "kylin.web.export-allow-other=true\n" +
+                    "kylin.cube.migration.enabled=false\n" +
                     "kylin.web.link-hadoop=\n" +
                     "kylin.web.hide-measures=RAW\n" +
                     "kylin.htrace.show-gui-trace-toggle=false\n" +
diff --git a/tool/src/main/java/org/apache/kylin/tool/CubeMigrationCLI.java 
b/tool/src/main/java/org/apache/kylin/tool/CubeMigrationCLI.java
index 9212d08..e8123dd 100644
--- a/tool/src/main/java/org/apache/kylin/tool/CubeMigrationCLI.java
+++ b/tool/src/main/java/org/apache/kylin/tool/CubeMigrationCLI.java
@@ -645,10 +645,10 @@ public class CubeMigrationCLI extends AbstractApplication 
{
     }
 
     private void updateMeta(KylinConfig config, String projectName, String 
cubeName, DataModelDesc model) {
-        String[] nodes = config.getRestServers();
+        String[] nodes = config.getRawRestServers();
         Map<String, String> tableToProjects = new HashMap<>();
         for (TableRef tableRef : model.getAllTables()) {
-            tableToProjects.put(tableRef.getTableIdentity(), 
tableRef.getTableDesc().getProject());
+            tableToProjects.put(tableRef.getTableIdentity(), projectName);
         }
 
         for (String node : nodes) {
diff --git a/webapp/app/js/services/kylinProperties.js 
b/webapp/app/js/services/kylinProperties.js
index 05fce98..4762753 100644
--- a/webapp/app/js/services/kylinProperties.js
+++ b/webapp/app/js/services/kylinProperties.js
@@ -66,6 +66,14 @@ KylinApp.service('kylinConfig', function (AdminService, 
$log) {
     return false;
   }
 
+  this.isCubeMigrationEnabled = function(){
+    var status = this.getProperty("kylin.cube.migration.enabled").trim();
+    if(status!=='false'){
+      return true;
+    }
+    return false;
+  }
+
   //deprecated
   this.getDeployEnv = function () {
     this.deployEnv = this.getProperty("kylin.env");
diff --git a/webapp/app/partials/cubes/cubes.html 
b/webapp/app/partials/cubes/cubes.html
index dba3c8b..605f4e5 100644
--- a/webapp/app/partials/cubes/cubes.html
+++ b/webapp/app/partials/cubes/cubes.html
@@ -102,7 +102,7 @@
                         <li ng-if="cube.status=='DISABLED' && 
(userService.hasRole('ROLE_ADMIN') || hasPermission('cube',cube, 
permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask))"><a 
ng-click="startDeleteSegment(cube)">Delete Segment</a></li>
                         <li ng-if="cube.status=='DISABLED' && 
(userService.hasRole('ROLE_ADMIN') || hasPermission('cube',cube, 
permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask))"><a 
ng-click="purge(cube)">Purge</a></li>
                         <li ng-if="cube.status!='DESCBROKEN' && 
(userService.hasRole('ROLE_ADMIN') || hasPermission('cube',cube, 
permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask))"><a 
ng-click="cloneCube(cube)">Clone</a></li>
-                        <li ng-if="cube.status=='READY' && 
(userService.hasRole('ROLE_ADMIN') || hasPermission(cube, 
permissions.ADMINISTRATION.mask) || hasPermission(cubeProjectEntity, 
permissions.ADMINISTRATION.mask))"><a ng-click="startMigrateCube(cube, 
0);">Migrate</a></li>
+                        <li ng-if="cube.status=='READY' && 
kylinConfig.isCubeMigrationEnabled() && (userService.hasRole('ROLE_ADMIN') || 
hasPermission(cube, permissions.ADMINISTRATION.mask) || 
hasPermission(cubeProjectEntity, permissions.ADMINISTRATION.mask))"><a 
ng-click="startMigrateCube(cube, 0);">Migrate</a></li>
 
                     </ul>
                     <ul ng-if="(userService.hasRole('ROLE_ADMIN') || 
hasPermission('cube', cube, permissions.ADMINISTRATION.mask, 
permissions.MANAGEMENT.mask, permissions.OPERATION.mask)) && cube.streamingV2 
&& actionLoaded" class="dropdown-menu" role="menu" style="right:0;left:auto;">
@@ -132,8 +132,8 @@
                     <ul class="dropdown-menu" role="menu" 
style="right:0;left:auto;">
                         <li ng-if="cube.status!='READY'"><a 
href="cubes/edit/{{cube.name}}/descriptionjson">Edit CubeDesc</a></li>
                         <li><a 
href="cubes/view/{{cube.name}}/instancejson">View Cube</a></li>
-                        <li ng-if="cube.status=='READY' && 
kylinConfig.getDeployEnv().indexOf('QA') > -1"><a 
ng-click="startMigrateCube(cube, 1)">Approve Migration</a></li>
-                        <li ng-if="cube.status=='READY' && 
kylinConfig.getDeployEnv().indexOf('QA') > -1"><a 
ng-click="startMigrateCube(cube, -1)">Reject Migration</a></li>
+                        <li ng-if="cube.status=='READY' && 
kylinConfig.isCubeMigrationEnabled()"><a ng-click="startMigrateCube(cube, 
1)">Approve Migration</a></li>
+                        <li ng-if="cube.status=='READY' && 
kylinConfig.isCubeMigrationEnabled()"><a ng-click="startMigrateCube(cube, 
-1)">Reject Migration</a></li>
                     </ul>
                 </div>
             </td>

Reply via email to