You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by xx...@apache.org on 2020/06/15 02:51:26 UTC

[kylin] 10/15: KYLIN-4488 Revert KYLIN-2999

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 e0d92d13e9cb78474f542590127421098667eff9
Author: Zhong, Yanghong <nj...@apache.org>
AuthorDate: Mon May 18 13:14:06 2020 +0800

    KYLIN-4488 Revert KYLIN-2999
---
 .../org/apache/kylin/common/KylinConfigBase.java   | 25 +----------
 .../kylin/rest/controller/CubeController.java      |  7 ----
 .../org/apache/kylin/rest/service/CubeService.java | 49 ----------------------
 .../kylin/rest/service/AdminServiceTest.java       |  1 -
 webapp/app/js/controllers/cubes.js                 | 29 -------------
 webapp/app/js/services/cubes.js                    |  1 -
 webapp/app/js/services/kylinProperties.js          |  8 ----
 webapp/app/partials/cubes/cubes.html               |  1 -
 8 files changed, 1 insertion(+), 120 deletions(-)

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 62021a9..7db46a6 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
@@ -2257,7 +2257,7 @@ public abstract class KylinConfigBase implements Serializable {
                 + "kylin.web.help,kylin.web.hide-measures,kylin.web.link-streaming-guide,kylin.server.external-acl-provider,"
                 + "kylin.security.profile,kylin.security.additional-profiles,"
                 + "kylin.htrace.show-gui-trace-toggle,kylin.web.export-allow-admin,kylin.web.export-allow-other,"
-                + "kylin.cube.cubeplanner.enabled,kylin.web.dashboard-enabled,kylin.tool.auto-migrate-cube.enabled,"
+                + "kylin.cube.cubeplanner.enabled,kylin.web.dashboard-enabled,"
                 + "kylin.job.scheduler.default,kylin.web.default-time-filter");
     }
 
@@ -2404,29 +2404,6 @@ public abstract class KylinConfigBase implements Serializable {
     }
 
     // ============================================================================
-    // tool
-    // ============================================================================
-    public boolean isAllowAutoMigrateCube() {
-        return Boolean.parseBoolean(getOptional("kylin.tool.auto-migrate-cube.enabled", FALSE));
-    }
-
-    public boolean isAutoMigrateCubeCopyAcl() {
-        return Boolean.parseBoolean(getOptional("kylin.tool.auto-migrate-cube.copy-acl", TRUE));
-    }
-
-    public boolean isAutoMigrateCubePurge() {
-        return Boolean.parseBoolean(getOptional("kylin.tool.auto-migrate-cube.purge-src-cube", TRUE));
-    }
-
-    public String getAutoMigrateCubeSrcConfig() {
-        return getOptional("kylin.tool.auto-migrate-cube.src-config", "");
-    }
-
-    public String getAutoMigrateCubeDestConfig() {
-        return getOptional("kylin.tool.auto-migrate-cube.dest-config", "");
-    }
-
-    // ============================================================================
     // jdbc metadata resource store
     // ============================================================================
 
diff --git a/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java b/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java
index 518e83c..1b5f1e4 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/controller/CubeController.java
@@ -1038,13 +1038,6 @@ public class CubeController extends BasicController {
         }
     }
 
-    @RequestMapping(value = "/{cube}/{project}/migrate", method = { RequestMethod.POST })
-    @ResponseBody
-    public void migrateCube(@PathVariable String cube, @PathVariable String project) {
-        CubeInstance cubeInstance = cubeService.getCubeManager().getCube(cube);
-        cubeService.migrateCube(cubeInstance, project);
-    }
-
     public void setCubeService(CubeService cubeService) {
         this.cubeService = cubeService;
     }
diff --git a/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java b/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java
index 94f24ca..f11f31a 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/CubeService.java
@@ -34,7 +34,6 @@ import org.apache.hadoop.hbase.client.HBaseAdmin;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.lock.DistributedLock;
 import org.apache.kylin.common.persistence.RootPersistentEntity;
-import org.apache.kylin.common.util.CliCommandExecutor;
 import org.apache.kylin.common.util.HadoopUtil;
 import org.apache.kylin.common.util.Pair;
 import org.apache.kylin.cube.CubeInstance;
