This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new 18487d7be38 Fix some SonarLint code smells of
trigger/query_context/aggregation/modification package
18487d7be38 is described below
commit 18487d7be38ade7c8d56f4717cf3eaef7fdfb350
Author: Liao Lanyu <[email protected]>
AuthorDate: Wed Jun 21 15:17:47 2023 +0800
Fix some SonarLint code smells of
trigger/query_context/aggregation/modification package
---
.../iotdb/db/engine/modification/Deletion.java | 2 +-
.../db/engine/modification/ModificationFile.java | 9 ++++--
.../io/LocalTextModificationAccessor.java | 4 +++
.../modification/utils/TracedBufferedReader.java | 33 ++++++++++----------
.../querycontext/AlignedReadOnlyMemChunk.java | 4 +--
.../db/engine/querycontext/QueryDataSource.java | 8 ++---
.../db/engine/querycontext/ReadOnlyMemChunk.java | 5 +--
.../db/engine/trigger/builtin/ForwardTrigger.java | 9 ++----
.../sink/forward/http/HTTPForwardHandler.java | 10 +++---
.../forward/mqtt/MQTTForwardConfiguration.java | 1 +
.../sink/forward/mqtt/MQTTForwardHandler.java | 10 +++---
.../trigger/sink/mqtt/MQTTConfiguration.java | 3 +-
.../db/engine/trigger/utils/BatchHandlerQueue.java | 11 ++++---
.../engine/trigger/utils/HTTPConnectionPool.java | 4 ++-
.../query/QueryTimeoutRuntimeException.java | 1 +
.../ClassLoaderManagerInitializationException.java | 26 ++++++++++++++++
.../iotdb/db/mpp/aggregation/Accumulator.java | 1 +
.../iotdb/db/mpp/aggregation/CountAccumulator.java | 4 ++-
.../slidingwindow/SlidingWindowAggregator.java | 4 +--
.../SlidingWindowAggregatorFactory.java | 4 ++-
.../timerangeiterator/AggrWindowIterator.java | 4 ++-
.../timerangeiterator/ITimeRangeIterator.java | 7 +++--
.../timerangeiterator/PreAggrWindowIterator.java | 6 ++--
.../PreAggrWindowWithNaturalMonthIterator.java | 1 +
.../TimeRangeIteratorFactory.java | 1 +
.../multilevelqueue/MultilevelPriorityQueue.java | 4 +--
.../iotdb/db/trigger/executor/TriggerExecutor.java | 2 +-
.../db/trigger/executor/TriggerFireVisitor.java | 6 ++--
.../trigger/service/TriggerClassLoaderManager.java | 8 ++---
.../trigger/service/TriggerManagementService.java | 36 +++++++++++++---------
30 files changed, 144 insertions(+), 84 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/modification/Deletion.java
b/server/src/main/java/org/apache/iotdb/db/engine/modification/Deletion.java
index be03f2d17ba..1bc31ddc6a1 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/modification/Deletion.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/modification/Deletion.java
@@ -47,7 +47,7 @@ public class Deletion extends Modification implements
Cloneable {
}
/**
- * constructor of Deletion
+ * constructor of Deletion.
*
* @param startTime start time of delete interval
* @param endTime end time of delete interval
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/modification/ModificationFile.java
b/server/src/main/java/org/apache/iotdb/db/engine/modification/ModificationFile.java
index 54ddbc4acda..582713f8072 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/modification/ModificationFile.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/modification/ModificationFile.java
@@ -34,10 +34,10 @@ import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
import java.nio.file.Files;
import java.nio.file.Paths;
+import java.security.SecureRandom;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-import java.util.Random;
/**
* ModificationFile stores the Modifications of a TsFile or unseq file in
another file in the same
@@ -54,7 +54,7 @@ public class ModificationFile implements AutoCloseable {
private ModificationWriter writer;
private ModificationReader reader;
private String filePath;
- private Random random = new Random();
+ private final SecureRandom random = new SecureRandom();
/**
* Construct a ModificationFile using a file as its storage.
@@ -136,7 +136,10 @@ public class ModificationFile implements AutoCloseable {
public void remove() throws IOException {
close();
- FSFactoryProducer.getFSFactory().getFile(filePath).delete();
+ boolean deleted =
FSFactoryProducer.getFSFactory().getFile(filePath).delete();
+ if (deleted) {
+ logger.warn("Delete ModificationFile {} failed.", filePath);
+ }
}
public boolean exists() {
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/modification/io/LocalTextModificationAccessor.java
b/server/src/main/java/org/apache/iotdb/db/engine/modification/io/LocalTextModificationAccessor.java
index 88b92931875..4dac5b6d6ea 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/modification/io/LocalTextModificationAccessor.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/modification/io/LocalTextModificationAccessor.java
@@ -165,6 +165,8 @@ public class LocalTextModificationAccessor
* index of field endTimestamp is length - 1, startTimestamp is length - 2,
TsFile offset is
* length - 3. Fields in index range [1, length -3) all belong to a
timeseries path in case when
* the path contains comma.
+ *
+ * @throws IOException if there is invalid timestamp.
*/
private static Deletion decodeDeletion(String[] fields) throws IOException {
if (fields.length < 4) {
@@ -200,6 +202,8 @@ public class LocalTextModificationAccessor
* Decode a point deletion record. E.g.
"DELETION,root.ln.wf01.wt01.temperature,111,300" the index
* of field endTimestamp is length - 1, versionNum is length - 2. Fields in
index range [1, length
* - 2) compose timeseries path.
+ *
+ * @throws IOException if there is invalid timestamp.
*/
private static Deletion decodePointDeletion(String[] fields) throws
IOException {
String path = "";
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/modification/utils/TracedBufferedReader.java
b/server/src/main/java/org/apache/iotdb/db/engine/modification/utils/TracedBufferedReader.java
index 3b92aaf13a8..1e98f0a0ec8 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/modification/utils/TracedBufferedReader.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/modification/utils/TracedBufferedReader.java
@@ -37,24 +37,25 @@ import java.util.stream.StreamSupport;
public class TracedBufferedReader extends Reader {
private Reader in;
- private char cb[];
- private int nChars, nextChar;
+ private char[] cb;
+ private int nChars;
+ private int nextChar;
private static final int INVALIDATED = -2;
private static final int UNMARKED = -1;
private int markedChar = UNMARKED;
private int readAheadLimit = 0; /* Valid only when markedChar > 0 */
- /** If the next character is a line feed, skip it */
+ /** If the next character is a line feed, skip it. */
private boolean skipLF = false;
- /** The skipLF flag when the mark was set */
+ /** The skipLF flag when the mark was set. */
private boolean markedSkipLF = false;
- private static int defaultCharBufferSize = 8192;
- private static int defaultExpectedLineLength = 80;
+ private static final int DEFAULT_CHAR_BUFFER_SIZE = 8192;
+ private static final int DEFAULT_EXPECTED_LINE_LENGTH = 80;
- /** the total bytes number already filled into cb */
+ /** the total bytes number already filled into cb. */
private long totalFilledBytesNum = 0;
/**
@@ -80,10 +81,10 @@ public class TracedBufferedReader extends Reader {
* @param in A Reader
*/
public TracedBufferedReader(Reader in) {
- this(in, defaultCharBufferSize);
+ this(in, DEFAULT_CHAR_BUFFER_SIZE);
}
- /** Checks to make sure that the stream has not been closed */
+ /** Checks to make sure that the stream has not been closed. */
private void ensureOpen() throws IOException {
if (in == null) {
throw new IOException("Stream closed");
@@ -100,19 +101,19 @@ public class TracedBufferedReader extends Reader {
/* Marked */
int delta = nextChar - markedChar;
if (delta >= readAheadLimit) {
- /* Gone past read-ahead limit: Invalidate mark */
+ /* Gone past read-ahead limit: Invalidate mark. */
markedChar = INVALIDATED;
readAheadLimit = 0;
dst = 0;
} else {
if (readAheadLimit <= cb.length) {
- /* Shuffle in the current buffer */
+ /* Shuffle in the current buffer. */
System.arraycopy(cb, markedChar, cb, 0, delta);
markedChar = 0;
dst = delta;
} else {
- /* Reallocate buffer to accommodate read-ahead limit */
- char ncb[] = new char[readAheadLimit];
+ /* Reallocate buffer to accommodate read-ahead limit. */
+ char[] ncb = new char[readAheadLimit];
System.arraycopy(cb, markedChar, ncb, 0, delta);
cb = ncb;
markedChar = 0;
@@ -193,7 +194,7 @@ public class TracedBufferedReader extends Reader {
/** {@link BufferedReader#read(char[], int, int)} */
@Override
- public int read(char cbuf[], int off, int len) throws IOException {
+ public int read(char[] cbuf, int off, int len) throws IOException {
synchronized (lock) {
ensureOpen();
if ((off < 0)
@@ -248,7 +249,7 @@ public class TracedBufferedReader extends Reader {
char c = 0;
int i;
- /* Skip a leftover '\n', if necessary */
+ /* Skip a leftover '\n', if necessary. */
if (omitLF && (cb[nextChar] == '\n')) {
nextChar++;
}
@@ -286,7 +287,7 @@ public class TracedBufferedReader extends Reader {
}
if (s == null) {
- s = new StringBuilder(defaultExpectedLineLength);
+ s = new StringBuilder(DEFAULT_EXPECTED_LINE_LENGTH);
}
s.append(cb, startChar, i - startChar);
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/AlignedReadOnlyMemChunk.java
b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/AlignedReadOnlyMemChunk.java
index 7641235e518..a3b76f0f377 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/AlignedReadOnlyMemChunk.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/AlignedReadOnlyMemChunk.java
@@ -34,7 +34,6 @@ import org.apache.iotdb.tsfile.read.common.TimeRange;
import org.apache.iotdb.tsfile.read.reader.IPointReader;
import org.apache.iotdb.tsfile.write.schema.IMeasurementSchema;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
@@ -52,6 +51,7 @@ public class AlignedReadOnlyMemChunk extends ReadOnlyMemChunk
{
* @param schema VectorMeasurementSchema
* @param tvList VectorTvList
* @param deletionList The timeRange of deletionList
+ * @throws QueryProcessException if there is unsupported data type.
*/
public AlignedReadOnlyMemChunk(
IMeasurementSchema schema, TVList tvList, List<List<TimeRange>>
deletionList)
@@ -152,7 +152,7 @@ public class AlignedReadOnlyMemChunk extends
ReadOnlyMemChunk {
}
@Override
- public boolean isEmpty() throws IOException {
+ public boolean isEmpty() {
return tsBlock.isEmpty();
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/QueryDataSource.java
b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/QueryDataSource.java
index 8793b2c135c..238f43ad10a 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/QueryDataSource.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/QueryDataSource.java
@@ -28,7 +28,7 @@ import java.util.TreeMap;
/**
* The QueryDataSource contains all the seq and unseq TsFileResources for one
timeseries in one
- * query
+ * query.
*/
public class QueryDataSource {
@@ -113,12 +113,12 @@ public class QueryDataSource {
}
index = 0;
- int[] unSeqFileOrderIndex = new int[unseqResources.size()];
+ int[] unSeqFileOrderIndexArray = new int[unseqResources.size()];
for (List<Integer> orderIndexes : orderTimeToIndexMap.values()) {
for (Integer orderIndex : orderIndexes) {
- unSeqFileOrderIndex[index++] = orderIndex;
+ unSeqFileOrderIndexArray[index++] = orderIndex;
}
}
- this.unSeqFileOrderIndex = unSeqFileOrderIndex;
+ this.unSeqFileOrderIndex = unSeqFileOrderIndexArray;
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
index 68bedbbd833..1a5a1d5d764 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/querycontext/ReadOnlyMemChunk.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.iotdb.db.engine.querycontext;
import org.apache.iotdb.db.exception.query.QueryProcessException;
@@ -41,7 +42,7 @@ import java.util.Map;
/**
* ReadOnlyMemChunk is a snapshot of the working MemTable and flushing
memtable in the memory used
- * for querying
+ * for querying.
*/
public class ReadOnlyMemChunk {
@@ -137,7 +138,7 @@ public class ReadOnlyMemChunk {
return dataType;
}
- public boolean isEmpty() throws IOException {
+ public boolean isEmpty() {
return tsBlock.isEmpty();
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/builtin/ForwardTrigger.java
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/builtin/ForwardTrigger.java
index 9dbd1958fb1..95fd7325748 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/builtin/ForwardTrigger.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/builtin/ForwardTrigger.java
@@ -36,8 +36,6 @@ import
org.apache.iotdb.db.engine.trigger.utils.BatchHandlerQueue;
import org.apache.iotdb.trigger.api.TriggerAttributes;
import org.apache.iotdb.tsfile.utils.Binary;
-import java.util.HashMap;
-
public class ForwardTrigger implements Trigger {
private static final String PROTOCOL_HTTP = "http";
@@ -46,7 +44,6 @@ public class ForwardTrigger implements Trigger {
private Handler forwardHandler;
private Configuration forwardConfig;
private BatchHandlerQueue<Event> queue;
- private final HashMap<String, String> labels = new HashMap<>();
private String protocol;
@Override
@@ -76,10 +73,10 @@ public class ForwardTrigger implements Trigger {
throws SinkException {
String endpoint = attributes.getString("endpoint");
boolean stopIfException =
attributes.getBooleanOrDefault("stopIfException", false);
- HTTPForwardConfiguration forwardConfig =
+ HTTPForwardConfiguration forwardConfiguration =
new HTTPForwardConfiguration(endpoint, stopIfException);
- forwardConfig.checkConfig();
- return forwardConfig;
+ forwardConfiguration.checkConfig();
+ return forwardConfiguration;
}
private MQTTForwardConfiguration createMQTTConfiguration(TriggerAttributes
attributes)
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/http/HTTPForwardHandler.java
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/http/HTTPForwardHandler.java
index 1efcb2eab6a..621fc08eb4f 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/http/HTTPForwardHandler.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/http/HTTPForwardHandler.java
@@ -40,6 +40,8 @@ public class HTTPForwardHandler implements
Handler<HTTPForwardConfiguration, HTT
private static final Logger LOGGER =
LoggerFactory.getLogger(HTTPForwardHandler.class);
+ private static final String FORWARD_ERROR_MESSAGE = "HTTP Forward Exception";
+
private static CloseableHttpClient client;
private static int referenceCount;
@@ -87,9 +89,9 @@ public class HTTPForwardHandler implements
Handler<HTTPForwardConfiguration, HTT
}
} catch (Exception e) {
if (config.isStopIfException()) {
- throw new SinkException("HTTP Forward Exception", e);
+ throw new SinkException(FORWARD_ERROR_MESSAGE, e);
}
- LOGGER.error("HTTP Forward Exception", e);
+ LOGGER.warn(FORWARD_ERROR_MESSAGE, e);
} finally {
try {
if (null != response) {
@@ -117,9 +119,9 @@ public class HTTPForwardHandler implements
Handler<HTTPForwardConfiguration, HTT
}
} catch (Exception e) {
if (config.isStopIfException()) {
- throw new SinkException("HTTP Forward Exception", e);
+ throw new SinkException(FORWARD_ERROR_MESSAGE, e);
}
- LOGGER.error("HTTP Forward Exception", e);
+ LOGGER.warn(FORWARD_ERROR_MESSAGE, e);
} finally {
try {
if (null != response) {
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/mqtt/MQTTForwardConfiguration.java
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/mqtt/MQTTForwardConfiguration.java
index b538aff003d..2956f366e53 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/mqtt/MQTTForwardConfiguration.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/mqtt/MQTTForwardConfiguration.java
@@ -37,6 +37,7 @@ public class MQTTForwardConfiguration implements
Configuration {
private final int poolSize;
private final boolean stopIfException;
+ @SuppressWarnings("squid:S107")
public MQTTForwardConfiguration(
String host,
int port,
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/mqtt/MQTTForwardHandler.java
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/mqtt/MQTTForwardHandler.java
index 2637c5e3c53..fe896c3e370 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/mqtt/MQTTForwardHandler.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/forward/mqtt/MQTTForwardHandler.java
@@ -36,6 +36,8 @@ public class MQTTForwardHandler implements
Handler<MQTTForwardConfiguration, MQT
private MQTTConnectionPool connectionPool;
private MQTTForwardConfiguration config;
+ private static final String FORWARD_ERROR_MESSAGE = "MQTT Forward Exception";
+
@Override
public void open(MQTTForwardConfiguration config) throws Exception {
this.config = config;
@@ -71,9 +73,9 @@ public class MQTTForwardHandler implements
Handler<MQTTForwardConfiguration, MQT
config.isRetain());
} catch (Exception e) {
if (config.isStopIfException()) {
- throw new SinkException("MQTT Forward Exception", e);
+ throw new SinkException(FORWARD_ERROR_MESSAGE, e);
}
- LOGGER.error("MQTT Forward Exception", e);
+ LOGGER.warn(FORWARD_ERROR_MESSAGE, e);
}
}
@@ -89,9 +91,9 @@ public class MQTTForwardHandler implements
Handler<MQTTForwardConfiguration, MQT
config.getTopic(), sb.toString().getBytes(), config.getQos(),
config.isRetain());
} catch (Exception e) {
if (config.isStopIfException()) {
- throw new SinkException("MQTT Forward Exception", e);
+ throw new SinkException(FORWARD_ERROR_MESSAGE, e);
}
- LOGGER.error("MQTT Forward Exception", e);
+ LOGGER.warn(FORWARD_ERROR_MESSAGE, e);
}
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/mqtt/MQTTConfiguration.java
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/mqtt/MQTTConfiguration.java
index e673592cec4..13d047af75b 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/mqtt/MQTTConfiguration.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/sink/mqtt/MQTTConfiguration.java
@@ -30,7 +30,7 @@ public class MQTTConfiguration implements Configuration {
private final String username;
private final String password;
- /** First reconnection interval milliseconds */
+ /** First reconnection interval milliseconds. */
private final long reconnectDelay;
/**
@@ -42,6 +42,7 @@ public class MQTTConfiguration implements Configuration {
private final PartialPath device;
private final String[] measurements;
+ @SuppressWarnings("squid:S107")
public MQTTConfiguration(
String host,
int port,
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/utils/BatchHandlerQueue.java
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/utils/BatchHandlerQueue.java
index c7b3b022a47..dc19f691913 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/utils/BatchHandlerQueue.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/utils/BatchHandlerQueue.java
@@ -32,7 +32,7 @@ import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
/**
- * Each Trigger instantiate a ForwardQueue
+ * Each Trigger instantiate a ForwardQueue.
*
* @param <T> Subclass of Event
*/
@@ -99,10 +99,6 @@ public class BatchHandlerQueue<T extends Event> {
}
}
- private void handle(ArrayList<T> events) throws Exception {
- handler.onEvent(events);
- }
-
class ForwardQueueConsumer extends Thread {
ArrayBlockingQueue<T> queue;
@@ -112,6 +108,10 @@ public class BatchHandlerQueue<T extends Event> {
this.queue = queue;
}
+ private void handle(ArrayList<T> events) throws Exception {
+ handler.onEvent(events);
+ }
+
@Override
public void run() {
final long maxWaitMillis = 500;
@@ -141,6 +141,7 @@ public class BatchHandlerQueue<T extends Event> {
list.clear();
startMillis = System.currentTimeMillis();
} catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
break;
} catch (Throwable t) {
LOGGER.error("ForwardTaskQueue consumer error", t);
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/utils/HTTPConnectionPool.java
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/utils/HTTPConnectionPool.java
index 0a6503287dd..8259c0ad7db 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/trigger/utils/HTTPConnectionPool.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/trigger/utils/HTTPConnectionPool.java
@@ -25,6 +25,7 @@ import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
public class HTTPConnectionPool {
+ @SuppressWarnings("squid:S3077")
private static volatile PoolingHttpClientConnectionManager
clientConnectionManager;
private HTTPConnectionPool() {}
@@ -33,7 +34,7 @@ public class HTTPConnectionPool {
if (clientConnectionManager == null) {
synchronized (HTTPConnectionPool.class) {
if (clientConnectionManager == null) {
- clientConnectionManager = new PoolingHttpClientConnectionManager();
+ PoolingHttpClientConnectionManager manager = new
PoolingHttpClientConnectionManager();
// Set the max number of connections
clientConnectionManager.setMaxTotal(
IoTDBDescriptor.getInstance().getConfig().getTriggerForwardHTTPPoolSize());
@@ -41,6 +42,7 @@ public class HTTPConnectionPool {
// per website, which will not affect the access of other websites
clientConnectionManager.setDefaultMaxPerRoute(
IoTDBDescriptor.getInstance().getConfig().getTriggerForwardHTTPPOOLMaxPerRoute());
+ clientConnectionManager = manager;
}
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/exception/query/QueryTimeoutRuntimeException.java
b/server/src/main/java/org/apache/iotdb/db/exception/query/QueryTimeoutRuntimeException.java
index 47829294d38..59db9854061 100644
---
a/server/src/main/java/org/apache/iotdb/db/exception/query/QueryTimeoutRuntimeException.java
+++
b/server/src/main/java/org/apache/iotdb/db/exception/query/QueryTimeoutRuntimeException.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.iotdb.db.exception.query;
/** This class is used to throw run time exception when query is time out. */
diff --git
a/server/src/main/java/org/apache/iotdb/db/exception/runtime/ClassLoaderManagerInitializationException.java
b/server/src/main/java/org/apache/iotdb/db/exception/runtime/ClassLoaderManagerInitializationException.java
new file mode 100644
index 00000000000..611735b9a23
--- /dev/null
+++
b/server/src/main/java/org/apache/iotdb/db/exception/runtime/ClassLoaderManagerInitializationException.java
@@ -0,0 +1,26 @@
+/*
+ * 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.iotdb.db.exception.runtime;
+
+public class ClassLoaderManagerInitializationException extends
RuntimeException {
+ public ClassLoaderManagerInitializationException(String message) {
+ super(message);
+ }
+}
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/Accumulator.java
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/Accumulator.java
index a268c96fb61..16e0e8eba3e 100644
--- a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/Accumulator.java
+++ b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/Accumulator.java
@@ -16,6 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
+
package org.apache.iotdb.db.mpp.aggregation;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/CountAccumulator.java
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/CountAccumulator.java
index 538c21d0fe2..ab69f6c490a 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/CountAccumulator.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/CountAccumulator.java
@@ -31,7 +31,9 @@ public class CountAccumulator implements Accumulator {
private long countValue = 0;
- public CountAccumulator() {}
+ public CountAccumulator() {
+ // do nothing
+ }
// Column should be like: | Time | Value |
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SlidingWindowAggregator.java
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SlidingWindowAggregator.java
index 9ce9f803c92..1cff1abb125 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SlidingWindowAggregator.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SlidingWindowAggregator.java
@@ -74,10 +74,10 @@ public abstract class SlidingWindowAggregator extends
Aggregator {
evictingExpiredValue();
}
- /** evicting expired element in queue and reset expired aggregateResult */
+ /** evicting expired element in queue and reset expired aggregateResult. */
protected abstract void evictingExpiredValue();
- /** update queue and aggregateResult */
+ /** update queue and aggregateResult. */
public abstract void processPartialResult(PartialAggregationResult
partialResult);
protected static class PartialAggregationResult {
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SlidingWindowAggregatorFactory.java
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SlidingWindowAggregatorFactory.java
index dc10bdee976..1a0b460aa8a 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SlidingWindowAggregatorFactory.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/slidingwindow/SlidingWindowAggregatorFactory.java
@@ -36,7 +36,9 @@ import java.util.Map;
public class SlidingWindowAggregatorFactory {
- /** comparators used for MonotonicQueueSlidingWindowAggregator */
+ private SlidingWindowAggregatorFactory() {}
+
+ /** comparators used for MonotonicQueueSlidingWindowAggregator. */
private static final Map<TSDataType, Comparator<Column>> maxComparators =
new EnumMap<>(TSDataType.class);
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/AggrWindowIterator.java
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/AggrWindowIterator.java
index 8a2c9a6b064..d1123e34987 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/AggrWindowIterator.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/AggrWindowIterator.java
@@ -45,6 +45,7 @@ public class AggrWindowIterator implements ITimeRangeIterator
{
private TimeRange curTimeRange;
private boolean hasCachedTimeRange;
+ @SuppressWarnings("squid:S107")
public AggrWindowIterator(
long startTime,
long endTime,
@@ -124,7 +125,8 @@ public class AggrWindowIterator implements
ITimeRangeIterator {
return true;
}
- long retStartTime, retEndTime;
+ long retStartTime;
+ long retEndTime;
long curStartTime = curTimeRange.getMin();
if (isAscending) {
if (isSlidingStepByMonth) {
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/ITimeRangeIterator.java
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/ITimeRangeIterator.java
index 47a6961fd7e..5e1b0bb65a3 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/ITimeRangeIterator.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/ITimeRangeIterator.java
@@ -29,14 +29,15 @@ import org.apache.iotdb.tsfile.read.common.TimeRange;
*/
public interface ITimeRangeIterator {
- /** return the first time range by sorting order */
+ /** return the first time range by sorting order. */
TimeRange getFirstTimeRange();
- /** @return whether current iterator has next time range */
+ /** @return whether current iterator has next time range. */
boolean hasNextTimeRange();
+
/**
* return the next time range according to curStartTime (the start time of
the last returned time
- * range)
+ * range).
*/
TimeRange nextTimeRange();
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/PreAggrWindowIterator.java
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/PreAggrWindowIterator.java
index c0b8c3b0002..750b103d184 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/PreAggrWindowIterator.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/PreAggrWindowIterator.java
@@ -101,7 +101,8 @@ public class PreAggrWindowIterator implements
ITimeRangeIterator {
return true;
}
- long retStartTime, retEndTime;
+ long retStartTime;
+ long retEndTime;
long curStartTime = curTimeRange.getMin();
if (isAscending) {
retStartTime = curStartTime + curSlidingStep;
@@ -181,7 +182,8 @@ public class PreAggrWindowIterator implements
ITimeRangeIterator {
return (long) Math.ceil(queryRange / (double) slidingStep);
}
- long interval1 = interval % slidingStep, interval2 = slidingStep -
interval % slidingStep;
+ long interval1 = interval % slidingStep;
+ long interval2 = slidingStep - interval % slidingStep;
long intervalNum = Math.floorDiv(queryRange, interval1 + interval2);
long tmpStartTime = startTime + intervalNum * (interval1 + interval2);
if (tmpStartTime + interval1 > endTime) {
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/PreAggrWindowWithNaturalMonthIterator.java
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/PreAggrWindowWithNaturalMonthIterator.java
index 87f6cb8630e..d1e9c8eac7f 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/PreAggrWindowWithNaturalMonthIterator.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/PreAggrWindowWithNaturalMonthIterator.java
@@ -37,6 +37,7 @@ public class PreAggrWindowWithNaturalMonthIterator implements
ITimeRangeIterator
private TimeRange curTimeRange;
private boolean hasCachedTimeRange;
+ @SuppressWarnings("squid:S107")
public PreAggrWindowWithNaturalMonthIterator(
long startTime,
long endTime,
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/TimeRangeIteratorFactory.java
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/TimeRangeIteratorFactory.java
index 6ba2138956f..33e8575a9a1 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/TimeRangeIteratorFactory.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/aggregation/timerangeiterator/TimeRangeIteratorFactory.java
@@ -30,6 +30,7 @@ public class TimeRangeIteratorFactory {
*
* <p>Note: interval and slidingStep is always stand for the milliseconds in
this method.
*/
+ @SuppressWarnings("squid:S107")
public static ITimeRangeIterator getTimeRangeIterator(
long startTime,
long endTime,
diff --git
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/multilevelqueue/MultilevelPriorityQueue.java
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/multilevelqueue/MultilevelPriorityQueue.java
index 0a87e99532f..f5327c418bc 100644
---
a/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/multilevelqueue/MultilevelPriorityQueue.java
+++
b/server/src/main/java/org/apache/iotdb/db/mpp/execution/schedule/queue/multilevelqueue/MultilevelPriorityQueue.java
@@ -258,8 +258,8 @@ public class MultilevelPriorityQueue extends
IndexedBlockingReserveQueue<DriverT
long timeAccruedToLevel =
Math.min(
SECONDS.toNanos(
- LEVEL_THRESHOLD_SECONDS[currentLevel + 1]
- - LEVEL_THRESHOLD_SECONDS[currentLevel]),
+ (long) LEVEL_THRESHOLD_SECONDS[currentLevel + 1]
+ - (long) LEVEL_THRESHOLD_SECONDS[currentLevel]),
remainingLevelContribution);
addLevelTime(currentLevel, timeAccruedToLevel);
remainingLevelContribution -= timeAccruedToLevel;
diff --git
a/server/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerExecutor.java
b/server/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerExecutor.java
index e3887388ad1..c36abcb4d02 100644
---
a/server/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerExecutor.java
+++
b/server/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerExecutor.java
@@ -100,7 +100,7 @@ public class TriggerExecutor {
throws TriggerExecutionException {
String errorMessage =
String.format(
- "Error occurred during executing Trigger(%s)#%s: %s, perhaps
need to check whether the implementation of Trigger is correct according to the
trigger-api description.",
+ "Error occurred during executing Trigger(%s)#%s: %s, please
check whether the implementation of Trigger is correct according to the
trigger-api description.",
triggerInformation.getTriggerName(), methodName,
System.lineSeparator())
+ t;
LOGGER.warn(errorMessage);
diff --git
a/server/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerFireVisitor.java
b/server/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerFireVisitor.java
index 03089cba779..dee1e21681f 100644
---
a/server/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerFireVisitor.java
+++
b/server/src/main/java/org/apache/iotdb/db/trigger/executor/TriggerFireVisitor.java
@@ -72,7 +72,7 @@ public class TriggerFireVisitor extends
PlanVisitor<TriggerFireResult, TriggerEv
ConfigNodeClientManager.getInstance();
/**
- * How many times should we retry when error occurred during firing a
trigger on another datanode
+ * How many times should we retry when error occurred during firing a
trigger on another datanode.
*/
private static final int FIRE_RETRY_NUM =
IoTDBDescriptor.getInstance().getConfig().getRetryNumToFindStatefulTrigger();
@@ -395,7 +395,7 @@ public class TriggerFireVisitor extends
PlanVisitor<TriggerFireResult, TriggerEv
return result;
}
- /** Return true if the config node returns a new TDataNodeLocation */
+ /** Return true if the config node returns a new TDataNodeLocation. */
private boolean updateLocationOfStatefulTrigger(String triggerName, int
currentDataNodeId) {
try (ConfigNodeClient configNodeClient =
CONFIG_NODE_CLIENT_MANAGER.borrowClient(ConfigNodeInfo.CONFIG_REGION_ID)) {
@@ -411,7 +411,7 @@ public class TriggerFireVisitor extends
PlanVisitor<TriggerFireResult, TriggerEv
return false;
} catch (ClientManagerException | TException | IOException e) {
LOGGER.error(
- "Failed to update location of stateful trigger({}) through config
node and the cause is {}.",
+ "Failed to update location of stateful trigger({}) through config
node. The cause is {}.",
triggerName,
e);
return false;
diff --git
a/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerClassLoaderManager.java
b/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerClassLoaderManager.java
index e82c82e5581..d2ad204fb0b 100644
---
a/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerClassLoaderManager.java
+++
b/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerClassLoaderManager.java
@@ -22,6 +22,7 @@ package org.apache.iotdb.db.trigger.service;
import org.apache.iotdb.commons.file.SystemFileFactory;
import org.apache.iotdb.db.conf.IoTDBConfig;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
+import
org.apache.iotdb.db.exception.runtime.ClassLoaderManagerInitializationException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -41,6 +42,7 @@ public class TriggerClassLoaderManager {
* user executes CREATE TRIGGER or after the user executes DROP TRIGGER.
Therefore, we need to
* continuously maintain the activeClassLoader so that the classes it loads
are always up-to-date.
*/
+ @SuppressWarnings("squid:S3077")
private volatile TriggerClassLoader activeClassLoader;
private TriggerClassLoaderManager(String libRoot) throws IOException {
@@ -57,10 +59,6 @@ public class TriggerClassLoaderManager {
return activeClassLoader;
}
- public TriggerClassLoader getActiveClassLoader() {
- return activeClassLoader;
- }
-
/////////////////////////////////////////////////////////////////////////////////////////////////
// singleton instance holder
/////////////////////////////////////////////////////////////////////////////////////////////////
@@ -73,7 +71,7 @@ public class TriggerClassLoaderManager {
SystemFileFactory.INSTANCE.makeDirIfNecessary(CONFIG.getTriggerDir());
INSTANCE = new TriggerClassLoaderManager(CONFIG.getTriggerDir());
} catch (IOException e) {
- throw new RuntimeException(e);
+ throw new ClassLoaderManagerInitializationException(e.getMessage());
}
}
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerManagementService.java
b/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerManagementService.java
index 8ba713b9e93..82a982a0281 100644
---
a/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerManagementService.java
+++
b/server/src/main/java/org/apache/iotdb/db/trigger/service/TriggerManagementService.java
@@ -202,6 +202,8 @@ public class TriggerManagementService {
}
/**
+ * Get all the triggers that matched this Pattern.
+ *
* @param devicePath PathPattern
* @return all the triggers that matched this Pattern
*/
@@ -215,21 +217,25 @@ public class TriggerManagementService {
String triggerName = triggerInformation.getTriggerName();
String jarName = triggerInformation.getJarName();
if (triggerTable.containsTrigger(triggerName)
- &&
TriggerExecutableManager.getInstance().hasFileUnderLibRoot(jarName)) {
- if (isLocalJarConflicted(triggerInformation)) {
- // same jar name with different md5
- String errorMessage =
- String.format(
- "Failed to registered trigger %s, "
- + "because existed md5 of jar file for trigger %s is
different from the new jar file. ",
- triggerName, triggerName);
- LOGGER.warn(errorMessage);
- throw new TriggerManagementException(errorMessage);
- }
+ && TriggerExecutableManager.getInstance().hasFileUnderLibRoot(jarName)
+ && isLocalJarConflicted(triggerInformation)) {
+ // same jar name with different md5
+ String errorMessage =
+ String.format(
+ "Failed to registered trigger %s, because existed"
+ + " md5 of jar file for trigger %s is different from the new
jar file. ",
+ triggerName, triggerName);
+ LOGGER.warn(errorMessage);
+ throw new TriggerManagementException(errorMessage);
}
}
- /** check whether local jar is correct according to md5 */
+ /**
+ * check whether local jar is correct according to md5.
+ *
+ * @throws TriggerManagementException if failed to compute md5 of the jar
file.
+ */
+ @SuppressWarnings("squid:S4790")
public boolean isLocalJarConflicted(TriggerInformation triggerInformation)
throws TriggerManagementException {
String triggerName = triggerInformation.getTriggerName();
@@ -263,8 +269,8 @@ public class TriggerManagementService {
} catch (IOException e) {
String errorMessage =
String.format(
- "Failed to registered trigger %s, "
- + "because error occurred when trying to compute md5 of
jar file for trigger %s ",
+ "Failed to registered trigger %s, because error "
+ + "occurred when trying to compute md5 of jar file for
trigger %s ",
triggerName, triggerName);
LOGGER.warn(errorMessage, e);
throw new TriggerManagementException(errorMessage);
@@ -331,6 +337,8 @@ public class TriggerManagementService {
}
/**
+ * Get DataNodeLocation of the given StatefulTrigger.
+ *
* @param triggerName given trigger
* @return TDataNodeLocation of DataNode where instance of given stateful
trigger is on. Null if
* trigger not found.