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 <[email protected]>
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());