@@ -51,7 +50,6 @@ import org.apache.kylin.engine.mr.JobBuilderSupport;
 import org.apache.kylin.engine.mr.common.CubeJobLockUtil;
 import org.apache.kylin.engine.mr.common.CuboidRecommenderUtil;
 import org.apache.kylin.job.JobInstance;
-import org.apache.kylin.job.common.PatternedLogger;
 import org.apache.kylin.job.constant.JobStatusEnum;
 import org.apache.kylin.job.constant.JobTimeFilterEnum;
 import org.apache.kylin.job.exception.JobException;
@@ -78,7 +76,6 @@ import org.apache.kylin.metrics.property.QueryCubePropertyEnum;
 import org.apache.kylin.rest.constant.Constant;
 import org.apache.kylin.rest.exception.BadRequestException;
 import org.apache.kylin.rest.exception.ForbiddenException;
-import org.apache.kylin.rest.exception.InternalErrorException;
 import org.apache.kylin.rest.msg.Message;
 import org.apache.kylin.rest.msg.MsgPicker;
 import org.apache.kylin.rest.request.MetricsRequest;
@@ -106,7 +103,6 @@ import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.security.core.context.SecurityContextHolder;
 import org.springframework.stereotype.Component;
 
-import org.apache.kylin.shaded.com.google.common.base.Preconditions;
 import org.apache.kylin.shaded.com.google.common.cache.Cache;
 import org.apache.kylin.shaded.com.google.common.cache.CacheBuilder;
 import org.apache.kylin.shaded.com.google.common.collect.Lists;
@@ -1107,51 +1103,6 @@ public class CubeService extends BasicService implements InitializingBean {
         return queryService.doQueryWithCache(sqlRequest, false).getResults();
     }
 
