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


The following commit(s) were added to refs/heads/master by this push:
     new fa37255  KYLIN-4752 Refine server mode checking
fa37255 is described below

commit fa37255b15bdf69e347ec747baf0731ce6634b39
Author: Zhong, Yanghong <nju_y...@apache.org>
AuthorDate: Wed Sep 9 14:01:34 2020 +0800

    KYLIN-4752 Refine server mode checking
---
 .../java/org/apache/kylin/common/ServerMode.java   | 71 ----------------------
 .../org/apache/kylin/common/util/ServerMode.java   |  5 +-
 .../kylin/job/impl/curator/CuratorScheduler.java   |  4 +-
 .../job/impl/threadpool/DefaultScheduler.java      | 11 ++--
 .../job/impl/threadpool/DistributedScheduler.java  | 11 ++--
 .../kylin/rest/service/AclTableMigrationTool.java  |  3 +-
 .../apache/kylin/rest/service/QueryService.java    |  8 +--
 7 files changed, 22 insertions(+), 91 deletions(-)

diff --git a/core-common/src/main/java/org/apache/kylin/common/ServerMode.java 
b/core-common/src/main/java/org/apache/kylin/common/ServerMode.java
deleted file mode 100644
index fb3624d..0000000
--- a/core-common/src/main/java/org/apache/kylin/common/ServerMode.java
+++ /dev/null
@@ -1,71 +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 enum ServerMode {
-
-    ALL("all"), JOB("job"), QUERY("query");
-
-    private final String name;
-
-    ServerMode(String name) {
-        this.name = name;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    private static void validate(KylinConfig config) {
-        assert config != null;
-    }
-
-    private static boolean match(ServerMode serverMode, KylinConfig config) {
-        validate(config);
-        return serverMode.getName().equals(config.getServerMode());
-    }
-
-    public static boolean isJob(KylinConfig config) {
-        return isJobOnly(config) || isAll(config);
-    }
-
-    public static boolean isJob(String serverMode) {
-        return ALL.name.equals(serverMode) || JOB.name.equals(serverMode);
-    }
-
-    public static boolean isJobOnly(KylinConfig config) {
-        return match(JOB, config);
-    }
-
-    public static boolean isQueryOnly(KylinConfig config) {
-        return match(QUERY, config);
-    }
-
-    public static boolean isQuery(KylinConfig config) {
-        return isQueryOnly(config) || isAll(config);
-    }
-
-    public static boolean isAll(KylinConfig config) {
-        return match(ALL, config);
-    }
-
-    public static boolean isQuery(String serverMode) {
-        return ALL.name.equals(serverMode) || QUERY.name.equals(serverMode);
-    }
-}
diff --git 
a/core-common/src/main/java/org/apache/kylin/common/util/ServerMode.java 
b/core-common/src/main/java/org/apache/kylin/common/util/ServerMode.java
index 328a80c..3dfb5cd 100644
--- a/core-common/src/main/java/org/apache/kylin/common/util/ServerMode.java
+++ b/core-common/src/main/java/org/apache/kylin/common/util/ServerMode.java
@@ -62,7 +62,10 @@ public class ServerMode {
     public static final ServerMode SERVER_MODE = getServerMode();
 
     private static ServerMode getServerMode() {
-        KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
+        return getServerMode(KylinConfig.getInstanceFromEnv());
+    }
+
+    public static ServerMode getServerMode(KylinConfig kylinConfig) {
         String serverModeStr = kylinConfig.getServerMode();
         List<String> serverModes = Lists.newArrayList();
         String[] serverModeArray = serverModeStr.split("\\s*,\\s*");
diff --git 
a/core-job/src/main/java/org/apache/kylin/job/impl/curator/CuratorScheduler.java
 
b/core-job/src/main/java/org/apache/kylin/job/impl/curator/CuratorScheduler.java
index 225de32..931dc8a 100644
--- 
a/core-job/src/main/java/org/apache/kylin/job/impl/curator/CuratorScheduler.java
+++ 
b/core-job/src/main/java/org/apache/kylin/job/impl/curator/CuratorScheduler.java
@@ -27,7 +27,7 @@ import java.util.concurrent.atomic.AtomicInteger;
 import org.apache.commons.io.IOUtils;
 import org.apache.curator.framework.CuratorFramework;
 import org.apache.kylin.common.KylinConfig;
-import org.apache.kylin.common.ServerMode;
+import org.apache.kylin.common.util.ServerMode;
 import org.apache.kylin.common.util.ZKUtil;
 import org.apache.kylin.job.Scheduler;
 import org.apache.kylin.job.engine.JobEngineConfig;
@@ -80,7 +80,7 @@ public class CuratorScheduler implements 
Scheduler<AbstractExecutable> {
 
             String jobEnginePath = JOB_ENGINE_LEADER_PATH;
 
-            if (ServerMode.isJob(jobEngineConfig.getConfig())) {
+            if (ServerMode.getServerMode(kylinConfig).canServeJobBuild()) {
                 jobClient = new CuratorLeaderSelector(curatorClient, 
jobEnginePath, restAddress, jobEngineConfig);
                 try {
                     logger.info("start Job Engine, lock path is: " + 
jobEnginePath);
diff --git 
a/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DefaultScheduler.java
 
b/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DefaultScheduler.java
index f45c2e4..9c4573e 100644
--- 
a/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DefaultScheduler.java
+++ 
b/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DefaultScheduler.java
@@ -18,7 +18,6 @@
 
 package org.apache.kylin.job.impl.threadpool;
 
-import java.util.Locale;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
@@ -26,6 +25,7 @@ import java.util.concurrent.SynchronousQueue;
 import java.util.concurrent.ThreadPoolExecutor;
 import java.util.concurrent.TimeUnit;
 
+import org.apache.kylin.common.util.ServerMode;
 import org.apache.kylin.common.util.SetThreadName;
 import org.apache.kylin.job.Scheduler;
 import org.apache.kylin.job.engine.JobEngineConfig;
@@ -35,11 +35,10 @@ import org.apache.kylin.job.execution.AbstractExecutable;
 import org.apache.kylin.job.execution.Executable;
 import org.apache.kylin.job.execution.ExecutableManager;
 import org.apache.kylin.job.lock.JobLock;
+import org.apache.kylin.shaded.com.google.common.collect.Maps;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.kylin.shaded.com.google.common.collect.Maps;
-
 /**
  */
 public class DefaultScheduler implements Scheduler<AbstractExecutable> {
@@ -134,9 +133,9 @@ public class DefaultScheduler implements 
Scheduler<AbstractExecutable> {
     public synchronized void init(JobEngineConfig jobEngineConfig, JobLock 
lock) throws SchedulerException {
         jobLock = lock;
 
-        String serverMode = jobEngineConfig.getConfig().getServerMode();
-        if (!("job".equals(serverMode.toLowerCase(Locale.ROOT)) || 
"all".equals(serverMode.toLowerCase(Locale.ROOT)))) {
-            logger.info("server mode: " + serverMode + ", no need to run job 
scheduler");
+        if (!ServerMode.SERVER_MODE.canServeJobBuild()) {
+            logger.info(
+                    "server mode: " + 
jobEngineConfig.getConfig().getServerMode() + ", no need to run job scheduler");
             return;
         }
         logger.info("Initializing Job Engine ....");
diff --git 
a/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java
 
b/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java
index 77717bc..51e7dc0 100644
--- 
a/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java
+++ 
b/core-job/src/main/java/org/apache/kylin/job/impl/threadpool/DistributedScheduler.java
@@ -20,7 +20,6 @@ package org.apache.kylin.job.impl.threadpool;
 
 import java.io.Closeable;
 import java.io.IOException;
-import java.util.Locale;
 import java.util.Set;
 import java.util.concurrent.CopyOnWriteArraySet;
 import java.util.concurrent.ExecutorService;
@@ -33,6 +32,7 @@ import java.util.concurrent.TimeUnit;
 import org.apache.commons.lang.StringUtils;
 import org.apache.kylin.common.KylinConfig;
 import org.apache.kylin.common.lock.DistributedLock;
+import org.apache.kylin.common.util.ServerMode;
 import org.apache.kylin.common.util.SetThreadName;
 import org.apache.kylin.common.util.StringUtil;
 import org.apache.kylin.common.util.ToolUtil;
@@ -48,11 +48,10 @@ import org.apache.kylin.job.execution.ExecutableManager;
 import org.apache.kylin.job.execution.ExecutableState;
 import org.apache.kylin.job.execution.Output;
 import org.apache.kylin.job.lock.JobLock;
+import org.apache.kylin.shaded.com.google.common.collect.Maps;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import org.apache.kylin.shaded.com.google.common.collect.Maps;
-
 /**
  * schedule the cubing jobs when several job server running with the same 
metadata.
  *
@@ -107,9 +106,9 @@ public class DistributedScheduler implements 
Scheduler<AbstractExecutable> {
 
     @Override
     public synchronized void init(JobEngineConfig jobEngineConfig, JobLock 
jobLock) throws SchedulerException {
-        String serverMode = jobEngineConfig.getConfig().getServerMode();
-        if (!("job".equals(serverMode.toLowerCase(Locale.ROOT)) || 
"all".equals(serverMode.toLowerCase(Locale.ROOT)))) {
-            logger.info("server mode: " + serverMode + ", no need to run job 
scheduler");
+        if (!ServerMode.SERVER_MODE.canServeJobBuild()) {
+            logger.info(
+                    "server mode: " + 
jobEngineConfig.getConfig().getServerMode() + ", no need to run job scheduler");
             return;
         }
         logger.info("Initializing Job Engine ....");
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
 
b/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
index 42db50d..206c618 100644
--- 
a/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
+++ 
b/server-base/src/main/java/org/apache/kylin/rest/service/AclTableMigrationTool.java
@@ -39,6 +39,7 @@ import org.apache.kylin.common.StorageURL;
 import org.apache.kylin.common.persistence.ResourceStore;
 import org.apache.kylin.common.persistence.StringEntity;
 import org.apache.kylin.common.util.Bytes;
+import org.apache.kylin.common.util.ServerMode;
 import org.apache.kylin.rest.security.AclConstant;
 import org.apache.kylin.rest.security.ManagedUser;
 import org.apache.kylin.rest.security.springacl.AclRecord;
@@ -75,7 +76,7 @@ public class AclTableMigrationTool {
             logger.info("Do not need to migrate acl table data");
             return;
         } else {
-            if (!kylinConfig.getServerMode().equals("all")) {
+            if (!ServerMode.SERVER_MODE.canServeAll()) {
                 throw new IllegalStateException(
                         "Please make sure that you have config 
kylin.server.mode=all before migrating data");
             }
diff --git 
a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java 
b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
index 09cc2fa..98edb14 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/service/QueryService.java
@@ -77,6 +77,7 @@ import org.apache.kylin.common.persistence.Serializer;
 import org.apache.kylin.common.util.DBUtils;
 import org.apache.kylin.common.util.JsonUtil;
 import org.apache.kylin.common.util.Pair;
+import org.apache.kylin.common.util.ServerMode;
 import org.apache.kylin.common.util.SetThreadName;
 import org.apache.kylin.common.util.StringUtil;
 import org.apache.kylin.cube.CubeInstance;
@@ -410,10 +411,9 @@ public class QueryService extends BasicService {
         sqlRequest.setUsername(hasher.hash().toString());
 
         KylinConfig kylinConfig = KylinConfig.getInstanceFromEnv();
-        String serverMode = kylinConfig.getServerMode();
-        if 
(!(Constant.SERVER_MODE_QUERY.equals(serverMode.toLowerCase(Locale.ROOT))
-                || 
Constant.SERVER_MODE_ALL.equals(serverMode.toLowerCase(Locale.ROOT)))) {
-            throw new BadRequestException(String.format(Locale.ROOT, 
msg.getQUERY_NOT_ALLOWED(), serverMode));
+        if (!ServerMode.SERVER_MODE.canServeQuery()) {
+            throw new BadRequestException(
+                    String.format(Locale.ROOT, msg.getQUERY_NOT_ALLOWED(), 
kylinConfig.getServerMode()));
         }
         if (StringUtils.isBlank(sqlRequest.getProject())) {
             throw new BadRequestException(msg.getEMPTY_PROJECT_NAME());

Reply via email to