You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@kylin.apache.org by ma...@apache.org on 2016/06/23 04:04:51 UTC
kylin git commit: KYLIN-1816 More than one base KylinConfig exist in
spring JVM
Repository: kylin
Updated Branches:
refs/heads/master b514ae16a -> 1b0ece4a4
KYLIN-1816 More than one base KylinConfig exist in spring JVM
Project: http://git-wip-us.apache.org/repos/asf/kylin/repo
Commit: http://git-wip-us.apache.org/repos/asf/kylin/commit/1b0ece4a
Tree: http://git-wip-us.apache.org/repos/asf/kylin/tree/1b0ece4a
Diff: http://git-wip-us.apache.org/repos/asf/kylin/diff/1b0ece4a
Branch: refs/heads/master
Commit: 1b0ece4a433ca3417d13a6d5fc7b5c1e503e341b
Parents: b514ae1
Author: Hongbin Ma <ma...@apache.org>
Authored: Thu Jun 23 12:04:32 2016 +0800
Committer: Hongbin Ma <ma...@apache.org>
Committed: Thu Jun 23 12:04:43 2016 +0800
----------------------------------------------------------------------
.../org/apache/kylin/common/KylinConfig.java | 78 +++++++++++++-------
.../org/apache/kylin/common/KylinConfigExt.java | 5 ++
.../kylin/common/restclient/Broadcaster.java | 2 +-
.../common/util/SerializeToByteBuffer.java | 44 +++++++++++
.../java/org/apache/kylin/cube/CubeManager.java | 9 ++-
.../apache/kylin/gridtable/GTScanRequest.java | 13 +++-
.../apache/kylin/dict/DictionaryManager.java | 3 +
.../kylin/dict/lookup/SnapshotManager.java | 21 +++---
.../org/apache/kylin/job/dao/ExecutableDao.java | 3 +
.../kylin/job/execution/AbstractExecutable.java | 2 +-
.../kylin/job/manager/ExecutableManager.java | 3 +
.../realization/RealizationRegistry.java | 3 +
.../kylin/storage/hybrid/HybridManager.java | 2 +-
.../engine/streaming/StreamingManager.java | 2 +-
.../kylin/source/kafka/KafkaConfigManager.java | 2 +-
15 files changed, 147 insertions(+), 45 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
index b4b3c1b..a4024ae 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfig.java
@@ -61,22 +61,28 @@ public class KylinConfig extends KylinConfigBase {
private static KylinConfig ENV_INSTANCE = null;
public static KylinConfig getInstanceFromEnv() {
- if (ENV_INSTANCE == null) {
- try {
- KylinConfig config = loadKylinConfig();
- ENV_INSTANCE = config;
- } catch (IllegalArgumentException e) {
- throw new IllegalStateException("Failed to find KylinConfig ", e);
+ synchronized (KylinConfig.class) {
+ if (ENV_INSTANCE == null) {
+ try {
+ KylinConfig config = loadKylinConfig();
+ logger.info("Initialized a new KylinConfig from getInstanceFromEnv : " + System.identityHashCode(config));
+ ENV_INSTANCE = config;
+ } catch (IllegalArgumentException e) {
+ throw new IllegalStateException("Failed to find KylinConfig ", e);
+ }
}
+ return ENV_INSTANCE;
}
- return ENV_INSTANCE;
}
+ //Only used in test cases!!!
public static void destroyInstance() {
+ logger.info("Destory KylinConfig");
+ dumpStackTrace();
ENV_INSTANCE = null;
}
- public static enum UriType {
+ public enum UriType {
PROPERTIES_FILE, REST_ADDR, LOCAL_FOLDER
}
@@ -150,12 +156,15 @@ public class KylinConfig extends KylinConfigBase {
}
public static void setKylinConfigFromInputStream(InputStream is) {
- if (ENV_INSTANCE == null) {
- try {
- KylinConfig config = createKylinConfigFromInputStream(is);
- ENV_INSTANCE = config;
- } catch (IllegalArgumentException e) {
- throw new IllegalStateException("Failed to find KylinConfig ", e);
+ synchronized (KylinConfig.class) {
+ if (ENV_INSTANCE == null) {
+ try {
+ KylinConfig config = createKylinConfigFromInputStream(is);
+ logger.info("Resetting ENV_INSTANCE by a input stream: " + System.identityHashCode(config));
+ ENV_INSTANCE = config;
+ } catch (IllegalArgumentException e) {
+ throw new IllegalStateException("Failed to find KylinConfig ", e);
+ }
}
}
}
@@ -254,11 +263,11 @@ public class KylinConfig extends KylinConfigBase {
return config;
}
-
+
public static void setSandboxEnvIfPossible() {
File dir1 = new File("../examples/test_case_data/sandbox");
File dir2 = new File("../../kylin/examples/test_case_data/sandbox");
-
+
if (dir1.exists()) {
logger.info("Setting sandbox env, KYLIN_CONF=" + dir1.getAbsolutePath());
ClassUtil.addClasspath(dir1.getAbsolutePath());
@@ -272,11 +281,13 @@ public class KylinConfig extends KylinConfigBase {
// ============================================================================
- public KylinConfig() {
+ private KylinConfig() {
super();
+ logger.info("New KylinConfig " + System.identityHashCode(this));
+ KylinConfig.dumpStackTrace();
}
- public KylinConfig(Properties props) {
+ protected KylinConfig(Properties props) {
super(props);
}
@@ -305,22 +316,19 @@ public class KylinConfig extends KylinConfigBase {
}
}
- private KylinConfig base() {
- if (this instanceof KylinConfigExt)
- return ((KylinConfigExt) this).base;
- else
- return this;
+ public KylinConfig base() {
+ return this;
}
-
+
private int superHashCode() {
return super.hashCode();
}
-
+
@Override
public int hashCode() {
return base().superHashCode();
}
-
+
@Override
public boolean equals(Object another) {
if (!(another instanceof KylinConfig))
@@ -329,7 +337,6 @@ public class KylinConfig extends KylinConfigBase {
return this.base() == ((KylinConfig) another).base();
}
-
public static void writeOverrideProperties(Properties properties) throws IOException {
File propFile = getKylinProperties();
File overrideFile = new File(propFile.getParentFile(), propFile.getName() + ".override");
@@ -362,4 +369,21 @@ public class KylinConfig extends KylinConfigBase {
}
}
+
+ private static void dumpStackTrace() {
+ Thread t = Thread.currentThread();
+ int maxStackTraceDepth = 20;
+ int current = 0;
+
+ StackTraceElement[] stackTrace = t.getStackTrace();
+ StringBuilder buf = new StringBuilder("");
+ buf.append("\n");
+ for (StackTraceElement e : stackTrace) {
+ if (++current > maxStackTraceDepth) {
+ break;
+ }
+ buf.append("\t").append("at ").append(e.toString()).append("\n");
+ }
+ logger.info(buf.toString());
+ }
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java b/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java
index 9443a4a..c5eb300 100644
--- a/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java
+++ b/core-common/src/main/java/org/apache/kylin/common/KylinConfigExt.java
@@ -68,4 +68,9 @@ public class KylinConfigExt extends KylinConfig {
return result;
}
+ @Override
+ public KylinConfig base() {
+ return this.base;
+ }
+
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-common/src/main/java/org/apache/kylin/common/restclient/Broadcaster.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/restclient/Broadcaster.java b/core-common/src/main/java/org/apache/kylin/common/restclient/Broadcaster.java
index f8cd3be..b87cc25 100644
--- a/core-common/src/main/java/org/apache/kylin/common/restclient/Broadcaster.java
+++ b/core-common/src/main/java/org/apache/kylin/common/restclient/Broadcaster.java
@@ -62,7 +62,7 @@ public class Broadcaster {
r = new Broadcaster(config);
CACHE.put(config, r);
if (CACHE.size() > 1) {
- logger.warn("More than one cubemanager singleton exist");
+ logger.warn("More than one singleton exist");
}
return r;
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-common/src/main/java/org/apache/kylin/common/util/SerializeToByteBuffer.java
----------------------------------------------------------------------
diff --git a/core-common/src/main/java/org/apache/kylin/common/util/SerializeToByteBuffer.java b/core-common/src/main/java/org/apache/kylin/common/util/SerializeToByteBuffer.java
new file mode 100644
index 0000000..a2252a4
--- /dev/null
+++ b/core-common/src/main/java/org/apache/kylin/common/util/SerializeToByteBuffer.java
@@ -0,0 +1,44 @@
+/*
+ * 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.util;
+
+import java.nio.BufferOverflowException;
+import java.nio.ByteBuffer;
+
+public class SerializeToByteBuffer {
+
+ public interface IWriter {
+ void write(ByteBuffer byteBuffer) throws BufferOverflowException;
+ }
+
+ public static ByteBuffer retrySerialize(IWriter writer) {
+ int bufferSize = BytesSerializer.SERIALIZE_BUFFER_SIZE;
+
+ while (true) {
+ try {
+ ByteBuffer byteBuffer = ByteBuffer.allocate(bufferSize);
+ writer.write(byteBuffer);
+ return byteBuffer;
+ } catch (BufferOverflowException boe) {
+ System.out.println("Buffer size cannot hold the raw scans, resizing to 4 times : " + bufferSize);
+ bufferSize *= 4;
+ }
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
index caa2765..b62bc05 100644
--- a/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
+++ b/core-cube/src/main/java/org/apache/kylin/cube/CubeManager.java
@@ -101,7 +101,10 @@ public class CubeManager implements IRealizationProvider {
r = new CubeManager(config);
CACHE.put(config, r);
if (CACHE.size() > 1) {
- logger.warn("More than one cubemanager singleton exist");
+ logger.warn("More than one singleton exist");
+ for (KylinConfig kylinConfig : CACHE.keySet()) {
+ logger.warn("type: " + kylinConfig.getClass() + " reference: " + System.identityHashCode(kylinConfig.base()));
+ }
}
return r;
} catch (IOException e) {
@@ -149,7 +152,7 @@ public class CubeManager implements IRealizationProvider {
}
return null;
}
-
+
/**
* Get related Cubes by cubedesc name. By default, the desc name will be
* translated into upper case.
@@ -411,7 +414,7 @@ public class CubeManager implements IRealizationProvider {
public CubeSegment appendSegment(CubeInstance cube, long startDate, long endDate, long startOffset, long endOffset, boolean strictChecking) throws IOException {
- if(strictChecking)
+ if (strictChecking)
checkNoBuildingSegment(cube);
if (cube.getDescriptor().getModel().getPartitionDesc().isPartitioned()) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java
----------------------------------------------------------------------
diff --git a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java
index d520efa..5e1e131 100644
--- a/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java
+++ b/core-cube/src/main/java/org/apache/kylin/gridtable/GTScanRequest.java
@@ -19,6 +19,7 @@
package org.apache.kylin.gridtable;
import java.io.IOException;
+import java.nio.BufferOverflowException;
import java.nio.ByteBuffer;
import java.util.Arrays;
import java.util.List;
@@ -29,6 +30,7 @@ import org.apache.kylin.common.util.ByteArray;
import org.apache.kylin.common.util.BytesSerializer;
import org.apache.kylin.common.util.BytesUtil;
import org.apache.kylin.common.util.ImmutableBitSet;
+import org.apache.kylin.common.util.SerializeToByteBuffer;
import org.apache.kylin.metadata.filter.TupleFilter;
import org.apache.kylin.metadata.model.TblColRef;
@@ -270,6 +272,16 @@ public class GTScanRequest {
return "GTScanRequest [range=" + ranges + ", columns=" + columns + ", filterPushDown=" + filterPushDown + ", aggrGroupBy=" + aggrGroupBy + ", aggrMetrics=" + aggrMetrics + ", aggrMetricsFuncs=" + Arrays.toString(aggrMetricsFuncs) + "]";
}
+ public byte[] toByteArray() {
+ ByteBuffer byteBuffer = SerializeToByteBuffer.retrySerialize(new SerializeToByteBuffer.IWriter() {
+ @Override
+ public void write(ByteBuffer byteBuffer) throws BufferOverflowException {
+ GTScanRequest.serializer.serialize(GTScanRequest.this, byteBuffer);
+ }
+ });
+ return Arrays.copyOf(byteBuffer.array(), byteBuffer.position());
+ }
+
public static final BytesSerializer<GTScanRequest> serializer = new BytesSerializer<GTScanRequest>() {
@Override
public void serialize(GTScanRequest value, ByteBuffer out) {
@@ -340,7 +352,6 @@ public class GTScanRequest {
}
return new GTRecord(sInfo, sCols);
}
-
};
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
----------------------------------------------------------------------
diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
index 5668bd8..6a1c22c 100644
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryManager.java
@@ -63,6 +63,9 @@ public class DictionaryManager {
if (r == null) {
r = new DictionaryManager(config);
CACHE.put(config, r);
+ if (CACHE.size() > 1) {
+ logger.warn("More than one singleton exist");
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java
----------------------------------------------------------------------
diff --git a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java
index b9c17dd..b4b8011 100644
--- a/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java
+++ b/core-dictionary/src/main/java/org/apache/kylin/dict/lookup/SnapshotManager.java
@@ -20,7 +20,7 @@ package org.apache.kylin.dict.lookup;
import java.io.IOException;
import java.util.ArrayList;
-import java.util.NavigableSet;
+import java.util.NavigableSet;
import java.util.concurrent.ConcurrentHashMap;
import org.apache.kylin.common.KylinConfig;
@@ -45,12 +45,15 @@ public class SnapshotManager {
public static SnapshotManager getInstance(KylinConfig config) {
SnapshotManager r = SERVICE_CACHE.get(config);
if (r == null) {
- synchronized (SnapshotManager.class) {
- r = SERVICE_CACHE.get(config);
- if (r == null) {
- r = new SnapshotManager(config);
- SERVICE_CACHE.put(config, r);
- }
+ synchronized (SnapshotManager.class) {
+ r = SERVICE_CACHE.get(config);
+ if (r == null) {
+ r = new SnapshotManager(config);
+ SERVICE_CACHE.put(config, r);
+ if (SERVICE_CACHE.size() > 1) {
+ logger.warn("More than one singleton exist");
+ }
+ }
}
}
return r;
@@ -140,7 +143,7 @@ public class SnapshotManager {
private String checkDupByInfo(SnapshotTable snapshot) throws IOException {
ResourceStore store = MetadataManager.getInstance(this.config).getStore();
String resourceDir = snapshot.getResourceDir();
- NavigableSet<String> existings = store.listResources(resourceDir);
+ NavigableSet<String> existings = store.listResources(resourceDir);
if (existings == null)
return null;
@@ -158,7 +161,7 @@ public class SnapshotManager {
private String checkDupByContent(SnapshotTable snapshot) throws IOException {
ResourceStore store = MetadataManager.getInstance(this.config).getStore();
String resourceDir = snapshot.getResourceDir();
- NavigableSet<String> existings = store.listResources(resourceDir);
+ NavigableSet<String> existings = store.listResources(resourceDir);
if (existings == null)
return null;
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-job/src/main/java/org/apache/kylin/job/dao/ExecutableDao.java
----------------------------------------------------------------------
diff --git a/core-job/src/main/java/org/apache/kylin/job/dao/ExecutableDao.java b/core-job/src/main/java/org/apache/kylin/job/dao/ExecutableDao.java
index 58f845d..8808a56 100644
--- a/core-job/src/main/java/org/apache/kylin/job/dao/ExecutableDao.java
+++ b/core-job/src/main/java/org/apache/kylin/job/dao/ExecutableDao.java
@@ -55,6 +55,9 @@ public class ExecutableDao {
if (r == null) {
r = new ExecutableDao(config);
CACHE.put(config, r);
+ if (CACHE.size() > 1) {
+ logger.warn("More than one singleton exist");
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-job/src/main/java/org/apache/kylin/job/execution/AbstractExecutable.java
----------------------------------------------------------------------
diff --git a/core-job/src/main/java/org/apache/kylin/job/execution/AbstractExecutable.java b/core-job/src/main/java/org/apache/kylin/job/execution/AbstractExecutable.java
index 778763c..aee71f7 100644
--- a/core-job/src/main/java/org/apache/kylin/job/execution/AbstractExecutable.java
+++ b/core-job/src/main/java/org/apache/kylin/job/execution/AbstractExecutable.java
@@ -113,7 +113,7 @@ public abstract class AbstractExecutable implements Executable, Idempotent {
try {
result = doWork(executableContext);
} catch (Throwable e) {
- logger.error("error running Executable", e);
+ logger.error("error running Executable: " + this.toString());
exception = e;
}
retry++;
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-job/src/main/java/org/apache/kylin/job/manager/ExecutableManager.java
----------------------------------------------------------------------
diff --git a/core-job/src/main/java/org/apache/kylin/job/manager/ExecutableManager.java b/core-job/src/main/java/org/apache/kylin/job/manager/ExecutableManager.java
index 5138fb4..7b4e0f0 100644
--- a/core-job/src/main/java/org/apache/kylin/job/manager/ExecutableManager.java
+++ b/core-job/src/main/java/org/apache/kylin/job/manager/ExecutableManager.java
@@ -63,6 +63,9 @@ public class ExecutableManager {
if (r == null) {
r = new ExecutableManager(config);
CACHE.put(config, r);
+ if (CACHE.size() > 1) {
+ logger.warn("More than one singleton exist");
+ }
}
}
}
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
----------------------------------------------------------------------
diff --git a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
index e5b0033..b447531 100644
--- a/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
+++ b/core-metadata/src/main/java/org/apache/kylin/metadata/realization/RealizationRegistry.java
@@ -54,6 +54,9 @@ public class RealizationRegistry {
try {
r = new RealizationRegistry(config);
CACHE.put(config, r);
+ if (CACHE.size() > 1) {
+ logger.warn("More than one singleton exist");
+ }
return r;
} catch (IOException e) {
throw new IllegalStateException("Failed to init CubeManager from " + config, e);
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridManager.java
----------------------------------------------------------------------
diff --git a/core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridManager.java b/core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridManager.java
index 5f16b6b..e43331e 100644
--- a/core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridManager.java
+++ b/core-storage/src/main/java/org/apache/kylin/storage/hybrid/HybridManager.java
@@ -59,7 +59,7 @@ public class HybridManager implements IRealizationProvider {
r = new HybridManager(config);
CACHE.put(config, r);
if (CACHE.size() > 1) {
- logger.warn("More than one Hybrid Manager singleton exist");
+ logger.warn("More than one singleton exist");
}
return r;
} catch (IOException e) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/engine-streaming/src/main/java/org/apache/kylin/engine/streaming/StreamingManager.java
----------------------------------------------------------------------
diff --git a/engine-streaming/src/main/java/org/apache/kylin/engine/streaming/StreamingManager.java b/engine-streaming/src/main/java/org/apache/kylin/engine/streaming/StreamingManager.java
index f652762..b45e313 100644
--- a/engine-streaming/src/main/java/org/apache/kylin/engine/streaming/StreamingManager.java
+++ b/engine-streaming/src/main/java/org/apache/kylin/engine/streaming/StreamingManager.java
@@ -95,7 +95,7 @@ public class StreamingManager {
r = new StreamingManager(config);
CACHE.put(config, r);
if (CACHE.size() > 1) {
- logger.warn("More than one streamingManager singleton exist");
+ logger.warn("More than one singleton exist");
}
return r;
} catch (IOException e) {
http://git-wip-us.apache.org/repos/asf/kylin/blob/1b0ece4a/source-kafka/src/main/java/org/apache/kylin/source/kafka/KafkaConfigManager.java
----------------------------------------------------------------------
diff --git a/source-kafka/src/main/java/org/apache/kylin/source/kafka/KafkaConfigManager.java b/source-kafka/src/main/java/org/apache/kylin/source/kafka/KafkaConfigManager.java
index 1d07f23..d594873 100644
--- a/source-kafka/src/main/java/org/apache/kylin/source/kafka/KafkaConfigManager.java
+++ b/source-kafka/src/main/java/org/apache/kylin/source/kafka/KafkaConfigManager.java
@@ -96,7 +96,7 @@ public class KafkaConfigManager {
r = new KafkaConfigManager(config);
CACHE.put(config, r);
if (CACHE.size() > 1) {
- logger.warn("More than one KafkaConfigManager singleton exist");
+ logger.warn("More than one singleton exist");
}
return r;
} catch (IOException e) {