-    @PreAuthorize(Constant.ACCESS_HAS_ROLE_ADMIN
-            + " or hasPermission(#cube, 'ADMINISTRATION') or hasPermission(#cube, 'MANAGEMENT')")
-    public void migrateCube(CubeInstance cube, String projectName) {
-        KylinConfig config = KylinConfig.getInstanceFromEnv();
-        if (!config.isAllowAutoMigrateCube()) {
-            throw new InternalErrorException("One click migration is disabled, please contact your ADMIN");
-        }
-
-        for (CubeSegment segment : cube.getSegments()) {
-            if (segment.getStatus() != SegmentStatusEnum.READY) {
-                throw new InternalErrorException(
-                        "At least one segment is not in READY state. Please check whether there are Running or Error jobs.");
-            }
-        }
-
-        String srcCfgUri = config.getAutoMigrateCubeSrcConfig();
-        String dstCfgUri = config.getAutoMigrateCubeDestConfig();
-
-        Preconditions.checkArgument(StringUtils.isNotEmpty(srcCfgUri), "Source configuration should not be empty.");
-        Preconditions.checkArgument(StringUtils.isNotEmpty(dstCfgUri),
-                "Destination configuration should not be empty.");
-
-        String stringBuilder = ("%s/bin/kylin.sh org.apache.kylin.tool.CubeMigrationCLI %s %s %s %s %s %s true true");
-        String cmd = String.format(Locale.ROOT,
-                stringBuilder,
-                KylinConfig.getKylinHome(),
-                CliCommandExecutor.checkParameterWhiteList(srcCfgUri),
-                CliCommandExecutor.checkParameterWhiteList(dstCfgUri),
-                cube.getName(),
-                CliCommandExecutor.checkParameterWhiteList(projectName),
-                config.isAutoMigrateCubeCopyAcl(),
-                config.isAutoMigrateCubePurge());
-
-        logger.info("One click migration cmd: " + cmd);
-
-        CliCommandExecutor exec = new CliCommandExecutor();
-        PatternedLogger patternedLogger = new PatternedLogger(logger);
-
-        try {
-            exec.execute(cmd, patternedLogger);
-        } catch (IOException e) {
-            throw new InternalErrorException("Failed to perform one-click migrating", e);
-        }
-    }
-
     private class HTableInfoSyncListener extends Broadcaster.Listener {
         @Override
         public void onClearAll(Broadcaster broadcaster) throws IOException {
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 27b59a0..dd098de 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
@@ -59,7 +59,6 @@ public class AdminServiceTest extends ServiceTestBase {
                     "kylin.web.help.length=4\n" +
                     "kylin.web.timezone=\n" +
                     "kylin.server.external-acl-provider=\n" +
-                    "kylin.tool.auto-migrate-cube.enabled=\n" +
                     "kylin.storage.default=2\n" +
                     "kylin.cube.cubeplanner.enabled=true\n" +
                     "kylin.web.help=\n" +
diff --git a/webapp/app/js/controllers/cubes.js b/webapp/app/js/controllers/cubes.js
index 7000581..2d9c032 100644
--- a/webapp/app/js/controllers/cubes.js
+++ b/webapp/app/js/controllers/cubes.js
@@ -359,35 +359,6 @@ KylinApp.controller('CubesCtrl', function ($scope, $q, $routeParams, $location,
       });
     };
 
-    $scope.isAutoMigrateCubeEnabled = function(){
-      return kylinConfig.isAutoMigrateCubeEnabled();
-    };
-
-    $scope.migrateCube = function (cube) {
-      SweetAlert.swal({
-        title: '',
-        text: "The cube will overwrite the same cube in prod env" +
-        "\nMigrating cube will elapse a couple of minutes." +
-        "\nPlease wait.",
-        type: '',
-        showCancelButton: true,
-        confirmButtonColor: '#DD6B55',
-        confirmButtonText: "Yes",
-        closeOnConfirm: true
-      }, function(isConfirm) {
-        if(isConfirm){
-          loadingRequest.show();
-          CubeService.autoMigrate({cubeId: cube.name, propName: $scope.projectModel.selectedProject}, {}, function (result) {
-            loadingRequest.hide();
-            MessageBox.successNotify(cube.name + ' migrate successfully!');
-          },function(e){
-            loadingRequest.hide();
-            SweetAlert.swal('Migrate failed!', "Please contact your ADMIN.", 'error');
-          });
-        }
-      });
-    };
-
     $scope.startJobSubmit = function (cube) {
 
       $scope.metaModel={
diff --git a/webapp/app/js/services/cubes.js b/webapp/app/js/services/cubes.js
index 52cb8fe..65a4d5d 100644
--- a/webapp/app/js/services/cubes.js
+++ b/webapp/app/js/services/cubes.js
@@ -79,7 +79,6 @@ KylinApp.factory('CubeService', ['$resource', function ($resource, config) {
       }
     },
     optimize: {method: 'PUT', params: {action: 'optimize'}, isArray: false},
-    autoMigrate: {method: 'POST', params: {action: 'migrate'}, isArray: false},
     lookupRefresh: {method: 'PUT', params: {action: 'refresh_lookup'}, isArray: false},
     checkDuplicateCubeName: {method: 'GET', params: {action: 'validate'}, isArray: false}
   });
diff --git a/webapp/app/js/services/kylinProperties.js b/webapp/app/js/services/kylinProperties.js
index 05d0621..05fce98 100644
--- a/webapp/app/js/services/kylinProperties.js
+++ b/webapp/app/js/services/kylinProperties.js
@@ -167,14 +167,6 @@ KylinApp.service('kylinConfig', function (AdminService, $log) {
     return angular.isString(_config);
   }
 
-  this.isAutoMigrateCubeEnabled = function(){
-    var status = this.getProperty("kylin.tool.auto-migrate-cube.enabled").trim();
-    if(status && status =='true'){
-      return true;
-    }
-    return false;
-  }
-
   this.getSourceType = function(){
     this.sourceType = this.getProperty("kylin.source.default").trim();
     if (!this.sourceType) {
diff --git a/webapp/app/partials/cubes/cubes.html b/webapp/app/partials/cubes/cubes.html
index fd176f7..65ebc87 100644
--- a/webapp/app/partials/cubes/cubes.html
+++ b/webapp/app/partials/cubes/cubes.html
@@ -102,7 +102,6 @@
                         <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' && isAutoMigrateCubeEnabled() && (userService.hasRole('ROLE_ADMIN') || hasPermission('cube',cube, permissions.ADMINISTRATION.mask, permissions.MANAGEMENT.mask)) "><a ng-click="migrateCube(cube)">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;">