You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by ji...@apache.org on 2019/09/23 08:10:46 UTC

[incubator-iotdb] branch dev_TTL updated: add default ttl

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

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


The following commit(s) were added to refs/heads/dev_TTL by this push:
     new 485b144  add default ttl
485b144 is described below

commit 485b1449852649afff2f0cdade41ab7c3b051b83
Author: jt <jt...@163.com>
AuthorDate: Mon Sep 23 15:59:42 2019 +0800

    add default ttl
---
 server/src/assembly/resources/conf/iotdb-engine.properties  |  3 +++
 .../src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java | 13 +++++++++++++
 .../main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java |  3 +++
 .../iotdb/db/engine/storagegroup/StorageGroupProcessor.java |  2 +-
 .../src/main/java/org/apache/iotdb/db/metadata/MTree.java   |  2 ++
 .../java/org/apache/iotdb/db/service/TSServiceImpl.java     |  3 ++-
 6 files changed, 24 insertions(+), 2 deletions(-)

diff --git a/server/src/assembly/resources/conf/iotdb-engine.properties b/server/src/assembly/resources/conf/iotdb-engine.properties
index eacc84b..b5c8298 100644
--- a/server/src/assembly/resources/conf/iotdb-engine.properties
+++ b/server/src/assembly/resources/conf/iotdb-engine.properties
@@ -165,6 +165,9 @@ concurrent_flush_thread=0
 # (i.e., whether use ChunkBufferPool), value true, false
 chunk_buffer_pool_enable=false
 
+# default TTL for new storage groups, in ms
+# default_ttl=36000000
+
 ####################
 ### Merge Configurations
 ####################
diff --git a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index 85e25a3..4781455 100644
--- a/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ b/server/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -346,6 +346,11 @@ public class IoTDBConfig {
    */
   private String hdfsPort = "9000";
 
+  /**
+   * defaultTTL for new storage groups, in ms.
+   */
+  private long defaultTTL = Long.MAX_VALUE;
+
   public IoTDBConfig() {
     // empty constructor
   }
@@ -951,4 +956,12 @@ public class IoTDBConfig {
   public void setHdfsPort(String hdfsPort) {
     this.hdfsPort = hdfsPort;
   }
+
+  public long getDefaultTTL() {
+    return defaultTTL;
+  }
+
+  public void setDefaultTTL(long defaultTTL) {
+    this.defaultTTL = defaultTTL;
+  }
 }
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 544d0b4..5dc0cf9 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
@@ -274,6 +274,9 @@ public class IoTDBDescriptor {
       conf.setHdfsIp(properties.getProperty("hdfs_ip"));
       conf.setHdfsPort(properties.getProperty("hdfs_port"));
 
+      conf.setDefaultTTL(Long.parseLong(properties.getProperty("default_ttl",
+          String.valueOf(conf.getDefaultTTL()))));
+
       // At the same time, set TSFileConfig
       TSFileDescriptor.getInstance().getConfig().setTSFileStorageFs(properties.getProperty("tsfile_storage_fs"));
       TSFileDescriptor.getInstance().getConfig().setHdfsIp(properties.getProperty("hdfs_ip"));
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 f26ed15..b1744e9 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
@@ -348,7 +348,7 @@ public class StorageGroupProcessor {
   public boolean insert(InsertPlan insertPlan) throws QueryProcessorException {
     // reject insertions that are out of ttl
     if (!checkTTL(insertPlan.getTime())) {
-      throw new OutOfTTLException(insertPlan.getTime(), System.currentTimeMillis() - dataTTL);
+     return false;
     }
     writeLock();
     try {
diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
index 0e405d4..b9a5a3c 100644
--- a/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
+++ b/server/src/main/java/org/apache/iotdb/db/metadata/MTree.java
@@ -29,6 +29,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.Stack;
+import org.apache.iotdb.db.conf.IoTDBDescriptor;
 import org.apache.iotdb.db.exception.PathErrorException;
 import org.apache.iotdb.tsfile.file.metadata.enums.CompressionType;
 import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
@@ -199,6 +200,7 @@ public class MTree implements Serializable {
     }
     cur = cur.getChild(nodeNames[i]);
     cur.setStorageLevel(true);
+    cur.setDataTTL(IoTDBDescriptor.getInstance().getConfig().getDefaultTTL());
     setDataFileName(path, cur);
   }
 
diff --git a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
index 4aee53a..24941d6 100644
--- a/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
+++ b/server/src/main/java/org/apache/iotdb/db/service/TSServiceImpl.java
@@ -52,6 +52,7 @@ import org.apache.iotdb.db.engine.StorageEngine;
 import org.apache.iotdb.db.engine.flush.pool.FlushTaskPoolManager;
 import org.apache.iotdb.db.exception.ArgsErrorException;
 import org.apache.iotdb.db.exception.MetadataErrorException;
+import org.apache.iotdb.db.exception.NotStorageGroupException;
 import org.apache.iotdb.db.exception.OutOfTTLException;
 import org.apache.iotdb.db.exception.PathErrorException;
 import org.apache.iotdb.db.exception.ProcessorException;
@@ -1218,7 +1219,7 @@ public class TSServiceImpl implements TSIService.Iface, ServerContext {
       logger.debug("meet error while processing non-query. ", e);
       if (e.getCause() instanceof OutOfTTLException) {
         return getStatus(TSStatusCode.OUT_OF_TTL_ERROR, e.getMessage());
-      } else if (e.getCause() instanceof PathErrorException) {
+      } else if (e.getCause() instanceof NotStorageGroupException) {
         return getStatus(TSStatusCode.NOT_A_STORAGE_GROUP_ERROR, e.getMessage());
       } else {
         return getStatus(TSStatusCode.EXECUTE_STATEMENT_ERROR, e.getMessage());