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 2d08169 minor, fix sonar reported bugs
2d08169 is described below
commit 2d08169659479b3ae506193c70a274bf591d1fc3
Author: shaofengshi <[email protected]>
AuthorDate: Sat Aug 15 23:12:47 2020 +0800
minor, fix sonar reported bugs
---
.../java/org/apache/kylin/common/KylinConfig.java | 18 +++++-------
.../gridtable/GTAggregateTransformScanner.java | 4 ---
.../benchmark/SortedGTRecordGenerator.java | 13 ++++++---
.../org/apache/kylin/dict/DictionaryGenerator.java | 1 +
.../java/org/apache/kylin/measure/MeasureType.java | 2 +-
.../kylin/measure/basic/BasicMeasureType.java | 2 +-
.../kylin/measure/bitmap/BitmapMeasureType.java | 2 +-
.../measure/bitmap/RetentionPartialResult.java | 2 +-
.../measure/dim/DimCountDistinctMeasureType.java | 1 +
.../apache/kylin/measure/hllc/HLLCMeasureType.java | 2 +-
.../measure/map/bitmap/BitmapMapMeasureType.java | 2 +-
.../apache/kylin/measure/raw/RawMeasureType.java | 3 +-
.../apache/kylin/measure/topn/TopNMeasureType.java | 34 ++++++++++------------
.../kylin/metadata/cachesync/Broadcaster.java | 12 ++++++--
.../kylin/metadata/cachesync/BroadcasterTest.java | 6 ++--
.../sdk/datasource/adaptor/DefaultAdaptor.java | 18 +++++++-----
.../java/org/apache/kylin/engine/mr/CubingJob.java | 9 +++---
.../kylin/engine/mr/common/CubeStatsReader.java | 19 +++++++-----
.../kylin/engine/mr/streaming/RowRecordReader.java | 2 +-
.../org/apache/kylin/rest/request/SQLRequest.java | 2 +-
.../kylin/tool/extractor/MrJobInfoExtractor.java | 29 +++++++++---------
21 files changed, 98 insertions(+), 85 deletions(-)
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 640fc3e..30cf71c 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
@@ -150,8 +150,8 @@ public class KylinConfig extends KylinConfigBase {
config = new KylinConfig();
config.reloadKylinConfig(buildSiteProperties());
VersionUtil.loadKylinVersion();
- logger.info("Initialized a new KylinConfig from
getInstanceFromEnv : "
- + System.identityHashCode(config));
+ logger.info("Initialized a new KylinConfig from
getInstanceFromEnv : {}",
+ System.identityHashCode(config));
SYS_ENV_INSTANCE = config;
} catch (IllegalArgumentException e) {
throw new IllegalStateException("Failed to find
KylinConfig ", e);
@@ -390,9 +390,9 @@ public class KylinConfig extends KylinConfigBase {
// 2. load site conf, to keep backward compatibility it's still
named kylin.properties
// actually it's better to be named kylin-site.properties
File propFile = getSitePropertiesFile();
- if (propFile == null || !propFile.exists()) {
+ if (!propFile.exists()) {
logger.error("fail to locate " + KYLIN_CONF_PROPERTIES_FILE +
" at '"
- + (propFile != null ? propFile.getAbsolutePath() : "")
+ "'");
+ + propFile.getAbsolutePath() + "'");
throw new RuntimeException("fail to locate " +
KYLIN_CONF_PROPERTIES_FILE);
}
loadPropertiesFromInputStream(new FileInputStream(propFile),
orderedProperties);
@@ -444,7 +444,7 @@ public class KylinConfig extends KylinConfigBase {
//
============================================================================
- transient Map<Class, Object> managersCache = new ConcurrentHashMap<>();
+ private final transient Map<Class, Object> managersCache = new
ConcurrentHashMap<>();
private KylinConfig() {
super();
@@ -454,20 +454,16 @@ public class KylinConfig extends KylinConfigBase {
super(props, force);
}
- public <T> T getManager(Class<T> clz) {
+ public <T> T getManager(final Class<T> clz) {
KylinConfig base = base();
if (base != this)
return base.getManager(clz);
- if (managersCache == null) {
- managersCache = new ConcurrentHashMap<>();
- }
-
Object mgr = managersCache.get(clz);
if (mgr != null)
return (T) mgr;
- synchronized (clz) {
+ synchronized (managersCache) {
mgr = managersCache.get(clz);
if (mgr != null)
return (T) mgr;
diff --git
a/core-cube/src/main/java/org/apache/kylin/gridtable/GTAggregateTransformScanner.java
b/core-cube/src/main/java/org/apache/kylin/gridtable/GTAggregateTransformScanner.java
index 2ee7d25..0f805e8 100644
---
a/core-cube/src/main/java/org/apache/kylin/gridtable/GTAggregateTransformScanner.java
+++
b/core-cube/src/main/java/org/apache/kylin/gridtable/GTAggregateTransformScanner.java
@@ -27,8 +27,6 @@ import java.util.NoSuchElementException;
import org.apache.kylin.common.util.ImmutableBitSet;
import org.apache.kylin.measure.MeasureAggregator;
import org.apache.kylin.measure.MeasureTransformation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
import com.google.common.collect.Iterators;
import com.google.common.collect.Maps;
@@ -36,8 +34,6 @@ import com.google.common.collect.PeekingIterator;
public class GTAggregateTransformScanner implements IGTScanner {
- private static final Logger logger =
LoggerFactory.getLogger(GTAggregateTransformScanner.class);
-
protected final IGTScanner inputScanner;
private final GTScanRequest req;
private final GTTwoLayerAggregateParam twoLayerAggParam;
diff --git
a/core-cube/src/main/java/org/apache/kylin/gridtable/benchmark/SortedGTRecordGenerator.java
b/core-cube/src/main/java/org/apache/kylin/gridtable/benchmark/SortedGTRecordGenerator.java
index 36f4676..a3a136d 100644
---
a/core-cube/src/main/java/org/apache/kylin/gridtable/benchmark/SortedGTRecordGenerator.java
+++
b/core-cube/src/main/java/org/apache/kylin/gridtable/benchmark/SortedGTRecordGenerator.java
@@ -23,6 +23,7 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
+import java.util.NoSuchElementException;
import java.util.Random;
import org.apache.kylin.common.util.ByteArray;
@@ -31,6 +32,7 @@ import org.apache.kylin.gridtable.GTInfo;
import org.apache.kylin.gridtable.GTRecord;
import org.apache.kylin.gridtable.IGTScanner;
+import org.apache.kylin.shaded.com.google.common.base.Preconditions;
import org.apache.kylin.shaded.com.google.common.collect.Lists;
public class SortedGTRecordGenerator {
@@ -43,7 +45,7 @@ public class SortedGTRecordGenerator {
}
public void addDimension(long cardinality, int length, Map<Integer,
Integer> weights) {
- assert cardinality > 0;
+ Preconditions.checkArgument(cardinality > 0);
ColSpec spec = new ColSpec();
spec.cardinality = cardinality;
spec.length = length;
@@ -56,7 +58,7 @@ public class SortedGTRecordGenerator {
}
public void addMeasure(int length, Randomizer randomizer) {
- assert length > 0;
+ Preconditions.checkArgument(length > 0);
ColSpec spec = new ColSpec();
spec.length = length;
spec.measureRandomizer = randomizer;
@@ -91,7 +93,7 @@ public class SortedGTRecordGenerator {
}
public static class BytesRandomizer implements Randomizer {
- final private byte[] bytes;
+ private final byte[] bytes;
public BytesRandomizer(int len) {
this.bytes = new byte[len];
@@ -138,6 +140,9 @@ public class SortedGTRecordGenerator {
@Override
public GTRecord next() {
+ if (counter >= nRows)
+ throw new NoSuchElementException();
+
for (int i = 0; i < colSpecs.size(); i++) {
ColSpec spec = colSpecs.get(i);
if (spec.cardinality > 0) {
@@ -194,7 +199,7 @@ public class SortedGTRecordGenerator {
int curValue;
public Distribution(ColSpec spec, long nRows) {
- assert spec.cardinality > 0;
+ Preconditions.checkArgument(spec.cardinality > 0);
this.spec = spec;
this.nRows = nRows;
diff --git
a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryGenerator.java
b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryGenerator.java
index a0730ff..0b72dd8 100644
---
a/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryGenerator.java
+++
b/core-dictionary/src/main/java/org/apache/kylin/dict/DictionaryGenerator.java
@@ -109,6 +109,7 @@ public class DictionaryGenerator {
@Nullable
@Override
public Dictionary<String> apply(@Nullable DictionaryInfo input) {
+ Preconditions.checkNotNull(input);
return input.dictionaryObject;
}
});
diff --git
a/core-metadata/src/main/java/org/apache/kylin/measure/MeasureType.java
b/core-metadata/src/main/java/org/apache/kylin/measure/MeasureType.java
index 89d81e0..54feef0 100644
--- a/core-metadata/src/main/java/org/apache/kylin/measure/MeasureType.java
+++ b/core-metadata/src/main/java/org/apache/kylin/measure/MeasureType.java
@@ -46,7 +46,7 @@ abstract public class MeasureType<T> implements
java.io.Serializable {
*
---------------------------------------------------------------------------- */
/** Validates a user defined FunctionDesc has expected parameter etc.
Throw IllegalArgumentException if anything wrong. */
- public void validate(FunctionDesc functionDesc) throws
IllegalArgumentException {
+ public void validate(FunctionDesc functionDesc) {
return;
}
diff --git
a/core-metadata/src/main/java/org/apache/kylin/measure/basic/BasicMeasureType.java
b/core-metadata/src/main/java/org/apache/kylin/measure/basic/BasicMeasureType.java
index b0836df..cdd758c 100644
---
a/core-metadata/src/main/java/org/apache/kylin/measure/basic/BasicMeasureType.java
+++
b/core-metadata/src/main/java/org/apache/kylin/measure/basic/BasicMeasureType.java
@@ -62,7 +62,7 @@ public class BasicMeasureType extends MeasureType {
}
@Override
- public void validate(FunctionDesc functionDesc) throws
IllegalArgumentException {
+ public void validate(FunctionDesc functionDesc) {
DataType rtype = dataType;
if (funcName.equals(FunctionDesc.FUNC_SUM)) {
diff --git
a/core-metadata/src/main/java/org/apache/kylin/measure/bitmap/BitmapMeasureType.java
b/core-metadata/src/main/java/org/apache/kylin/measure/bitmap/BitmapMeasureType.java
index 9d95584..21a1a43 100644
---
a/core-metadata/src/main/java/org/apache/kylin/measure/bitmap/BitmapMeasureType.java
+++
b/core-metadata/src/main/java/org/apache/kylin/measure/bitmap/BitmapMeasureType.java
@@ -76,7 +76,7 @@ public class BitmapMeasureType extends
MeasureType<BitmapCounter> {
}
@Override
- public void validate(FunctionDesc functionDesc) throws
IllegalArgumentException {
+ public void validate(FunctionDesc functionDesc) {
checkArgument(FUNC_COUNT_DISTINCT.equals(functionDesc.getExpression()),
"BitmapMeasureType only support function %s, got %s",
FUNC_COUNT_DISTINCT, functionDesc.getExpression());
checkArgument(functionDesc.getParameterCount() == 1,
diff --git
a/core-metadata/src/main/java/org/apache/kylin/measure/bitmap/RetentionPartialResult.java
b/core-metadata/src/main/java/org/apache/kylin/measure/bitmap/RetentionPartialResult.java
index 7a399fa..4c319a8 100644
---
a/core-metadata/src/main/java/org/apache/kylin/measure/bitmap/RetentionPartialResult.java
+++
b/core-metadata/src/main/java/org/apache/kylin/measure/bitmap/RetentionPartialResult.java
@@ -43,7 +43,7 @@ public class RetentionPartialResult {
public void add(Object key, List keyList, Object value) {
Preconditions.checkArgument(key != null);
- Preconditions.checkArgument(keyList != null && keyList.size() >= 0);
+ Preconditions.checkArgument(keyList != null && !keyList.isEmpty());
if (this.keyList == null) {
this.keyList = Lists.transform(keyList, i -> i.toString());
childKeyToParentKey = new HashMap<>(5);
diff --git
a/core-metadata/src/main/java/org/apache/kylin/measure/dim/DimCountDistinctMeasureType.java
b/core-metadata/src/main/java/org/apache/kylin/measure/dim/DimCountDistinctMeasureType.java
index a9e3e82..eea6d46 100644
---
a/core-metadata/src/main/java/org/apache/kylin/measure/dim/DimCountDistinctMeasureType.java
+++
b/core-metadata/src/main/java/org/apache/kylin/measure/dim/DimCountDistinctMeasureType.java
@@ -87,6 +87,7 @@ public class DimCountDistinctMeasureType extends
MeasureType<Object> {
return UDAF_MAP;
}
+ @Override
public void adjustSqlDigest(List<MeasureDesc> measureDescs, SQLDigest
sqlDigest) {
for (MeasureDesc measureDesc : measureDescs) {
sqlDigest.groupbyColumns.addAll(measureDesc.getFunction().getParameter().getColRefs());
diff --git
a/core-metadata/src/main/java/org/apache/kylin/measure/hllc/HLLCMeasureType.java
b/core-metadata/src/main/java/org/apache/kylin/measure/hllc/HLLCMeasureType.java
index b262be0..0099b3e 100644
---
a/core-metadata/src/main/java/org/apache/kylin/measure/hllc/HLLCMeasureType.java
+++
b/core-metadata/src/main/java/org/apache/kylin/measure/hllc/HLLCMeasureType.java
@@ -71,7 +71,7 @@ public class HLLCMeasureType extends MeasureType<HLLCounter> {
this.dataType = dataType;
}
- public void validate(FunctionDesc functionDesc) throws
IllegalArgumentException {
+ public void validate(FunctionDesc functionDesc) {
validate(functionDesc.getExpression(),
functionDesc.getReturnDataType(), true);
}
diff --git
a/core-metadata/src/main/java/org/apache/kylin/measure/map/bitmap/BitmapMapMeasureType.java
b/core-metadata/src/main/java/org/apache/kylin/measure/map/bitmap/BitmapMapMeasureType.java
index b0930ba..79f7ac6 100644
---
a/core-metadata/src/main/java/org/apache/kylin/measure/map/bitmap/BitmapMapMeasureType.java
+++
b/core-metadata/src/main/java/org/apache/kylin/measure/map/bitmap/BitmapMapMeasureType.java
@@ -72,7 +72,7 @@ public class BitmapMapMeasureType extends
MeasureType<BitmapCounterMap> {
}
@Override
- public void validate(FunctionDesc functionDesc) throws
IllegalArgumentException {
+ public void validate(FunctionDesc functionDesc) {
checkArgument(FUNC_COUNT_DISTINCT.equals(functionDesc.getExpression()),
"BitmapMapMeasureType only support function %s, got %s",
FUNC_COUNT_DISTINCT,
functionDesc.getExpression());
diff --git
a/core-metadata/src/main/java/org/apache/kylin/measure/raw/RawMeasureType.java
b/core-metadata/src/main/java/org/apache/kylin/measure/raw/RawMeasureType.java
index 7dc8ecc..523e5bf 100644
---
a/core-metadata/src/main/java/org/apache/kylin/measure/raw/RawMeasureType.java
+++
b/core-metadata/src/main/java/org/apache/kylin/measure/raw/RawMeasureType.java
@@ -79,7 +79,8 @@ public class RawMeasureType extends
MeasureType<List<ByteArray>> {
public RawMeasureType() {
}
- public void validate(FunctionDesc functionDesc) throws
IllegalArgumentException {
+ @Override
+ public void validate(FunctionDesc functionDesc) {
validate(functionDesc.getExpression(),
functionDesc.getReturnDataType(), true);
}
diff --git
a/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java
b/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java
index 97cb402..658a765 100644
---
a/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java
+++
b/core-metadata/src/main/java/org/apache/kylin/measure/topn/TopNMeasureType.java
@@ -101,7 +101,8 @@ public class TopNMeasureType extends
MeasureType<TopNCounter<ByteArray>> {
this.dataType = dataType;
}
- public void validate(FunctionDesc functionDesc) throws
IllegalArgumentException {
+ @Override
+ public void validate(FunctionDesc functionDesc) {
validate(functionDesc.getExpression(),
functionDesc.getReturnDataType(), true);
}
@@ -129,7 +130,7 @@ public class TopNMeasureType extends
MeasureType<TopNCounter<ByteArray>> {
private List<TblColRef> literalCols = null;
private int keyLength = 0;
- private volatile DimensionEncoding[] newDimensionEncodings = null;
+ private DimensionEncoding[] newDimensionEncodings = null;
private int newKeyLength = 0;
private boolean needReEncode = true;
@@ -162,7 +163,7 @@ public class TopNMeasureType extends
MeasureType<TopNCounter<ByteArray>> {
offset += dimensionEncodings[i].getLengthOfEncoding();
}
- TopNCounter<ByteArray> topNCounter = new
TopNCounter<ByteArray>(
+ TopNCounter<ByteArray> topNCounter = new TopNCounter<>(
dataType.getPrecision() *
TopNCounter.EXTRA_SPACE_RATE);
topNCounter.offer(key, counter);
return topNCounter;
@@ -245,7 +246,7 @@ public class TopNMeasureType extends
MeasureType<TopNCounter<ByteArray>> {
public List<TblColRef> getColumnsNeedDictionary(FunctionDesc functionDesc)
{
List<TblColRef> columnsNeedDict = Lists.newArrayList();
List<TblColRef> allCols = functionDesc.getParameter().getColRefs();
- int start = (functionDesc.getParameter().isColumnType() == true) ? 1 :
0;
+ int start = functionDesc.getParameter().isColumnType() ? 1 : 0;
for (int i = start; i < allCols.size(); i++) {
TblColRef tblColRef = allCols.get(i);
String encoding = getEncoding(functionDesc, tblColRef).getFirst();
@@ -273,12 +274,12 @@ public class TopNMeasureType extends
MeasureType<TopNCounter<ByteArray>> {
}
}
- if (digest.groupbyColumns.containsAll(literalCol) == false)
+ if (!digest.groupbyColumns.containsAll(literalCol))
return null;
List retainList = unmatchedDimensions.stream().filter(colRef ->
literalCol.contains(colRef)).collect(Collectors.toList());
- if (retainList.size() > 0){
+ if (!retainList.isEmpty()){
cuboidCanAnswer = false;
}
@@ -287,7 +288,7 @@ public class TopNMeasureType extends
MeasureType<TopNCounter<ByteArray>> {
// the measure function must be SUM
FunctionDesc onlyFunction = digest.aggregations.iterator().next();
- if (isTopNCompatibleSum(topN.getFunction(), onlyFunction) == false)
+ if (!isTopNCompatibleSum(topN.getFunction(), onlyFunction))
return null;
unmatchedDimensions.removeAll(literalCol);
@@ -312,7 +313,7 @@ public class TopNMeasureType extends
MeasureType<TopNCounter<ByteArray>> {
};
}
- if (digest.aggregations.size() == 0) {
+ if (digest.aggregations.isEmpty()) {
// directly query the UHC column without sorting
boolean b = unmatchedDimensions.removeAll(literalCol);
if (b) {
@@ -371,17 +372,14 @@ public class TopNMeasureType extends
MeasureType<TopNCounter<ByteArray>> {
TblColRef topnNumCol = getTopNNumericColumn(topN);
if (topnNumCol == null) {
- if (sum.isCount())
- return true;
-
- return false;
+ return sum.isCount();
}
- if (sum.isSum() == false)
+ if (!sum.isSum())
return false;
if (sum.getParameter() == null || sum.getParameter().getColRefs() ==
null
- || sum.getParameter().getColRefs().size() == 0)
+ || sum.getParameter().getColRefs().isEmpty())
return false;
TblColRef sumCol = sum.getParameter().getColRefs().get(0);
@@ -415,9 +413,9 @@ public class TopNMeasureType extends
MeasureType<TopNCounter<ByteArray>> {
continue;
}
- if (sqlDigest.aggregations.size() > 0) {
+ if (!sqlDigest.aggregations.isEmpty()) {
FunctionDesc origFunc =
sqlDigest.aggregations.iterator().next();
- if (origFunc.isSum() == false && origFunc.isCount() == false) {
+ if (!origFunc.isSum() && !origFunc.isCount()) {
logger.warn("When query with topN, only SUM/Count function
is allowed.");
return;
}
@@ -432,7 +430,7 @@ public class TopNMeasureType extends
MeasureType<TopNCounter<ByteArray>> {
continue;
}
- logger.info("Rewrite function " + origFunc + " to " +
topnFunc);
+ logger.info("Rewrite function {} to {}", origFunc, topnFunc);
}
@@ -530,7 +528,7 @@ public class TopNMeasureType extends
MeasureType<TopNCounter<ByteArray>> {
try {
encodingVersion = Integer.parseInt(encodingVersionStr);
} catch (NumberFormatException e) {
- throw new
RuntimeException(TopNMeasureType.CONFIG_ENCODING_VERSION_PREFIX +
colRef.getName()
+ throw new
IllegalArgumentException(TopNMeasureType.CONFIG_ENCODING_VERSION_PREFIX +
colRef.getName()
+ " has to be an integer");
}
}
diff --git
a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
index 6c381b6..1731bc5 100644
---
a/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
+++
b/core-metadata/src/main/java/org/apache/kylin/metadata/cachesync/Broadcaster.java
@@ -79,7 +79,9 @@ public class Broadcaster implements Closeable {
//
============================================================================
- static final Map<String, List<Listener>> staticListenerMap =
Maps.newConcurrentMap();
+ private static final Map<String, List<Listener>> staticListenerMap =
Maps.newConcurrentMap();
+
+ private static final Object LOCK = new Object();
private KylinConfig config;
private ExecutorService announceMainLoop;
@@ -142,7 +144,7 @@ public class Broadcaster implements Closeable {
} catch (IOException e) {
logger.error(
"Announce broadcast event
failed, targetNode {} broadcastEvent {}, error msg: {}",
- node, broadcastEvent, e);
+ node, broadcastEvent,
e.getMessage());
syncErrorHandler.handleAnnounceError(node, restClient, broadcastEvent);
}
}
@@ -201,7 +203,7 @@ public class Broadcaster implements Closeable {
}
private static void doRegisterListener(Map<String, List<Listener>> lmap,
Listener listener, String... entities) {
- synchronized (lmap) {
+ synchronized (LOCK) {
// ignore re-registration
List<Listener> all = lmap.get(SYNC_ALL);
if (all != null && all.contains(listener)) {
@@ -482,4 +484,8 @@ public class Broadcaster implements Closeable {
}
}
+
+ public static void clearStaticListenerMap() {
+ staticListenerMap.clear();
+ }
}
diff --git
a/core-metadata/src/test/java/org/apache/kylin/metadata/cachesync/BroadcasterTest.java
b/core-metadata/src/test/java/org/apache/kylin/metadata/cachesync/BroadcasterTest.java
index 762512f..48a43f8 100644
---
a/core-metadata/src/test/java/org/apache/kylin/metadata/cachesync/BroadcasterTest.java
+++
b/core-metadata/src/test/java/org/apache/kylin/metadata/cachesync/BroadcasterTest.java
@@ -68,7 +68,7 @@ public class BroadcasterTest extends
LocalFileMetadataTestCase {
broadcaster.notifyListener("test", Event.UPDATE, "");
broadcaster.stopAnnounce();
- Broadcaster.staticListenerMap.clear();
+ Broadcaster.clearStaticListenerMap();
}
@Test
@@ -95,7 +95,7 @@ public class BroadcasterTest extends
LocalFileMetadataTestCase {
broadcaster.notifyNonStaticListener("test", Event.UPDATE, "");
broadcaster.stopAnnounce();
- Broadcaster.staticListenerMap.clear();
+ Broadcaster.clearStaticListenerMap();
}
@Test
@@ -112,7 +112,7 @@ public class BroadcasterTest extends
LocalFileMetadataTestCase {
}
broadcaster.stopAnnounce();
- Broadcaster.staticListenerMap.clear();
+ Broadcaster.clearStaticListenerMap();
} finally {
System.clearProperty("kylin.server.cluster-servers");
System.clearProperty("kylin.metadata.sync-error-handler");
diff --git
a/datasource-sdk/src/main/java/org/apache/kylin/sdk/datasource/adaptor/DefaultAdaptor.java
b/datasource-sdk/src/main/java/org/apache/kylin/sdk/datasource/adaptor/DefaultAdaptor.java
index 221f51e..9a4aa51 100644
---
a/datasource-sdk/src/main/java/org/apache/kylin/sdk/datasource/adaptor/DefaultAdaptor.java
+++
b/datasource-sdk/src/main/java/org/apache/kylin/sdk/datasource/adaptor/DefaultAdaptor.java
@@ -37,6 +37,8 @@ import org.apache.commons.lang.StringUtils;
*/
public class DefaultAdaptor extends AbstractJdbcAdaptor {
+ public static final String TABLE_NAME = "TABLE_NAME";
+ public static final String TABLE_SCHEM = "TABLE_SCHEM";
private static Joiner joiner = Joiner.on('_');
public DefaultAdaptor(AdaptorConfig config) throws Exception {
@@ -149,7 +151,7 @@ public class DefaultAdaptor extends AbstractJdbcAdaptor {
List<String> ret = new LinkedList<>();
try (Connection con = getConnection(); ResultSet rs =
con.getMetaData().getSchemas()) {
while (rs.next()) {
- String schema = rs.getString("TABLE_SCHEM");
+ String schema = rs.getString(TABLE_SCHEM);
if (StringUtils.isNotBlank(schema)) {
ret.add(schema);
}
@@ -169,7 +171,7 @@ public class DefaultAdaptor extends AbstractJdbcAdaptor {
List<String> ret = new ArrayList<>();
try (Connection conn = getConnection(); ResultSet rs =
conn.getMetaData().getTables(null, schema, null, null)) {
while (rs.next()) {
- String name = rs.getString("TABLE_NAME");
+ String name = rs.getString(TABLE_NAME);
if (StringUtils.isNotBlank(schema)) {
ret.add(name);
}
@@ -286,12 +288,12 @@ public class DefaultAdaptor extends AbstractJdbcAdaptor {
*/
public List<String> listTables() throws SQLException {
List<String> ret = new ArrayList<>();
- if (tablesCache == null || tablesCache.size() == 0) {
+ if (tablesCache.size() == 0) {
try (Connection conn = getConnection();
ResultSet rs = conn.getMetaData().getTables(null, null,
null, null)) {
while (rs.next()) {
- String name = rs.getString("TABLE_NAME");
- String database = rs.getString("TABLE_SCHEM") != null ?
rs.getString("TABLE_SCHEM")
+ String name = rs.getString(TABLE_NAME);
+ String database = rs.getString(TABLE_SCHEM) != null ?
rs.getString(TABLE_SCHEM)
: rs.getString("TABLE_CAT");
String cacheKey = joiner.join(config.datasourceId,
config.url, database, "tables");
List<String> cachedTables =
tablesCache.getIfPresent(cacheKey);
@@ -322,16 +324,16 @@ public class DefaultAdaptor extends AbstractJdbcAdaptor {
*/
public List<String> listColumns() throws SQLException {
List<String> ret = new ArrayList<>();
- if (columnsCache == null || columnsCache.size() == 0) {
+ if (columnsCache.size() == 0) {
CachedRowSet columnsRs = null;
try (Connection conn = getConnection();
ResultSet rs = conn.getMetaData().getColumns(null, null,
null, null)) {
columnsRs = cacheResultSet(rs);
}
while (columnsRs.next()) {
- String database = columnsRs.getString("TABLE_SCHEM") != null ?
columnsRs.getString("TABLE_SCHEM")
+ String database = columnsRs.getString(TABLE_SCHEM) != null ?
columnsRs.getString(TABLE_SCHEM)
: columnsRs.getString("TABLE_CAT");
- String table = columnsRs.getString("TABLE_NAME");
+ String table = columnsRs.getString(TABLE_NAME);
String column = columnsRs.getString("COLUMN_NAME");
String cacheKey = joiner.join(config.datasourceId, config.url,
database, table, "columns");
List<String> cachedColumns =
columnsCache.getIfPresent(cacheKey);
diff --git a/engine-mr/src/main/java/org/apache/kylin/engine/mr/CubingJob.java
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/CubingJob.java
index 0407f48..646c28a 100644
--- a/engine-mr/src/main/java/org/apache/kylin/engine/mr/CubingJob.java
+++ b/engine-mr/src/main/java/org/apache/kylin/engine/mr/CubingJob.java
@@ -211,12 +211,12 @@ public class CubingJob extends DefaultChainedExecutable {
final Output output = getManager().getOutput(getId());
if (state != ExecutableState.ERROR
&&
!cubeInstance.getDescriptor().getStatusNeedNotify().contains(state.toString()))
{
- logger.info("state:" + state + " no need to notify users");
+ logger.info("state:{} no need to notify users", state);
return null;
}
if (!MailNotificationUtil.hasMailNotification(state)) {
- logger.info("Cannot find email template for job state: " + state);
+ logger.info("Cannot find email template for job state: {}", state);
return null;
}
@@ -289,6 +289,7 @@ public class CubingJob extends DefaultChainedExecutable {
super.onExecuteFinished(result, executableContext);
}
+ @Override
protected void onStatusChange(ExecutableContext context, ExecuteResult
result, ExecutableState state) {
super.onStatusChange(context, result, state);
@@ -415,9 +416,9 @@ public class CubingJob extends DefaultChainedExecutable {
try {
String levelPath =
JobBuilderSupport.getCuboidOutputPathsByLevel(rootPath, level);
FileSystem fs = HadoopUtil.getFileSystem(levelPath);
- return fs.getContentSummary(new Path(levelPath)).getLength() /
(1024L * 1024L);
+ return fs.getContentSummary(new Path(levelPath)).getLength() /
(1024.0 * 1024.0);
} catch (Exception e) {
- logger.warn("get level real size failed." + e);
+ logger.warn("get level real size failed.", e);
return 0L;
}
}
diff --git
a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/CubeStatsReader.java
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/CubeStatsReader.java
index a936ad3..bf5a996 100644
---
a/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/CubeStatsReader.java
+++
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/common/CubeStatsReader.java
@@ -26,6 +26,7 @@ import java.io.InputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.ArrayList;
@@ -107,7 +108,7 @@ public class CubeStatsReader {
Path path = new Path(HadoopUtil.fixWindowsPath("file://" +
tmpSeqFile.getAbsolutePath()));
CubeStatsResult cubeStatsResult = new CubeStatsResult(path,
kylinConfig.getCubeStatsHLLPrecision());
- tmpSeqFile.delete();
+ Files.deleteIfExists(tmpSeqFile.toPath());
this.seg = cubeSegment;
this.cuboidScheduler = cuboidScheduler;
@@ -234,14 +235,20 @@ public class CubeStatsReader {
}
private static Double harmonicMean(List<Double> data) {
- if (data == null || data.size() == 0) {
+ if (data == null || data.isEmpty()) {
return 1.0;
}
Double sum = 0.0;
for (Double item : data) {
sum += 1.0 / item;
}
- return data.size() / sum;
+
+ if (sum == 0.0) {
+ return 1.0;
+ } else {
+ return data.size() / sum;
+ }
+
}
private static List<Double> getHistoricalRating(CubeSegment cubeSegment,
@@ -310,8 +317,6 @@ public class CubeStatsReader {
}
logger.info("cube size is {} after optimize",
SumHelper.sumDouble(sizeMap.values()));
-
- return;
}
@@ -372,7 +377,7 @@ public class CubeStatsReader {
private void print(PrintWriter out) {
Map<Long, Long> cuboidRows = getCuboidRowEstimatesHLL();
Map<Long, Double> cuboidSizes = getCuboidSizeMap();
- List<Long> cuboids = new ArrayList<Long>(cuboidRows.keySet());
+ List<Long> cuboids = new ArrayList<>(cuboidRows.keySet());
Collections.sort(cuboids);
out.println("============================================================================");
@@ -524,7 +529,7 @@ public class CubeStatsReader {
}
public static void main(String[] args) throws IOException {
- System.out.println("CubeStatsReader is used to read cube statistic
saved in metadata store");
+ logger.info("CubeStatsReader is used to read cube statistic saved in
metadata store");
KylinConfig config = KylinConfig.getInstanceFromEnv();
CubeInstance cube = CubeManager.getInstance(config).getCube(args[0]);
List<CubeSegment> segments = cube.getSegments();
diff --git
a/engine-mr/src/main/java/org/apache/kylin/engine/mr/streaming/RowRecordReader.java
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/streaming/RowRecordReader.java
index 505e331..2206fd7 100644
---
a/engine-mr/src/main/java/org/apache/kylin/engine/mr/streaming/RowRecordReader.java
+++
b/engine-mr/src/main/java/org/apache/kylin/engine/mr/streaming/RowRecordReader.java
@@ -136,7 +136,7 @@ public class RowRecordReader extends ColumnarFilesReader {
return measure;
}
}
- return null;
+ throw new IllegalArgumentException("No measure found with name '" +
name + "'.");
}
private Map<String, DimensionEncoding>
getDimensionEncodings(FragmentMetaInfo fragmentMetaInfo,
diff --git
a/server-base/src/main/java/org/apache/kylin/rest/request/SQLRequest.java
b/server-base/src/main/java/org/apache/kylin/rest/request/SQLRequest.java
index 8a80ff0..fac5a7e 100644
--- a/server-base/src/main/java/org/apache/kylin/rest/request/SQLRequest.java
+++ b/server-base/src/main/java/org/apache/kylin/rest/request/SQLRequest.java
@@ -40,7 +40,7 @@ public class SQLRequest implements Serializable {
private Map<String, String> backdoorToggles;
- protected volatile Object cacheKey = null;
+ protected transient Object cacheKey = null;
public SQLRequest() {
}
diff --git
a/tool/src/main/java/org/apache/kylin/tool/extractor/MrJobInfoExtractor.java
b/tool/src/main/java/org/apache/kylin/tool/extractor/MrJobInfoExtractor.java
index 797c601..5e1b0c9 100644
--- a/tool/src/main/java/org/apache/kylin/tool/extractor/MrJobInfoExtractor.java
+++ b/tool/src/main/java/org/apache/kylin/tool/extractor/MrJobInfoExtractor.java
@@ -83,21 +83,22 @@ public class MrJobInfoExtractor extends
AbstractInfoExtractor {
}
private String getHttpResponse(String url) {
- DefaultHttpClient client = new DefaultHttpClient();
String msg = null;
- int retryTimes = 0;
- while (msg == null && retryTimes < HTTP_RETRY) {
- retryTimes++;
-
- HttpGet request = new HttpGet(url);
- try {
- request.addHeader("accept", "application/json");
- HttpResponse response = client.execute(request);
- msg = EntityUtils.toString(response.getEntity());
- } catch (Exception e) {
- logger.warn("Failed to fetch http response. Retry={}",
retryTimes, e);
- } finally {
- request.releaseConnection();
+ try (DefaultHttpClient client = new DefaultHttpClient()) {
+ int retryTimes = 0;
+ while (msg == null && retryTimes < HTTP_RETRY) {
+ retryTimes++;
+
+ HttpGet request = new HttpGet(url);
+ try {
+ request.addHeader("accept", "application/json");
+ HttpResponse response = client.execute(request);
+ msg = EntityUtils.toString(response.getEntity());
+ } catch (Exception e) {
+ logger.warn("Failed to fetch http response. Retry={}",
retryTimes, e);
+ } finally {
+ request.releaseConnection();
+ }
}
}
return msg;