You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by hx...@apache.org on 2019/09/26 17:19:00 UTC

[incubator-iotdb] branch rel/0.8 updated (d87564f -> 2076579)

This is an automated email from the ASF dual-hosted git repository.

hxd pushed a change to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git.


    from d87564f  Merge pull request #334 from apache/0.8-fix_check-wal_script_new
     new 2fbd7b9  [IoTDB-172]fix bug about TsFileResource updateTime
     new 2e5324b  fix a bug in DirectoryManager
     new 8ee937b  fix a bug in TimeRange's intersect function
     new 66d0d9d  fix tsfile example data type
     new e393abf  fix log size
     new 4fd3029  Change all the str.length() to str.getBytes().length while calculating the serialized byte size
     new f2117d7  Set log level to error
     new 4f2f3b1  IOTDB-242 fix mvn integration-test failed because the files in the target folder changes
     new 26157c4  IOTDB-242 fix mvn integration-test failed because the files in the target folder changes (server and client module)
     new adc3f13  IOTDB-242 fix mvn integration-test failed because the files in the target folder changes (server and client module)
     new 143529f  solve the conflict; fix compile issue for ChunkGroupMetaData
     new 2076579  add release notes for 0.8.1

The 12 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 RELEASE_NOTES.md                                   |  11 ++
 .../apache/iotdb/cli/client/AbstractScript.java    |  19 +-
 .../iotdb/cli/client/StartClientScriptIT.java      |   3 +-
 docs/Documentation/UserGuide/7-TsFile/2-Usage.md   |  20 +-
 grafana/pom.xml                                    |   2 +-
 jdbc/pom.xml                                       |   2 +-
 pom.xml                                            |   4 +-
 .../db/conf/directories/DirectoryManager.java      |   4 +-
 .../iotdb/db/cost/statistic/Measurement.java       |   2 +-
 .../engine/storagegroup/StorageGroupProcessor.java |   4 +-
 .../db/engine/storagegroup/TsFileResource.java     |   1 +
 .../iotdb/db/writelog/recover/LogReplayer.java     |   4 +-
 .../writelog/recover/TsFileRecoverPerformer.java   |  23 ++-
 .../org/apache/iotdb/db/script/EnvScriptIT.java    |  21 +-
 server/src/test/resources/logback.xml              |   4 +-
 service-rpc/pom.xml                                |   2 +-
 .../java/org/apache/iotdb/tsfile/TsFileWrite.java  |  66 +------
 .../iotdb/tsfile/file/footer/ChunkGroupFooter.java |  13 +-
 .../iotdb/tsfile/file/header/ChunkHeader.java      |  24 ++-
 .../tsfile/file/metadata/ChunkGroupMetaData.java   |  15 +-
 .../iotdb/tsfile/file/metadata/ChunkMetaData.java  |  31 ++-
 .../tsfile/file/metadata/TsDeviceMetadata.java     |   5 +-
 .../apache/iotdb/tsfile/read/common/TimeRange.java |  12 +-
 .../iotdb/tsfile/read/common/TimeRangeTest.java    | 215 +++++++++++++++------
 tsfile/src/test/resources/logback.xml              |   2 +-
 25 files changed, 308 insertions(+), 201 deletions(-)


[incubator-iotdb] 09/12: IOTDB-242 fix mvn integration-test failed because the files in the target folder changes (server and client module)

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 26157c4630df076caa73e6a0d7e25713fca76356
Author: xiangdong huang <sa...@gmail.com>
AuthorDate: Fri Sep 27 00:46:42 2019 +0800

    IOTDB-242 fix mvn integration-test failed because the files in the target folder changes (server and client module)
---
 .../org/apache/iotdb/cli/client/AbstractScript.java |  2 +-
 .../org/apache/iotdb/db/script/EnvScriptIT.java     | 21 ++++++++++-----------
 2 files changed, 11 insertions(+), 12 deletions(-)

