You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ha...@apache.org on 2021/07/01 05:23:59 UTC
[iotdb] branch master updated: [IOTDB-1460] Failed to load
configurations on startup (NPE) (#3479)
This is an automated email from the ASF dual-hosted git repository.
haonan 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 b44915d [IOTDB-1460] Failed to load configurations on startup (NPE) (#3479)
b44915d is described below
commit b44915da9caf6473b0edb6b753c5d38feedab951
Author: Steve Yurong Su (宇荣) <ro...@apache.org>
AuthorDate: Thu Jul 1 00:23:35 2021 -0500
[IOTDB-1460] Failed to load configurations on startup (NPE) (#3479)
---
.../org/apache/iotdb/db/conf/IoTDBDescriptor.java | 52 ++++++------
.../apache/iotdb/db/qp/utils/DatetimeUtils.java | 18 ++++-
.../db/qp/utils/DatetimeQueryDataSetUtilsTest.java | 93 ++++++++++++----------
3 files changed, 96 insertions(+), 67 deletions(-)
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 025d604..0ba95d4 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -489,30 +489,6 @@ public class IoTDBDescriptor {
properties.getProperty(
"compaction_thread_num", Integer.toString(conf.getCompactionThreadNum()))));
- conf.setContinuousQueryThreadNum(
- Integer.parseInt(
- properties.getProperty(
- "continuous_query_thread_num",
- Integer.toString(conf.getContinuousQueryThreadNum()))));
-
- if (conf.getContinuousQueryThreadNum() <= 0) {
- conf.setContinuousQueryThreadNum(Runtime.getRuntime().availableProcessors() / 2);
- }
-
- conf.setMaxPendingContinuousQueryTasks(
- Integer.parseInt(
- properties.getProperty(
- "max_pending_continuous_query_tasks",
- Integer.toString(conf.getMaxPendingContinuousQueryTasks()))));
-
- if (conf.getMaxPendingContinuousQueryTasks() <= 0) {
- conf.setMaxPendingContinuousQueryTasks(64);
- }
-
- conf.setContinuousQueryMinimumEveryInterval(
- DatetimeUtils.convertDurationStrToLong(
- properties.getProperty("continuous_query_minimum_every_interval", "1s")));
-
conf.setMergeWriteThroughputMbPerSec(
Integer.parseInt(
properties.getProperty(
@@ -795,6 +771,9 @@ public class IoTDBDescriptor {
// trigger
loadTriggerProps(properties);
+ // CQ
+ loadCQProps(properties);
+
} catch (FileNotFoundException e) {
logger.warn("Fail to find config file {}", url, e);
} catch (IOException e) {
@@ -1200,6 +1179,31 @@ public class IoTDBDescriptor {
}
}
+ private void loadCQProps(Properties properties) {
+ conf.setContinuousQueryThreadNum(
+ Integer.parseInt(
+ properties.getProperty(
+ "continuous_query_thread_num",
+ Integer.toString(conf.getContinuousQueryThreadNum()))));
+ if (conf.getContinuousQueryThreadNum() <= 0) {
+ conf.setContinuousQueryThreadNum(Runtime.getRuntime().availableProcessors() / 2);
+ }
+
+ conf.setMaxPendingContinuousQueryTasks(
+ Integer.parseInt(
+ properties.getProperty(
+ "max_pending_continuous_query_tasks",
+ Integer.toString(conf.getMaxPendingContinuousQueryTasks()))));
+ if (conf.getMaxPendingContinuousQueryTasks() <= 0) {
+ conf.setMaxPendingContinuousQueryTasks(64);
+ }
+
+ conf.setContinuousQueryMinimumEveryInterval(
+ DatetimeUtils.convertDurationStrToLong(
+ properties.getProperty("continuous_query_minimum_every_interval", "1s"),
+ conf.getTimestampPrecision()));
+ }
+
/** Get default encode algorithm by data type */
public TSEncoding getDefaultEncodingByType(TSDataType dataType) {
switch (dataType) {
diff --git a/server/src/main/java/org/apache/iotdb/db/qp/utils/DatetimeUtils.java b/server/src/main/java/org/apache/iotdb/db/qp/utils/DatetimeUtils.java
index e0b1c26..2ca9939 100644
--- a/server/src/main/java/org/apache/iotdb/db/qp/utils/DatetimeUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/qp/utils/DatetimeUtils.java
@@ -20,6 +20,7 @@ package org.apache.iotdb.db.qp.utils;
import org.apache.iotdb.db.conf.IoTDBDescriptor;
import org.apache.iotdb.db.exception.query.LogicalOperatorException;
+import org.apache.iotdb.db.utils.TestOnly;
import java.time.DateTimeException;
import java.time.Instant;
@@ -519,14 +520,23 @@ public class DatetimeUtils {
return convertDurationStrToLong(-1, duration);
}
+ public static long convertDurationStrToLong(String duration, String timestampPrecision) {
+ return convertDurationStrToLong(-1, duration, timestampPrecision);
+ }
+
+ public static long convertDurationStrToLong(long currentTime, String duration) {
+ return convertDurationStrToLong(
+ currentTime, duration, IoTDBDescriptor.getInstance().getConfig().getTimestampPrecision());
+ }
+
/**
* convert duration string to time value.
*
* @param duration represent duration string like: 12d8m9ns, 1y1mo, etc.
* @return time in milliseconds, microseconds, or nanoseconds depending on the profile
*/
- public static long convertDurationStrToLong(long currentTime, String duration) {
- String timestampPrecision = IoTDBDescriptor.getInstance().getConfig().getTimestampPrecision();
+ public static long convertDurationStrToLong(
+ long currentTime, String duration, String timestampPrecision) {
long total = 0;
long temp = 0;
for (int i = 0; i < duration.length(); i++) {
@@ -553,7 +563,9 @@ public class DatetimeUtils {
return total;
}
- public static long convertDurationStrToLong(long value, String unit, String timestampPrecision) {
+ @TestOnly
+ public static long convertDurationStrToLongForTest(
+ long value, String unit, String timestampPrecision) {
return convertDurationStrToLong(-1, value, unit, timestampPrecision);
}
diff --git a/server/src/test/java/org/apache/iotdb/db/qp/utils/DatetimeQueryDataSetUtilsTest.java b/server/src/test/java/org/apache/iotdb/db/qp/utils/DatetimeQueryDataSetUtilsTest.java
index 999a590..469bad0 100644
--- a/server/src/test/java/org/apache/iotdb/db/qp/utils/DatetimeQueryDataSetUtilsTest.java
+++ b/server/src/test/java/org/apache/iotdb/db/qp/utils/DatetimeQueryDataSetUtilsTest.java
@@ -74,60 +74,73 @@ public class DatetimeQueryDataSetUtilsTest {
/** Test time precision is ms. */
@Test
public void convertDurationStrToLongTest1() {
- Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLong(7, "s", "ms"));
- Assert.assertEquals(420000L, DatetimeUtils.convertDurationStrToLong(7, "m", "ms"));
- Assert.assertEquals(25200000L, DatetimeUtils.convertDurationStrToLong(7, "h", "ms"));
- Assert.assertEquals(604800000L, DatetimeUtils.convertDurationStrToLong(7, "d", "ms"));
- Assert.assertEquals(4233600000L, DatetimeUtils.convertDurationStrToLong(7, "w", "ms"));
- Assert.assertEquals(18144000000L, DatetimeUtils.convertDurationStrToLong(7, "mo", "ms"));
- Assert.assertEquals(220752000000L, DatetimeUtils.convertDurationStrToLong(7, "y", "ms"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLong(7, "ms", "ms"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLong(7000, "us", "ms"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLong(7000000, "ns", "ms"));
+ Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLongForTest(7, "s", "ms"));
+ Assert.assertEquals(420000L, DatetimeUtils.convertDurationStrToLongForTest(7, "m", "ms"));
+ Assert.assertEquals(25200000L, DatetimeUtils.convertDurationStrToLongForTest(7, "h", "ms"));
+ Assert.assertEquals(604800000L, DatetimeUtils.convertDurationStrToLongForTest(7, "d", "ms"));
+ Assert.assertEquals(4233600000L, DatetimeUtils.convertDurationStrToLongForTest(7, "w", "ms"));
+ Assert.assertEquals(18144000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "mo", "ms"));
+ Assert.assertEquals(220752000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "y", "ms"));
+ Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7, "ms", "ms"));
+ Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7000, "us", "ms"));
+ Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7000000, "ns", "ms"));
}
/** Test time precision is us. */
@Test
public void convertDurationStrToLongTest2() {
- Assert.assertEquals(7000000L, DatetimeUtils.convertDurationStrToLong(7, "s", "us"));
- Assert.assertEquals(420000000L, DatetimeUtils.convertDurationStrToLong(7, "m", "us"));
- Assert.assertEquals(25200000000L, DatetimeUtils.convertDurationStrToLong(7, "h", "us"));
- Assert.assertEquals(604800000000L, DatetimeUtils.convertDurationStrToLong(7, "d", "us"));
- Assert.assertEquals(4233600000000L, DatetimeUtils.convertDurationStrToLong(7, "w", "us"));
- Assert.assertEquals(18144000000000L, DatetimeUtils.convertDurationStrToLong(7, "mo", "us"));
- Assert.assertEquals(220752000000000L, DatetimeUtils.convertDurationStrToLong(7, "y", "us"));
- Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLong(7, "ms", "us"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLong(7, "us", "us"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLong(7000, "ns", "us"));
+ Assert.assertEquals(7000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "s", "us"));
+ Assert.assertEquals(420000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "m", "us"));
+ Assert.assertEquals(25200000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "h", "us"));
+ Assert.assertEquals(604800000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "d", "us"));
+ Assert.assertEquals(
+ 4233600000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "w", "us"));
+ Assert.assertEquals(
+ 18144000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "mo", "us"));
+ Assert.assertEquals(
+ 220752000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "y", "us"));
+ Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLongForTest(7, "ms", "us"));
+ Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7, "us", "us"));
+ Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7000, "ns", "us"));
}
/** Test time precision is ns. */
@Test
public void convertDurationStrToLongTest3() {
- Assert.assertEquals(7000000000L, DatetimeUtils.convertDurationStrToLong(7, "s", "ns"));
- Assert.assertEquals(420000000000L, DatetimeUtils.convertDurationStrToLong(7, "m", "ns"));
- Assert.assertEquals(25200000000000L, DatetimeUtils.convertDurationStrToLong(7, "h", "ns"));
- Assert.assertEquals(604800000000000L, DatetimeUtils.convertDurationStrToLong(7, "d", "ns"));
- Assert.assertEquals(4233600000000000L, DatetimeUtils.convertDurationStrToLong(7, "w", "ns"));
- Assert.assertEquals(18144000000000000L, DatetimeUtils.convertDurationStrToLong(7, "mo", "ns"));
- Assert.assertEquals(220752000000000000L, DatetimeUtils.convertDurationStrToLong(7, "y", "ns"));
- Assert.assertEquals(7000000L, DatetimeUtils.convertDurationStrToLong(7, "ms", "ns"));
- Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLong(7, "us", "ns"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLong(7, "ns", "ns"));
+ Assert.assertEquals(7000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "s", "ns"));
+ Assert.assertEquals(420000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "m", "ns"));
+ Assert.assertEquals(
+ 25200000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "h", "ns"));
+ Assert.assertEquals(
+ 604800000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "d", "ns"));
+ Assert.assertEquals(
+ 4233600000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "w", "ns"));
+ Assert.assertEquals(
+ 18144000000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "mo", "ns"));
+ Assert.assertEquals(
+ 220752000000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "y", "ns"));
+ Assert.assertEquals(7000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "ms", "ns"));
+ Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLongForTest(7, "us", "ns"));
+ Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7, "ns", "ns"));
}
@Test
public void getInstantWithPrecisionTest() {
- Assert.assertEquals(7000000000L, DatetimeUtils.convertDurationStrToLong(7, "s", "ns"));
- Assert.assertEquals(420000000000L, DatetimeUtils.convertDurationStrToLong(7, "m", "ns"));
- Assert.assertEquals(25200000000000L, DatetimeUtils.convertDurationStrToLong(7, "h", "ns"));
- Assert.assertEquals(604800000000000L, DatetimeUtils.convertDurationStrToLong(7, "d", "ns"));
- Assert.assertEquals(4233600000000000L, DatetimeUtils.convertDurationStrToLong(7, "w", "ns"));
- Assert.assertEquals(18144000000000000L, DatetimeUtils.convertDurationStrToLong(7, "mo", "ns"));
- Assert.assertEquals(220752000000000000L, DatetimeUtils.convertDurationStrToLong(7, "y", "ns"));
- Assert.assertEquals(7000000L, DatetimeUtils.convertDurationStrToLong(7, "ms", "ns"));
- Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLong(7, "us", "ns"));
- Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLong(7, "ns", "ns"));
+ Assert.assertEquals(7000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "s", "ns"));
+ Assert.assertEquals(420000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "m", "ns"));
+ Assert.assertEquals(
+ 25200000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "h", "ns"));
+ Assert.assertEquals(
+ 604800000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "d", "ns"));
+ Assert.assertEquals(
+ 4233600000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "w", "ns"));
+ Assert.assertEquals(
+ 18144000000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "mo", "ns"));
+ Assert.assertEquals(
+ 220752000000000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "y", "ns"));
+ Assert.assertEquals(7000000L, DatetimeUtils.convertDurationStrToLongForTest(7, "ms", "ns"));
+ Assert.assertEquals(7000L, DatetimeUtils.convertDurationStrToLongForTest(7, "us", "ns"));
+ Assert.assertEquals(7L, DatetimeUtils.convertDurationStrToLongForTest(7, "ns", "ns"));
}
/** Test convert duration including natural month unit. Time includes: 1970-01-01 ~ 1970-12-01 */