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());