diff --git a/client/src/test/java/org/apache/iotdb/cli/client/AbstractScript.java b/client/src/test/java/org/apache/iotdb/cli/client/AbstractScript.java
index 9474982..e9bb602 100644
--- a/client/src/test/java/org/apache/iotdb/cli/client/AbstractScript.java
+++ b/client/src/test/java/org/apache/iotdb/cli/client/AbstractScript.java
@@ -55,7 +55,7 @@ public abstract class AbstractScript {
     if(!userDir.exists()) {
       throw new RuntimeException("user.dir " + userDir.getAbsolutePath() + " doesn't exist.");
     }
-    File target = new File(userDir, "target/classes/META-INF/maven/org.apache.iotdb/iotdb-client/pom.properties");
+    File target = new File(userDir, "target/maven-archiver/pom.properties");
     Properties properties = new Properties();
     try {
       properties.load(new FileReader(target));
diff --git a/server/src/test/java/org/apache/iotdb/db/script/EnvScriptIT.java b/server/src/test/java/org/apache/iotdb/db/script/EnvScriptIT.java
index f08e167..9b9406e 100644
--- a/server/src/test/java/org/apache/iotdb/db/script/EnvScriptIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/script/EnvScriptIT.java
@@ -19,10 +19,12 @@
 package org.apache.iotdb.db.script;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.io.*;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -105,18 +107,15 @@ public class EnvScriptIT {
     if(!userDir.exists()) {
       throw new RuntimeException("user.dir " + userDir.getAbsolutePath() + " doesn't exist.");
     }
-    File targetDir = new File(userDir, "target");
-    File[] files = targetDir.listFiles(new FileFilter() {
-      @Override
-      public boolean accept(File pathname) {
-        return pathname.isDirectory() && pathname.getName().startsWith("iotdb-server-");
-      }
-    });
-    if(files.length != 1) {
-      throw new RuntimeException(
-              "Exactly one directory starting with 'iotdb-server-' should have been found, but was " + files.length);
+    File target = new File(userDir, "target/maven-archiver/iotdb-server/pom.properties");
+    Properties properties = new Properties();
+    assertTrue(target.exists());
+    try {
+      properties.load(new FileReader(target));
+    } catch (IOException e) {
+      return "target/iotdb-server-";
     }
-    return files[0].getAbsolutePath();
+    return new File(userDir, String.format("target/%s-%s", properties.getProperty("artifactId"), properties.getProperty("version"))).getAbsolutePath();
   }
 
 }


[incubator-iotdb] 08/12: IOTDB-242 fix mvn integration-test failed because the files in the target folder changes

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 4f2f3b1257f69644c793072b7fe1e1384dde339a
Author: xiangdong huang <sa...@gmail.com>
AuthorDate: Thu Sep 26 17:14:29 2019 +0800

    IOTDB-242 fix mvn integration-test failed because the files in the target folder changes
---
 .../org/apache/iotdb/cli/client/AbstractScript.java   | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git a/client/src/test/java/org/apache/iotdb/cli/client/AbstractScript.java b/client/src/test/java/org/apache/iotdb/cli/client/AbstractScript.java
index 4cd1a40..9474982 100644
--- a/client/src/test/java/org/apache/iotdb/cli/client/AbstractScript.java
+++ b/client/src/test/java/org/apache/iotdb/cli/client/AbstractScript.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertEquals;
 import java.io.*;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Properties;
 
 public abstract class AbstractScript {
 
@@ -54,18 +55,14 @@ public abstract class AbstractScript {
     if(!userDir.exists()) {
       throw new RuntimeException("user.dir " + userDir.getAbsolutePath() + " doesn't exist.");
     }
-    File targetDir = new File(userDir, "target");
-    File[] files = targetDir.listFiles(new FileFilter() {
-      @Override
-      public boolean accept(File pathname) {
-        return pathname.isDirectory() && pathname.getName().startsWith("iotdb-client-");
-      }
-    });
-    if(files.length != 1) {
-      throw new RuntimeException(
-              "Exactly one directory starting with 'iotdb-client-' should have been found, but was " + files.length);
+    File target = new File(userDir, "target/classes/META-INF/maven/org.apache.iotdb/iotdb-client/pom.properties");
+    Properties properties = new Properties();
+    try {
+      properties.load(new FileReader(target));
+    } catch (IOException e) {
+      return "target/iotdb-client-";
     }
-    return files[0].getAbsolutePath();
+    return new File(userDir, String.format("target/%s-%s", properties.getProperty("artifactId"), properties.getProperty("version"))).getAbsolutePath();
   }
 
   protected abstract void testOnWindows() throws IOException;


[incubator-iotdb] 12/12: add release notes for 0.8.1

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 20765793d4610f3f3c160079d978363a89485325
Author: xiangdong huang <sa...@gmail.com>
AuthorDate: Fri Sep 27 01:18:45 2019 +0800

    add release notes for 0.8.1
---
 RELEASE_NOTES.md | 11 +++++++++++
 1 file changed, 11 insertions(+)

diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
index 1633085..87e429e 100644
--- a/RELEASE_NOTES.md
+++ b/RELEASE_NOTES.md
@@ -19,6 +19,17 @@
 
 -->
 
+# Apache IoTDB (incubating) 0.8.1
+
+This is a bug-fix version of 0.8.0
+
+- [IOTDB-172] bug in updating startTime and endTime in TsFileResource
+- Abnormal publishing of sequence and unsequence data folders in DirectoryManager
+- fix a bug in TimeRange's intersects function
+- [IOTDB-202] fix tsfile example data type
+- [IOTDB-195] Bug about 'serializedSize' in ChunkGroupMetaData.java (for Chinese string)
+- [IOTDB-242] fix mvn integration-test failed because the files in the target folder changes
+
 # Apache IoTDB (incubating) 0.8.0
 
 This is the first official release of Apache IoTDB after joining the Incubator.


[incubator-iotdb] 11/12: solve the conflict; fix compile issue for ChunkGroupMetaData

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 143529f9b7f595e5c5ed46cfa3ada6325f487923
Author: xiangdong huang <sa...@gmail.com>
AuthorDate: Fri Sep 27 01:08:54 2019 +0800

    solve the conflict;
    fix compile issue for ChunkGroupMetaData
---
 .../test/java/org/apache/iotdb/cli/client/StartClientScriptIT.java    | 3 +--
 grafana/pom.xml                                                       | 2 +-
 jdbc/pom.xml                                                          | 2 +-
 pom.xml                                                               | 4 ++--
 service-rpc/pom.xml                                                   | 2 +-
 .../org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetaData.java     | 1 +
 6 files changed, 7 insertions(+), 7 deletions(-)

diff --git a/client/src/test/java/org/apache/iotdb/cli/client/StartClientScriptIT.java b/client/src/test/java/org/apache/iotdb/cli/client/StartClientScriptIT.java
index e4ed965..85fdcd8 100644
--- a/client/src/test/java/org/apache/iotdb/cli/client/StartClientScriptIT.java
+++ b/client/src/test/java/org/apache/iotdb/cli/client/StartClientScriptIT.java
@@ -60,8 +60,7 @@ public class StartClientScriptIT extends AbstractScript {
 
   @Override
   protected void testOnUnix() throws IOException {
-    final String[] output = {"---------------------", "Starting IoTDB Client",
-        "---------------------",
+    final String[] output = {
         "IoTDB> Connection Error, please check whether the network is available or the server has started. Host is 127.0.0.1, port is 6668."};
     String dir = getCliPath();
     ProcessBuilder builder = new ProcessBuilder("sh",
diff --git a/grafana/pom.xml b/grafana/pom.xml
index f1612a7..725fa27 100644
--- a/grafana/pom.xml
+++ b/grafana/pom.xml
@@ -159,7 +159,7 @@
                                     <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
                                         <resource>META-INF/spring.schemas</resource>
                                     </transformer>
-                                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer" />
+                                    <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
                                     <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                         <mainClass>${start-class}</mainClass>
                                     </transformer>
diff --git a/jdbc/pom.xml b/jdbc/pom.xml
index cf800b3..3de4f80 100644
--- a/jdbc/pom.xml
+++ b/jdbc/pom.xml
@@ -126,7 +126,7 @@
                                                 </goals>
                                             </pluginExecutionFilter>
                                             <action>
-                                                <ignore />
+                                                <ignore/>
                                             </action>
                                         </pluginExecution>
                                     </pluginExecutions>
diff --git a/pom.xml b/pom.xml
index f30eb18..c876a30 100644
--- a/pom.xml
+++ b/pom.xml
@@ -482,7 +482,7 @@
                         <id>enforce-version-convergence</id>
                         <configuration>
                             <rules>
-                                <dependencyConvergence />
+                                <dependencyConvergence/>
                             </rules>
                         </configuration>
                         <goals>
@@ -528,7 +528,7 @@
                                 </requireJavaVersion>
                                 <!-- Disabled for now as it breaks the ability to build single modules -->
                                 <!--reactorModuleConvergence/-->
-                                <banVulnerable implementation="org.sonatype.ossindex.maven.enforcer.BanVulnerableDependencies" />
+                                <banVulnerable implementation="org.sonatype.ossindex.maven.enforcer.BanVulnerableDependencies"/>
                             </rules>
                         </configuration>
                     </execution>
diff --git a/service-rpc/pom.xml b/service-rpc/pom.xml
index 5c175bc..40511b8 100644
--- a/service-rpc/pom.xml
+++ b/service-rpc/pom.xml
@@ -100,7 +100,7 @@
                                                 </goals>
                                             </pluginExecutionFilter>
                                             <action>
-                                                <ignore />
+                                                <ignore/>
                                             </action>
                                         </pluginExecution>
                                         <pluginExecution>
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetaData.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetaData.java
index b869274..5cb7e00 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetaData.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetaData.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.tsfile.file.metadata;
 
+import java.util.Collections;
 import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 


[incubator-iotdb] 02/12: fix a bug in DirectoryManager

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 2e5324be74155c2e46043bac7121ea6f506e22c9
Author: lta <li...@163.com>
AuthorDate: Tue Sep 17 10:49:05 2019 +0800

    fix a bug in DirectoryManager
---
 .../java/org/apache/iotdb/db/conf/directories/DirectoryManager.java   | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/conf/directories/DirectoryManager.java b/server/src/main/java/org/apache/iotdb/db/conf/directories/DirectoryManager.java
index 9b4b58d..e73a296 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/directories/DirectoryManager.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/directories/DirectoryManager.java
@@ -116,7 +116,7 @@ public class DirectoryManager {
   }
 
   public List<String> getAllSequenceFileFolders() {
-    return sequenceFileFolders;
+    return new ArrayList<>(sequenceFileFolders);
   }
 
   private static class DirectoriesHolder {
@@ -149,7 +149,7 @@ public class DirectoryManager {
   }
 
   public List<String> getAllUnSequenceFileFolders() {
-    return unsequenceFileFolders;
+    return new ArrayList<>(unsequenceFileFolders);
   }
 
   // only used by test


[incubator-iotdb] 07/12: Set log level to error

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit f2117d7f359fd3d2144bc0fb7df9b1cf4119161b
Author: JackieTien97 <13...@qq.com>
AuthorDate: Fri Sep 6 16:13:58 2019 +0800

    Set log level to error
---
 server/src/test/resources/logback.xml | 2 +-
 tsfile/src/test/resources/logback.xml | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/server/src/test/resources/logback.xml b/server/src/test/resources/logback.xml
index 957398c..a4aa6da 100644
--- a/server/src/test/resources/logback.xml
+++ b/server/src/test/resources/logback.xml
@@ -30,7 +30,7 @@
             <charset>utf-8</charset>
         </encoder>
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>DEBUG</level>
+            <level>ERROR</level>
         </filter>
     </appender>
     <!--<logger name="org.apache.iotdb.db.utils.OpenFileNumUtil" level="debug" />-->
diff --git a/tsfile/src/test/resources/logback.xml b/tsfile/src/test/resources/logback.xml
index a850d93..8f1b431 100644
--- a/tsfile/src/test/resources/logback.xml
+++ b/tsfile/src/test/resources/logback.xml
@@ -106,7 +106,7 @@
             <charset>utf-8</charset>
         </encoder>
         <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <level>DEBUG</level>
+            <level>ERROR</level>
         </filter>
     </appender>
     <!--<logger name="org.apache.iotdb.tsfile.write.chunk.ChunkWriterImpl level="debug" />-->


[incubator-iotdb] 06/12: Change all the str.length() to str.getBytes().length while calculating the serialized byte size

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 4fd30294a5687746d77733f26c30b8b94f355e88
Author: JackieTien97 <13...@qq.com>
AuthorDate: Fri Sep 6 10:50:24 2019 +0800

    Change all the str.length() to str.getBytes().length while calculating the serialized byte size
---
 .../iotdb/tsfile/file/footer/ChunkGroupFooter.java | 13 +++++----
 .../iotdb/tsfile/file/header/ChunkHeader.java      | 24 ++++++++++++-----
 .../tsfile/file/metadata/ChunkGroupMetaData.java   | 14 +++++-----
 .../iotdb/tsfile/file/metadata/ChunkMetaData.java  | 31 ++++++++++++++++------
 .../tsfile/file/metadata/TsDeviceMetadata.java     |  5 ++--
 5 files changed, 60 insertions(+), 27 deletions(-)

diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/footer/ChunkGroupFooter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/footer/ChunkGroupFooter.java
index a69468e..e440956 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/footer/ChunkGroupFooter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/footer/ChunkGroupFooter.java
@@ -19,13 +19,16 @@
 
 package org.apache.iotdb.tsfile.file.footer;
 
+import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
+import org.apache.iotdb.tsfile.file.MetaMarker;
+import org.apache.iotdb.tsfile.read.reader.TsFileInput;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
 import java.nio.ByteBuffer;
-import org.apache.iotdb.tsfile.file.MetaMarker;
-import org.apache.iotdb.tsfile.read.reader.TsFileInput;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 public class ChunkGroupFooter {
 
@@ -47,12 +50,12 @@ public class ChunkGroupFooter {
    * @param dataSize data size
    * @param numberOfChunks number of chunks
    */
-  public ChunkGroupFooter(String deviceID, long dataSize, int numberOfChunks) {
+  public ChunkGroupFooter(String deviceID, long dataSize, int numberOfChunks) throws UnsupportedEncodingException {
     this.deviceID = deviceID;
     this.dataSize = dataSize;
     this.numberOfChunks = numberOfChunks;
     this.serializedSize =
-        Byte.BYTES + Integer.BYTES + deviceID.length() + Long.BYTES + Integer.BYTES;
+        Byte.BYTES + Integer.BYTES + deviceID.getBytes(TSFileConfig.STRING_ENCODING).length + Long.BYTES + Integer.BYTES;
   }
 
   public static int getSerializedSize(String deviceID) {
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkHeader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkHeader.java
index d7e724f..0dc5ef0 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkHeader.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/header/ChunkHeader.java
@@ -19,19 +19,26 @@
 
 package org.apache.iotdb.tsfile.file.header;
 
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.ByteBuffer;
+import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
 import org.apache.iotdb.tsfile.file.MetaMarker;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSEncoding;
 import org.apache.iotdb.tsfile.read.reader.TsFileInput;
 import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
+import java.nio.ByteBuffer;
 
 public class ChunkHeader {
 
+  private static final Logger LOG = LoggerFactory.getLogger(ChunkHeader.class);
+
   public static final byte MARKER = MetaMarker.CHUNK_HEADER;
 
   private String measurementID;
@@ -69,7 +76,12 @@ public class ChunkHeader {
   }
 
   public static int getSerializedSize(String measurementID) {
-    return Byte.BYTES + Integer.BYTES + getSerializedSize(measurementID.getBytes().length);
+    try {
+      return Byte.BYTES + Integer.BYTES + getSerializedSize(measurementID.getBytes(TSFileConfig.STRING_ENCODING).length);
+    } catch (UnsupportedEncodingException e) {
+      LOG.error("{} encoding is not supported", TSFileConfig.STRING_ENCODING);
+      return Byte.BYTES + Integer.BYTES + getSerializedSize(measurementID.getBytes().length);
+    }
   }
 
   private static int getSerializedSize(int measurementIdLength) {
@@ -150,7 +162,7 @@ public class ChunkHeader {
     return deserializePartFrom(measurementID, buffer);
   }
 
-  private static ChunkHeader deserializePartFrom(String measurementID, ByteBuffer buffer) {
+  private static ChunkHeader deserializePartFrom(String measurementID, ByteBuffer buffer) throws UnsupportedEncodingException {
     int dataSize = ReadWriteIOUtils.readInt(buffer);
     TSDataType dataType = TSDataType.deserialize(ReadWriteIOUtils.readShort(buffer));
     int numOfPages = ReadWriteIOUtils.readInt(buffer);
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetaData.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetaData.java
index 01cc0ab..b869274 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetaData.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkGroupMetaData.java
@@ -19,14 +19,15 @@
 
 package org.apache.iotdb.tsfile.file.metadata;
 
+import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
-import java.util.Collections;
 import java.util.List;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 /**
  * Metadata of ChunkGroup.
@@ -102,8 +103,9 @@ public class ChunkGroupMetaData {
     chunkGroupMetaData.version = ReadWriteIOUtils.readLong(inputStream);
 
     int size = ReadWriteIOUtils.readInt(inputStream);
-    chunkGroupMetaData.serializedSize = Integer.BYTES + chunkGroupMetaData.deviceID.length()
-        + Integer.BYTES + Long.BYTES + Long.BYTES + Long.BYTES;
+    chunkGroupMetaData.serializedSize = Integer.BYTES
+            + chunkGroupMetaData.deviceID.getBytes(TSFileConfig.STRING_ENCODING).length
+            + Integer.BYTES + Long.BYTES + Long.BYTES + Long.BYTES;
 
     List<ChunkMetaData> chunkMetaDataList = new ArrayList<>();
 
@@ -123,7 +125,7 @@ public class ChunkGroupMetaData {
    * @param buffer ByteBuffer
    * @return ChunkGroupMetaData object
    */
-  public static ChunkGroupMetaData deserializeFrom(ByteBuffer buffer) {
+  public static ChunkGroupMetaData deserializeFrom(ByteBuffer buffer) throws IOException {
     ChunkGroupMetaData chunkGroupMetaData = new ChunkGroupMetaData();
 
     chunkGroupMetaData.deviceID = ReadWriteIOUtils.readString(buffer);
@@ -133,7 +135,7 @@ public class ChunkGroupMetaData {
 
     int size = ReadWriteIOUtils.readInt(buffer);
 
-    chunkGroupMetaData.serializedSize = Integer.BYTES + chunkGroupMetaData.deviceID.length()
+    chunkGroupMetaData.serializedSize = Integer.BYTES + chunkGroupMetaData.deviceID.getBytes(TSFileConfig.STRING_ENCODING).length
         + Integer.BYTES + Long.BYTES + Long.BYTES + Long.BYTES;
 
     List<ChunkMetaData> chunkMetaDataList = new ArrayList<>();
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetaData.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetaData.java
index 7c89cf2..c63152e 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetaData.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/ChunkMetaData.java
@@ -19,19 +19,27 @@
 
 package org.apache.iotdb.tsfile.file.metadata;
 
+import org.apache.iotdb.tsfile.common.conf.TSFileConfig;
+import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.io.UnsupportedEncodingException;
 import java.nio.ByteBuffer;
 import java.util.Objects;
-import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 /**
  * MetaData of one chunk.
  */
 public class ChunkMetaData {
 
+  private static final Logger LOG = LoggerFactory.getLogger(ChunkMetaData.class);
+
+
   private String measurementUid;
 
   /**
@@ -133,12 +141,19 @@ public class ChunkMetaData {
    * @return serialized size (int type)
    */
   public int getSerializedSize() {
-    return (Integer.BYTES + measurementUid.length()) + // measurementUid
-        4 * Long.BYTES + // 4 long: offsetOfChunkHeader, numOfPoints, startTime, endTime
-        TSDataType.getSerializedSize() + // TSDataType
-        (valuesStatistics == null ? TsDigest.getNullDigestSize()
-            : valuesStatistics.getSerializedSize());
-
+    int serializedSize = (Integer.BYTES  +
+            4 * Long.BYTES + // 4 long: offsetOfChunkHeader, numOfPoints, startTime, endTime
+            TSDataType.getSerializedSize() + // TSDataType
+            (valuesStatistics == null ? TsDigest.getNullDigestSize()
+                    : valuesStatistics.getSerializedSize()));
+    try {
+      serializedSize += measurementUid.getBytes(TSFileConfig.STRING_ENCODING).length;  // measurementUid
+    } catch (UnsupportedEncodingException e) {
+      // use the system default encoding
+      serializedSize += measurementUid.getBytes().length;  // measurementUid
+      LOG.error("{} encoding is not supported", TSFileConfig.STRING_ENCODING);
+    }
+    return serializedSize;
   }
 
   @Override
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TsDeviceMetadata.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TsDeviceMetadata.java
index a7c4a5a..df47cbe 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TsDeviceMetadata.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/file/metadata/TsDeviceMetadata.java
@@ -19,6 +19,8 @@
 
 package org.apache.iotdb.tsfile.file.metadata;
 
+import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
+
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
@@ -26,7 +28,6 @@ import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import org.apache.iotdb.tsfile.utils.ReadWriteIOUtils;
 
 public class TsDeviceMetadata {
 
@@ -86,7 +87,7 @@ public class TsDeviceMetadata {
    * @param buffer -buffer to deserialize
    * @return -device meta data
    */
-  public static TsDeviceMetadata deserializeFrom(ByteBuffer buffer) {
+  public static TsDeviceMetadata deserializeFrom(ByteBuffer buffer) throws IOException {
     TsDeviceMetadata deviceMetadata = new TsDeviceMetadata();
 
     deviceMetadata.startTime = ReadWriteIOUtils.readLong(buffer);


[incubator-iotdb] 03/12: fix a bug in TimeRange's intersect function

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 8ee937b72b8cc0d08fde0f274525b6241f043aca
Author: RUI, LEI <ne...@163.com>
AuthorDate: Sun Sep 8 10:35:08 2019 +0800

    fix a bug in TimeRange's intersect function
---
 .../apache/iotdb/tsfile/read/common/TimeRange.java |  12 +-
 .../iotdb/tsfile/read/common/TimeRangeTest.java    | 215 +++++++++++++++------
 2 files changed, 166 insertions(+), 61 deletions(-)

diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java
index 792bd51..1b1b98a 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/common/TimeRange.java
@@ -134,7 +134,7 @@ public class TimeRange implements Comparable<TimeRange> {
    *
    * [1,3] does not intersect with (4,5].
    *
-   * [1,3) does not intersect with (3,5]
+   * [1,3) does not intersect with (3,5].
    *
    * [1,3] does not intersect with [5,6].
    *
@@ -147,7 +147,7 @@ public class TimeRange implements Comparable<TimeRange> {
    * @param r the given time range
    * @return true if the current time range intersects with the given time range r
    */
-  private boolean intersects(TimeRange r) {
+  public boolean intersects(TimeRange r) {
     if ((!leftClose || !r.rightClose) && (r.max < min)) {
       // e.g., [1,3] does not intersect with (4,5].
       return false;
@@ -156,10 +156,10 @@ public class TimeRange implements Comparable<TimeRange> {
       return false;
     } else if (leftClose && r.rightClose && r.max <= min - 2) {
       // e.g.,[1,3] does not intersect with [5,6].
-      return true;
+      return false;
     } else if ((!rightClose || !r.leftClose) && (r.min > max)) {
       return false;
-    } else if (!rightClose && r.leftClose && r.min >= max) {
+    } else if (!rightClose && !r.leftClose && r.min >= max) {
       return false;
     } else if (rightClose && r.leftClose && r.min >= max + 2) {
       return false;
@@ -190,11 +190,11 @@ public class TimeRange implements Comparable<TimeRange> {
   private boolean leftClose = true; // default true
   private boolean rightClose = true; // default true
 
-  private void setLeftClose(boolean leftClose) {
+  public void setLeftClose(boolean leftClose) {
     this.leftClose = leftClose;
   }
 
-  private void setRightClose(boolean rightClose) {
+  public void setRightClose(boolean rightClose) {
     this.rightClose = rightClose;
   }
 
diff --git a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/TimeRangeTest.java b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/TimeRangeTest.java
index 514f8e2..db6e5b3 100644
--- a/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/TimeRangeTest.java
+++ b/tsfile/src/test/java/org/apache/iotdb/tsfile/read/common/TimeRangeTest.java
@@ -19,6 +19,8 @@
 package org.apache.iotdb.tsfile.read.common;
 
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import org.junit.Assert;
@@ -27,6 +29,90 @@ import org.junit.Test;
 public class TimeRangeTest {
 
   @Test
+  /*
+   * [1,3] does not intersect with (4,5].
+   */
+  public void intersect1() {
+    TimeRange r1 = new TimeRange(1, 3);
+    TimeRange r2 = new TimeRange(4, 5);
+    r2.setLeftClose(false);
+    assertEquals("[ 1 : 3 ]", r1.toString());
+    assertEquals("( 4 : 5 ]", r2.toString());
+    assertFalse(r1.intersects(r2));
+    assertFalse(r2.intersects(r1));
+  }
+
+  @Test
+  /*
+   * [1,3) does not intersect with (3,5]
+   */
+  public void intersect2() {
+    TimeRange r1 = new TimeRange(1, 3);
+    r1.setRightClose(false);
+    TimeRange r2 = new TimeRange(3, 5);
+    r2.setLeftClose(false);
+    assertEquals("[ 1 : 3 )", r1.toString());
+    assertEquals("( 3 : 5 ]", r2.toString());
+    assertFalse(r1.intersects(r2));
+    assertFalse(r2.intersects(r1));
+  }
+
+  @Test
+  /*
+   * [1,3] does not intersect with [5,6].
+   */
+  public void intersect3() {
+    TimeRange r1 = new TimeRange(1, 3);
+    TimeRange r2 = new TimeRange(5, 6);
+    assertEquals("[ 1 : 3 ]", r1.toString());
+    assertEquals("[ 5 : 6 ]", r2.toString());
+    assertFalse(r1.intersects(r2));
+    assertFalse(r2.intersects(r1));
+  }
+
+  @Test
+  /*
+   * [1,3] intersects with [2,5].
+   */
+  public void intersect4() {
+    TimeRange r1 = new TimeRange(1, 3);
+    TimeRange r2 = new TimeRange(2, 5);
+    assertEquals("[ 1 : 3 ]", r1.toString());
+    assertEquals("[ 2 : 5 ]", r2.toString());
+    assertTrue(r1.intersects(r2));
+    assertTrue(r2.intersects(r1));
+  }
+
+  @Test
+  /*
+   * [1,3] intersects with (3,5].
+   */
+  public void intersect5() {
+    TimeRange r1 = new TimeRange(1, 3);
+    TimeRange r2 = new TimeRange(3, 5);
+    r2.setLeftClose(false);
+    assertEquals("[ 1 : 3 ]", r1.toString());
+    assertEquals("( 3 : 5 ]", r2.toString());
+    assertTrue(r1.intersects(r2));
+    assertTrue(r2.intersects(r1));
+  }
+
+  @Test
+  /*
+   * [1,3) intersects with (2,5].
+   */
+  public void intersect6() {
+    TimeRange r1 = new TimeRange(1, 3);
+    r1.setRightClose(false);
+    TimeRange r2 = new TimeRange(2, 5);
+    r2.setLeftClose(false);
+    assertEquals("[ 1 : 3 )", r1.toString());
+    assertEquals("( 2 : 5 ]", r2.toString());
+    assertTrue(r1.intersects(r2));
+    assertTrue(r2.intersects(r1));
+  }
+
+  @Test
   public void mergeTest() {
     ArrayList<TimeRange> unionCandidates = new ArrayList<>();
     unionCandidates.add(new TimeRange(0L, 10L));
@@ -55,10 +141,10 @@ public class TimeRangeTest {
 
     ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
     assertEquals(1, remainRanges.size());
-    assertEquals(remainRanges.get(0).getMin(), 1);
-    assertEquals(remainRanges.get(0).getMax(), 10);
-    assertEquals(remainRanges.get(0).getLeftClose(), true);
-    assertEquals(remainRanges.get(0).getRightClose(), true);
+    assertEquals(1, remainRanges.get(0).getMin());
+    assertEquals(10, remainRanges.get(0).getMax());
+    assertTrue(remainRanges.get(0).getLeftClose());
+    assertTrue(remainRanges.get(0).getRightClose());
   }
 
   @Test
@@ -88,10 +174,10 @@ public class TimeRangeTest {
 
     ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
     assertEquals(1, remainRanges.size());
-    assertEquals(remainRanges.get(0).getMin(), 3);
-    assertEquals(remainRanges.get(0).getMax(), 10);
-    assertEquals(remainRanges.get(0).getLeftClose(), false);
-    assertEquals(remainRanges.get(0).getRightClose(), true);
+    assertEquals(3, remainRanges.get(0).getMin());
+    assertEquals(10, remainRanges.get(0).getMax());
+    assertFalse(remainRanges.get(0).getLeftClose());
+    assertTrue(remainRanges.get(0).getRightClose());
   }
 
   @Test
@@ -107,10 +193,10 @@ public class TimeRangeTest {
 
     ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
     assertEquals(1, remainRanges.size());
-    assertEquals(remainRanges.get(0).getMin(), 1);
-    assertEquals(remainRanges.get(0).getMax(), 5);
-    assertEquals(remainRanges.get(0).getLeftClose(), true);
-    assertEquals(remainRanges.get(0).getRightClose(), false);
+    assertEquals(1, remainRanges.get(0).getMin());
+    assertEquals(5, remainRanges.get(0).getMax());
+    assertTrue(remainRanges.get(0).getLeftClose());
+    assertFalse(remainRanges.get(0).getRightClose());
   }
 
   @Test
@@ -126,14 +212,14 @@ public class TimeRangeTest {
 
     ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
     assertEquals(2, remainRanges.size());
-    assertEquals(remainRanges.get(0).getMin(), 1);
-    assertEquals(remainRanges.get(0).getMax(), 3);
-    assertEquals(remainRanges.get(0).getLeftClose(), true);
-    assertEquals(remainRanges.get(0).getRightClose(), false);
-    assertEquals(remainRanges.get(1).getMin(), 8);
-    assertEquals(remainRanges.get(1).getMax(), 10);
-    assertEquals(remainRanges.get(1).getLeftClose(), false);
-    assertEquals(remainRanges.get(1).getRightClose(), true);
+    assertEquals(1, remainRanges.get(0).getMin());
+    assertEquals(3, remainRanges.get(0).getMax());
+    assertTrue(remainRanges.get(0).getLeftClose());
+    assertFalse(remainRanges.get(0).getRightClose());
+    assertEquals(8, remainRanges.get(1).getMin());
+    assertEquals(10, remainRanges.get(1).getMax());
+    assertFalse(remainRanges.get(1).getLeftClose());
+    assertTrue(remainRanges.get(1).getRightClose());
   }
 
 
@@ -150,10 +236,10 @@ public class TimeRangeTest {
 
     ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
     assertEquals(1, remainRanges.size());
-    assertEquals(remainRanges.get(0).getMin(), 5);
-    assertEquals(remainRanges.get(0).getMax(), 10);
-    assertEquals(remainRanges.get(0).getLeftClose(), false);
-    assertEquals(remainRanges.get(0).getRightClose(), true);
+    assertEquals(5, remainRanges.get(0).getMin());
+    assertEquals(10, remainRanges.get(0).getMax());
+    assertFalse(remainRanges.get(0).getLeftClose());
+    assertTrue(remainRanges.get(0).getRightClose());
   }
 
   @Test
@@ -169,10 +255,10 @@ public class TimeRangeTest {
 
     ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
     assertEquals(1, remainRanges.size());
-    assertEquals(remainRanges.get(0).getMin(), 2);
-    assertEquals(remainRanges.get(0).getMax(), 10);
-    assertEquals(remainRanges.get(0).getLeftClose(), false);
-    assertEquals(remainRanges.get(0).getRightClose(), true);
+    assertEquals(2, remainRanges.get(0).getMin());
+    assertEquals(10, remainRanges.get(0).getMax());
+    assertFalse(remainRanges.get(0).getLeftClose());
+    assertTrue(remainRanges.get(0).getRightClose());
   }
 
   @Test
@@ -188,10 +274,10 @@ public class TimeRangeTest {
 
     ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
     assertEquals(1, remainRanges.size());
-    assertEquals(remainRanges.get(0).getMin(), 1);
-    assertEquals(remainRanges.get(0).getMax(), 6);
-    assertEquals(remainRanges.get(0).getLeftClose(), true);
-    assertEquals(remainRanges.get(0).getRightClose(), false);
+    assertEquals(1, remainRanges.get(0).getMin());
+    assertEquals(6, remainRanges.get(0).getMax());
+    assertTrue(remainRanges.get(0).getLeftClose());
+    assertFalse(remainRanges.get(0).getRightClose());
   }
 
   @Test
@@ -207,10 +293,10 @@ public class TimeRangeTest {
 
     ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
     assertEquals(1, remainRanges.size());
-    assertEquals(remainRanges.get(0).getMin(), 1);
-    assertEquals(remainRanges.get(0).getMax(), 11);
-    assertEquals(remainRanges.get(0).getLeftClose(), true);
-    assertEquals(remainRanges.get(0).getRightClose(), false);
+    assertEquals(1, remainRanges.get(0).getMin());
+    assertEquals(11, remainRanges.get(0).getMax());
+    assertTrue(remainRanges.get(0).getLeftClose());
+    assertFalse(remainRanges.get(0).getRightClose());
   }
 
   @Test
@@ -226,18 +312,18 @@ public class TimeRangeTest {
 
     ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
     assertEquals(3, remainRanges.size());
-    assertEquals(remainRanges.get(0).getMin(), 1);
-    assertEquals(remainRanges.get(0).getMax(), 3);
-    assertEquals(remainRanges.get(0).getLeftClose(), true);
-    assertEquals(remainRanges.get(0).getRightClose(), false);
-    assertEquals(remainRanges.get(1).getMin(), 4);
-    assertEquals(remainRanges.get(1).getMax(), 6);
-    assertEquals(remainRanges.get(1).getLeftClose(), false);
-    assertEquals(remainRanges.get(1).getRightClose(), false);
-    assertEquals(remainRanges.get(2).getMin(), 8);
-    assertEquals(remainRanges.get(2).getMax(), 10);
-    assertEquals(remainRanges.get(2).getLeftClose(), false);
-    assertEquals(remainRanges.get(2).getRightClose(), true);
+    assertEquals(1, remainRanges.get(0).getMin());
+    assertEquals(3, remainRanges.get(0).getMax());
+    assertTrue(remainRanges.get(0).getLeftClose());
+    assertFalse(remainRanges.get(0).getRightClose());
+    assertEquals(4, remainRanges.get(1).getMin());
+    assertEquals(6, remainRanges.get(1).getMax());
+    assertFalse(remainRanges.get(1).getLeftClose());
+    assertFalse(remainRanges.get(1).getRightClose());
+    assertEquals(8, remainRanges.get(2).getMin());
+    assertEquals(10, remainRanges.get(2).getMax());
+    assertFalse(remainRanges.get(2).getLeftClose());
+    assertTrue(remainRanges.get(2).getRightClose());
   }
 
   @Test
@@ -253,13 +339,32 @@ public class TimeRangeTest {
 
     ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
     assertEquals(2, remainRanges.size());
-    assertEquals(remainRanges.get(0).getMin(), 1);
-    assertEquals(remainRanges.get(0).getMax(), 3);
+    assertEquals(1, remainRanges.get(0).getMin());
+    assertEquals(3, remainRanges.get(0).getMax());
+    assertTrue(remainRanges.get(0).getLeftClose());
+    assertFalse(remainRanges.get(0).getRightClose());
+    assertEquals(4, remainRanges.get(1).getMin());
+    assertEquals(11, remainRanges.get(1).getMax()); // NOTE here is the technical detail.
+    assertFalse(remainRanges.get(1).getLeftClose());
+    assertFalse(remainRanges.get(1).getRightClose());
+  }
+
+  @Test
+  /*
+     current ranges DO NOT overlap with previous ranges.
+   */
+  public void getRemainsTest11() {
+    TimeRange r = new TimeRange(4, 10);
+
+    ArrayList<TimeRange> prevRanges = new ArrayList<>();
+    prevRanges.add(new TimeRange(1, 2));
+
+    ArrayList<TimeRange> remainRanges = new ArrayList<>(r.getRemains(prevRanges));
+    assertEquals(1, remainRanges.size());
+    assertEquals(4, remainRanges.get(0).getMin());
+    assertEquals(10, remainRanges.get(0).getMax());
     assertEquals(remainRanges.get(0).getLeftClose(), true);
-    assertEquals(remainRanges.get(0).getRightClose(), false);
-    assertEquals(remainRanges.get(1).getMin(), 4);
-    assertEquals(remainRanges.get(1).getMax(), 11); // NOTE here is the technical detail.
-    assertEquals(remainRanges.get(1).getLeftClose(), false);
-    assertEquals(remainRanges.get(1).getRightClose(), false);
+    assertEquals(remainRanges.get(0).getRightClose(), true);
   }
+
 }


[incubator-iotdb] 05/12: fix log size

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit e393abfa7f0e1c35c396031f9d3ab74e492967a8
Author: qiaojialin <64...@qq.com>
AuthorDate: Fri Sep 6 17:16:13 2019 +0800

    fix log size
---
 server/src/test/resources/logback.xml | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/src/test/resources/logback.xml b/server/src/test/resources/logback.xml
index 58cdf77..957398c 100644
--- a/server/src/test/resources/logback.xml
+++ b/server/src/test/resources/logback.xml
@@ -35,7 +35,7 @@
     </appender>
     <!--<logger name="org.apache.iotdb.db.utils.OpenFileNumUtil" level="debug" />-->
     <!--<logger name="org.apache.iotdb.db.utils.OpenFileNumUtilTest" level="debug" />-->
-    <root level="INFO">
+    <root level="ERROR">
         <appender-ref ref="stdout"/>
     </root>
 </configuration>


[incubator-iotdb] 01/12: [IoTDB-172]fix bug about TsFileResource updateTime

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 2fbd7b9055ad95ebb810035bf905e0ade50d6f00
Author: RuiLei <ru...@gmail.com>
AuthorDate: Wed Aug 21 15:26:57 2019 +0800

    [IoTDB-172]fix bug about TsFileResource updateTime
---
 .../iotdb/db/cost/statistic/Measurement.java       |  2 +-
 .../engine/storagegroup/StorageGroupProcessor.java |  4 ++--
 .../db/engine/storagegroup/TsFileResource.java     |  1 +
 .../iotdb/db/writelog/recover/LogReplayer.java     |  4 ++--
 .../writelog/recover/TsFileRecoverPerformer.java   | 23 ++++++++++++++--------
 5 files changed, 21 insertions(+), 13 deletions(-)

diff --git a/server/src/main/java/org/apache/iotdb/db/cost/statistic/Measurement.java b/server/src/main/java/org/apache/iotdb/db/cost/statistic/Measurement.java
index 1c7aded..377023b 100644
--- a/server/src/main/java/org/apache/iotdb/db/cost/statistic/Measurement.java
+++ b/server/src/main/java/org/apache/iotdb/db/cost/statistic/Measurement.java
@@ -253,7 +253,7 @@ public class Measurement implements MeasurementMBean, IService {
       service = IoTDBThreadPoolFactory.newScheduledThreadPool(
           2, ThreadName.TIME_COST_STATSTIC.getName());
     }
-    //we have to check again because someone may channge the value.
+    //we have to check again because someone may change the value.
     isEnableStat = IoTDBDescriptor.getInstance().getConfig().isEnablePerformanceStat();
     if (isEnableStat) {
       consumeFuture = service.schedule(new QueueConsumerThread(), 0, TimeUnit.MILLISECONDS);
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
index f04469e..5d5f129 100755
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
@@ -160,8 +160,8 @@ public class StorageGroupProcessor {
       if (storageGroupSysDir.mkdirs()) {
         logger.info("Storage Group system Directory {} doesn't exist, create it",
             storageGroupSysDir.getPath());
-      } else if(!storageGroupSysDir.exists()) {
-        logger.error("craete Storage Group system Directory {} failed",
+      } else if (!storageGroupSysDir.exists()) {
+        logger.error("create Storage Group system Directory {} failed",
             storageGroupSysDir.getPath());
       }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
index fae36f2..1ad5306 100644
--- a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
+++ b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/TsFileResource.java
@@ -221,6 +221,7 @@ public class TsFileResource {
     return processor;
   }
 
+  @Deprecated
   public void updateTime(String deviceId, long time) {
     startTimeMap.putIfAbsent(deviceId, time);
     Long endTime = endTimeMap.get(deviceId);
diff --git a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
index 2e1f774..b0e63eb 100644
--- a/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
+++ b/server/src/main/java/org/apache/iotdb/db/writelog/recover/LogReplayer.java
@@ -103,8 +103,8 @@ public class LogReplayer {
     } finally {
       logReader.close();
     }
-    tempStartTimeMap.forEach((k, v) -> currentTsFileResource.updateTime(k, v));
-    tempEndTimeMap.forEach((k, v) -> currentTsFileResource.updateTime(k, v));
+    tempStartTimeMap.forEach((k, v) -> currentTsFileResource.updateStartTime(k, v));
+    tempEndTimeMap.forEach((k, v) -> currentTsFileResource.updateEndTime(k, v));
   }
 
   private void replayDelete(DeletePlan deletePlan) throws IOException {
diff --git a/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java b/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java
index c6dc976..7c89818 100644
--- a/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java
+++ b/server/src/main/java/org/apache/iotdb/db/writelog/recover/TsFileRecoverPerformer.java
@@ -45,10 +45,11 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 /**
- * TsFileRecoverPerformer recovers a SeqTsFile to correct status, redoes the WALs since last
- * crash and removes the redone logs.
+ * TsFileRecoverPerformer recovers a SeqTsFile to correct status, redoes the WALs since last crash
+ * and removes the redone logs.
  */
 public class TsFileRecoverPerformer {
+
   private static final Logger logger = LoggerFactory.getLogger(TsFileRecoverPerformer.class);
 
   private String insertFilePath;
@@ -103,17 +104,21 @@ public class TsFileRecoverPerformer {
           tsFileResource.deSerialize();
         } else {
           // .resource file does not exist, read file metadata and recover tsfile resource
-          try (TsFileSequenceReader reader = new TsFileSequenceReader(tsFileResource.getFile().getAbsolutePath())) {
+          try (TsFileSequenceReader reader = new TsFileSequenceReader(
+              tsFileResource.getFile().getAbsolutePath())) {
             TsFileMetaData metaData = reader.readFileMetadata();
             List<TsDeviceMetadataIndex> deviceMetadataIndexList = new ArrayList<>(
                 metaData.getDeviceMap().values());
             for (TsDeviceMetadataIndex index : deviceMetadataIndexList) {
               TsDeviceMetadata deviceMetadata = reader.readTsDeviceMetaData(index);
-              List<ChunkGroupMetaData> chunkGroupMetaDataList = deviceMetadata.getChunkGroupMetaDataList();
+              List<ChunkGroupMetaData> chunkGroupMetaDataList = deviceMetadata
+                  .getChunkGroupMetaDataList();
               for (ChunkGroupMetaData chunkGroupMetaData : chunkGroupMetaDataList) {
                 for (ChunkMetaData chunkMetaData : chunkGroupMetaData.getChunkMetaDataList()) {
-                  tsFileResource.updateTime(chunkGroupMetaData.getDeviceID(), chunkMetaData.getStartTime());
-                  tsFileResource.updateTime(chunkGroupMetaData.getDeviceID(), chunkMetaData.getEndTime());
+                  tsFileResource.updateStartTime(chunkGroupMetaData.getDeviceID(),
+                      chunkMetaData.getStartTime());
+                  tsFileResource
+                      .updateEndTime(chunkGroupMetaData.getDeviceID(), chunkMetaData.getEndTime());
                 }
               }
             }
@@ -132,8 +137,10 @@ public class TsFileRecoverPerformer {
       for (ChunkGroupMetaData chunkGroupMetaData : restorableTsFileIOWriter
           .getChunkGroupMetaDatas()) {
         for (ChunkMetaData chunkMetaData : chunkGroupMetaData.getChunkMetaDataList()) {
-          tsFileResource.updateTime(chunkGroupMetaData.getDeviceID(), chunkMetaData.getStartTime());
-          tsFileResource.updateTime(chunkGroupMetaData.getDeviceID(), chunkMetaData.getEndTime());
+          tsFileResource.updateStartTime(chunkGroupMetaData.getDeviceID(),
+              chunkMetaData.getStartTime());
+          tsFileResource
+              .updateEndTime(chunkGroupMetaData.getDeviceID(), chunkMetaData.getEndTime());
         }
       }
     }


[incubator-iotdb] 10/12: IOTDB-242 fix mvn integration-test failed because the files in the target folder changes (server and client module)

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit adc3f13ff9e451a1af0c860bb758a8f2411205af
Author: xiangdong huang <sa...@gmail.com>
AuthorDate: Fri Sep 27 00:54:15 2019 +0800

    IOTDB-242 fix mvn integration-test failed because the files in the target folder changes (server and client module)
---
 server/src/test/java/org/apache/iotdb/db/script/EnvScriptIT.java | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/server/src/test/java/org/apache/iotdb/db/script/EnvScriptIT.java b/server/src/test/java/org/apache/iotdb/db/script/EnvScriptIT.java
index 9b9406e..107ca56 100644
--- a/server/src/test/java/org/apache/iotdb/db/script/EnvScriptIT.java
+++ b/server/src/test/java/org/apache/iotdb/db/script/EnvScriptIT.java
@@ -107,7 +107,7 @@ public class EnvScriptIT {
     if(!userDir.exists()) {
       throw new RuntimeException("user.dir " + userDir.getAbsolutePath() + " doesn't exist.");
     }
-    File target = new File(userDir, "target/maven-archiver/iotdb-server/pom.properties");
+    File target = new File(userDir, "target/maven-archiver/pom.properties");
     Properties properties = new Properties();
     assertTrue(target.exists());
     try {


[incubator-iotdb] 04/12: fix tsfile example data type

Posted by hx...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch rel/0.8
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git

commit 66d0d9d4cd794e62dd9cd31bc6ba826ed697fc9a
Author: qiaojialin <64...@qq.com>
AuthorDate: Fri Sep 6 15:35:14 2019 +0800

    fix tsfile example data type
---
 docs/Documentation/UserGuide/7-TsFile/2-Usage.md   | 20 ++++---
 .../java/org/apache/iotdb/tsfile/TsFileWrite.java  | 66 +++-------------------
 2 files changed, 20 insertions(+), 66 deletions(-)

diff --git a/docs/Documentation/UserGuide/7-TsFile/2-Usage.md b/docs/Documentation/UserGuide/7-TsFile/2-Usage.md
index 89b2b68..b38d7c2 100644
--- a/docs/Documentation/UserGuide/7-TsFile/2-Usage.md
+++ b/docs/Documentation/UserGuide/7-TsFile/2-Usage.md
@@ -219,22 +219,24 @@ public class TsFileWrite {
 
       // add measurements into file schema
       tsFileWriter
-              .addMeasurement(new MeasurementSchema("sensor_1", TSDataType.FLOAT, TSEncoding.RLE));
+          .addMeasurement(new MeasurementSchema("sensor_1", TSDataType.INT64, TSEncoding.RLE));
       tsFileWriter
-              .addMeasurement(new MeasurementSchema("sensor_2", TSDataType.INT32, TSEncoding.TS_2DIFF));
+          .addMeasurement(new MeasurementSchema("sensor_2", TSDataType.INT64, TSEncoding.RLE));
       tsFileWriter
-              .addMeasurement(new MeasurementSchema("sensor_3", TSDataType.INT32, TSEncoding.TS_2DIFF));
+          .addMeasurement(new MeasurementSchema("sensor_3", TSDataType.INT64, TSEncoding.RLE));
+            
       // construct TSRecord
       TSRecord tsRecord = new TSRecord(1, "device_1");
-      DataPoint dPoint1 = new FloatDataPoint("sensor_1", 1.2f);
-      DataPoint dPoint2 = new IntDataPoint("sensor_2", 20);
-
-     //For time 1 in device_1, the data will be 1.2, 20, null
+      DataPoint dPoint1 = new LongDataPoint("sensor_1", 1);
+      DataPoint dPoint2 = new LongDataPoint("sensor_2", 2);
+      DataPoint dPoint3 = new LongDataPoint("sensor_3", 3);
       tsRecord.addTuple(dPoint1);
       tsRecord.addTuple(dPoint2);
-
-      // write a TSRecord to TsFile
+      tsRecord.addTuple(dPoint3);
+            
+      // write TSRecord
       tsFileWriter.write(tsRecord);
+      
       // close TsFile
       tsFileWriter.close();
     } catch (Throwable e) {
diff --git a/tsfile/example/src/main/java/org/apache/iotdb/tsfile/TsFileWrite.java b/tsfile/example/src/main/java/org/apache/iotdb/tsfile/TsFileWrite.java
index 3b6cfeb..a93a71d 100644
--- a/tsfile/example/src/main/java/org/apache/iotdb/tsfile/TsFileWrite.java
+++ b/tsfile/example/src/main/java/org/apache/iotdb/tsfile/TsFileWrite.java
@@ -27,6 +27,7 @@ import org.apache.iotdb.tsfile.write.record.TSRecord;
 import org.apache.iotdb.tsfile.write.record.datapoint.DataPoint;
 import org.apache.iotdb.tsfile.write.record.datapoint.FloatDataPoint;
 import org.apache.iotdb.tsfile.write.record.datapoint.IntDataPoint;
+import org.apache.iotdb.tsfile.write.record.datapoint.LongDataPoint;
 import org.apache.iotdb.tsfile.write.schema.MeasurementSchema;
 /**
  * An example of writing data to TsFile
@@ -46,73 +47,24 @@ public class TsFileWrite {
 
       // add measurements into file schema
       tsFileWriter
-              .addMeasurement(new MeasurementSchema("sensor_1", TSDataType.FLOAT, TSEncoding.RLE));
+          .addMeasurement(new MeasurementSchema("sensor_1", TSDataType.INT64, TSEncoding.RLE));
       tsFileWriter
-              .addMeasurement(new MeasurementSchema("sensor_2", TSDataType.INT32, TSEncoding.TS_2DIFF));
+          .addMeasurement(new MeasurementSchema("sensor_2", TSDataType.INT64, TSEncoding.RLE));
       tsFileWriter
-              .addMeasurement(new MeasurementSchema("sensor_3", TSDataType.INT32, TSEncoding.TS_2DIFF));
+          .addMeasurement(new MeasurementSchema("sensor_3", TSDataType.INT64, TSEncoding.RLE));
+
       // construct TSRecord
       TSRecord tsRecord = new TSRecord(1, "device_1");
-      DataPoint dPoint1 = new FloatDataPoint("sensor_1", 1.2f);
-      DataPoint dPoint2 = new IntDataPoint("sensor_2", 20);
-      DataPoint dPoint3;
-      tsRecord.addTuple(dPoint1);
-      tsRecord.addTuple(dPoint2);
-
-      // write a TSRecord to TsFile
-      tsFileWriter.write(tsRecord);
-
-      tsRecord = new TSRecord(2, "device_1");
-      dPoint2 = new IntDataPoint("sensor_2", 20);
-      dPoint3 = new IntDataPoint("sensor_3", 50);
-      tsRecord.addTuple(dPoint2);
-      tsRecord.addTuple(dPoint3);
-      tsFileWriter.write(tsRecord);
-
-      tsRecord = new TSRecord(3, "device_1");
-      dPoint1 = new FloatDataPoint("sensor_1", 1.4f);
-      dPoint2 = new IntDataPoint("sensor_2", 21);
-      tsRecord.addTuple(dPoint1);
-      tsRecord.addTuple(dPoint2);
-      tsFileWriter.write(tsRecord);
-
-      tsRecord = new TSRecord(4, "device_1");
-      dPoint1 = new FloatDataPoint("sensor_1", 1.2f);
-      dPoint2 = new IntDataPoint("sensor_2", 20);
-      dPoint3 = new IntDataPoint("sensor_3", 51);
+      DataPoint dPoint1 = new LongDataPoint("sensor_1", 1);
+      DataPoint dPoint2 = new LongDataPoint("sensor_2", 2);
+      DataPoint dPoint3 = new LongDataPoint("sensor_3", 3);
       tsRecord.addTuple(dPoint1);
       tsRecord.addTuple(dPoint2);
       tsRecord.addTuple(dPoint3);
-      tsFileWriter.write(tsRecord);
 
-      tsRecord = new TSRecord(6, "device_1");
-      dPoint1 = new FloatDataPoint("sensor_1", 7.2f);
-      dPoint2 = new IntDataPoint("sensor_2", 10);
-      dPoint3 = new IntDataPoint("sensor_3", 11);
-      tsRecord.addTuple(dPoint1);
-      tsRecord.addTuple(dPoint2);
-      tsRecord.addTuple(dPoint3);
-      tsFileWriter.write(tsRecord);
-      
-      tsRecord = new TSRecord(7, "device_1");
-      dPoint1 = new FloatDataPoint("sensor_1", 6.2f);
-      dPoint2 = new IntDataPoint("sensor_2", 20);
-      dPoint3 = new IntDataPoint("sensor_3", 21);
-      tsRecord.addTuple(dPoint1);
-      tsRecord.addTuple(dPoint2);
-      tsRecord.addTuple(dPoint3);
+      // write TSRecord
       tsFileWriter.write(tsRecord);
 
-      tsRecord = new TSRecord(8, "device_1");
-      dPoint1 = new FloatDataPoint("sensor_1", 9.2f);
-      dPoint2 = new IntDataPoint("sensor_2", 30);
-      dPoint3 = new IntDataPoint("sensor_3", 31);
-      tsRecord.addTuple(dPoint1);
-      tsRecord.addTuple(dPoint2);
-      tsRecord.addTuple(dPoint3);
-      tsFileWriter.write(tsRecord);
-    
-      // close TsFile
       tsFileWriter.close();
     } catch (Throwable e) {
       e.printStackTrace();