This is an automated email from the ASF dual-hosted git repository.
xingtanzjr pushed a commit to branch guonengtest
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/guonengtest by this push:
new ea0cac2afb fix sync latch bug
ea0cac2afb is described below
commit ea0cac2afb58ea0643b0b36ce27c72974c8b8343
Author: Jinrui.Zhang <[email protected]>
AuthorDate: Tue Apr 18 12:30:49 2023 +0800
fix sync latch bug
---
.../src/main/java/org/apache/iotdb/ReadTest.java | 15 +-
.../src/main/java/org/apache/iotdb/WriterTest.java | 16 +-
example/session/src/main/resources/logback.xml | 265 +--------------------
3 files changed, 14 insertions(+), 282 deletions(-)
diff --git a/example/session/src/main/java/org/apache/iotdb/ReadTest.java
b/example/session/src/main/java/org/apache/iotdb/ReadTest.java
index e0f7b6ffca..829eb5168f 100644
--- a/example/session/src/main/java/org/apache/iotdb/ReadTest.java
+++ b/example/session/src/main/java/org/apache/iotdb/ReadTest.java
@@ -103,11 +103,12 @@ public class ReadTest {
}
}
- protected void finishRead(long cost) throws InterruptedException {
+ protected void finishReadAndWait(long cost) throws InterruptedException {
+ CountDownLatch currentLatch = latch;
totalCost += cost;
synchronized (this) {
- latch.countDown();
- if (latch.getCount() == 0) {
+ currentLatch.countDown();
+ if (currentLatch.getCount() == 0) {
needResetLatch = true;
long totalCost = (System.nanoTime() - currentTimestamp);
LOGGER.info(
@@ -122,10 +123,7 @@ public class ReadTest {
}
}
}
- }
-
- protected void waitCurrentLoopFinished() throws InterruptedException {
- latch.await();
+ currentLatch.await();
}
}
@@ -205,8 +203,7 @@ public class ReadTest {
long startTime = System.nanoTime();
executeQuery();
long cost = System.nanoTime() - startTime;
- signal.finishRead(cost);
- signal.waitCurrentLoopFinished();
+ signal.finishReadAndWait(cost);
} catch (InterruptedException | IoTDBConnectionException |
StatementExecutionException e) {
throw new RuntimeException(e);
}
diff --git a/example/session/src/main/java/org/apache/iotdb/WriterTest.java
b/example/session/src/main/java/org/apache/iotdb/WriterTest.java
index b7fb52831c..ac12b5a67f 100644
--- a/example/session/src/main/java/org/apache/iotdb/WriterTest.java
+++ b/example/session/src/main/java/org/apache/iotdb/WriterTest.java
@@ -97,10 +97,11 @@ public class WriterTest {
}
}
- protected void finishInsert() {
+ protected void finishInsertAndWait() throws InterruptedException {
+ CountDownLatch currentLatch = latch;
synchronized (this) {
- latch.countDown();
- if (latch.getCount() == 0) {
+ currentLatch.countDown();
+ if (currentLatch.getCount() == 0) {
needResetLatch = true;
LOGGER.info(
"one loop finished. cost: {}ms. total rows: {}",
@@ -108,10 +109,7 @@ public class WriterTest {
totalRowNumber.get());
}
}
- }
-
- protected void waitCurrentLoopFinished() throws InterruptedException {
- latch.await();
+ currentLatch.await();
}
}
@@ -131,12 +129,12 @@ public class WriterTest {
try {
int insertDeviceCount = insertRecords(index,
signal.currentTimestamp);
totalRowNumber.addAndGet(insertDeviceCount);
- signal.finishInsert();
- signal.waitCurrentLoopFinished();
+ signal.finishInsertAndWait();
} catch (Exception e) {
LOGGER.error("insert error. Thread: {}. Error:", index, e);
}
}
+ LOGGER.info("insert worker finished");
}
}
diff --git a/example/session/src/main/resources/logback.xml
b/example/session/src/main/resources/logback.xml
index 4f7373e1c2..632499e6df 100644
--- a/example/session/src/main/resources/logback.xml
+++ b/example/session/src/main/resources/logback.xml
@@ -23,101 +23,6 @@
<jmxConfigurator/>
<!-- prevent logback from outputting its own status at the start of every
log -->
<statusListener class="ch.qos.logback.core.status.NopStatusListener"/>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="FILEERROR">
- <file>${IOTDB_HOME}/logs/log_datanode_error.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-error-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>10MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>512MB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <level>error</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="FILEWARN">
- <file>${IOTDB_HOME}/logs/log_datanode_warn.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-warn-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>10MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>512MB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <level>WARN</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="FILEINFO">
- <file>${IOTDB_HOME}/logs/log_datanode_info.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-info-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>50MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>5GB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <level>INFO</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="FILEDEBUG">
- <file>${IOTDB_HOME}/logs/log_datanode_debug.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-debug-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>50MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>5GB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <level>DEBUG</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="FILETRACE">
- <file>${IOTDB_HOME}/logs/log_datanode_trace.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-trace-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>50MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>5GB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.LevelFilter">
- <level>TRACE</level>
- <onMatch>ACCEPT</onMatch>
- <onMismatch>DENY</onMismatch>
- </filter>
- </appender>
<appender class="ch.qos.logback.core.ConsoleAppender" name="stdout">
<Target>System.out</Target>
<encoder>
@@ -128,175 +33,7 @@
<level>${CONSOLE_LOG_LEVEL:-DEBUG}</level>
</filter>
</appender>
- <!-- a log appender that collect all log records whose level is greater
than debug-->
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="FILEALL">
- <file>${IOTDB_HOME}/logs/log_datanode_all.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-all-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>50MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>5GB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- </appender>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="FILE_COST_MEASURE">
- <file>${IOTDB_HOME}/logs/log_datanode_measure.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-measure-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>10MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>512MB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- </appender>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="SYNC">
- <file>${IOTDB_HOME}/logs/log_datanode_sync.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-sync-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>10MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>512MB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- </appender>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="AUDIT">
- <file>${IOTDB_HOME}/logs/log_datanode_audit.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-audit-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>10MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>512MB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- </appender>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="QUERY_DEBUG">
- <file>${IOTDB_HOME}/logs/log_datanode_query_debug.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-query-debug-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>10MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>512MB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- </appender>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="SLOW_SQL">
- <file>${IOTDB_HOME}/logs/log_datanode_slow_sql.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-slow-sql-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>10MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>512MB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- </appender>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="QUERY_FREQUENCY">
- <file>${IOTDB_HOME}/logs/log_datanode_query_frequency.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-query-frequency-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>10MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>512MB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- </appender>
- <appender class="ch.qos.logback.core.rolling.RollingFileAppender"
name="COMPACTION">
- <file>${IOTDB_HOME}/logs/log_datanode_compaction.log</file>
- <rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
-
<fileNamePattern>${IOTDB_HOME}/logs/log-datanode-compaction-%d{yyyyMMdd}.%i.log.gz</fileNamePattern>
- <maxFileSize>10MB</maxFileSize>
- <maxHistory>168</maxHistory>
- <totalSizeCap>512MB</totalSizeCap>
- </rollingPolicy>
- <append>true</append>
- <encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
- <pattern>%d [%t] %-5p %C{25}:%L - %m %n</pattern>
- <charset>utf-8</charset>
- </encoder>
- <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
- <level>INFO</level>
- </filter>
- </appender>
- <root level="info">
- <appender-ref ref="FILETRACE"/>
- <appender-ref ref="FILEDEBUG"/>
- <appender-ref ref="FILEWARN"/>
- <appender-ref ref="FILEERROR"/>
- <appender-ref ref="FILEINFO"/>
- <appender-ref ref="FILEALL"/>
+ <root level="INFO">
<appender-ref ref="stdout"/>
</root>
- <logger level="OFF" name="io.moquette.broker.metrics.MQTTMessageLogger"/>
- <logger level="info" name="org.apache.iotdb.db.service"/>
- <logger level="info" name="org.apache.iotdb.db.conf"/>
- <logger level="info" name="org.apache.iotdb.db.cost.statistic">
- <appender-ref ref="FILE_COST_MEASURE"/>
- </logger>
- <logger level="info" name="org.apache.iotdb.db.sync">
- <appender-ref ref="SYNC"/>
- </logger>
- <logger level="info" name="IoTDB_AUDIT_LOGGER">
- <appender-ref ref="AUDIT"/>
- </logger>
- <logger level="info" name="QUERY_DEBUG">
- <appender-ref ref="QUERY_DEBUG"/>
- </logger>
- <logger level="info" name="SLOW_SQL">
- <appender-ref ref="SLOW_SQL"/>
- </logger>
- <logger level="info" name="QUERY_FREQUENCY">
- <appender-ref ref="QUERY_FREQUENCY"/>
- </logger>
- <logger level="info" name="DETAILED_FAILURE_QUERY_TRACE"/>
- <logger level="info" name="COMPACTION">
- <appender-ref ref="COMPACTION"/>
- </logger>
</configuration>