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

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


The following commit(s) were added to refs/heads/preallocate_array_list by this 
push:
     new eb46237e8b1 Revert "add memtable cache"
eb46237e8b1 is described below

commit eb46237e8b13fe389b61599c394316ce858677fa
Author: Tian Jiang <[email protected]>
AuthorDate: Wed Apr 23 09:44:53 2025 +0800

    Revert "add memtable cache"
    
    This reverts commit e702afe02d17af7ca64d153390e6aecdaf503957.
---
 .../java/org/apache/iotdb/db/conf/IoTDBConfig.java | 19 ----------------
 .../org/apache/iotdb/db/conf/IoTDBDescriptor.java  | 25 ++++++++++------------
 .../protocol/thrift/impl/ClientRPCServiceImpl.java | 17 +++++++--------
 .../db/storageengine/dataregion/DataRegion.java    | 21 ------------------
 .../dataregion/memtable/AbstractMemTable.java      |  8 -------
 .../memtable/AbstractWritableMemChunk.java         | 16 ++++++--------
 .../memtable/AlignedWritableMemChunk.java          | 15 +------------
 .../memtable/AlignedWritableMemChunkGroup.java     |  5 -----
 .../dataregion/memtable/IMemTable.java             |  3 ---
 .../dataregion/memtable/IWritableMemChunk.java     |  3 ---
 .../memtable/IWritableMemChunkGroup.java           |  3 ---
 .../dataregion/memtable/TsFileProcessor.java       | 15 +++++--------
 .../dataregion/memtable/WritableMemChunk.java      | 15 +------------
 .../dataregion/memtable/WritableMemChunkGroup.java |  7 ------
 14 files changed, 32 insertions(+), 140 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
index d3594d03a37..b5d5d186953 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBConfig.java
@@ -1154,9 +1154,6 @@ public class IoTDBConfig {
   private boolean enableGCThrottle = false;
   private int gcThrottleTimeMs = 1000;
 
-  private boolean enableMemTableCache = true;
-  private int maxCachedMemTablePerRegion = 1;
-
   IoTDBConfig() {}
 
   public int getMaxLogEntriesNumPerBatch() {
@@ -4101,20 +4098,4 @@ public class IoTDBConfig {
   public void setEnableGCThrottle(boolean enableGCThrottle) {
     this.enableGCThrottle = enableGCThrottle;
   }
-
-  public boolean isEnableMemTableCache() {
-    return enableMemTableCache;
-  }
-
-  public void setEnableMemTableCache(boolean enableMemTableCache) {
-    this.enableMemTableCache = enableMemTableCache;
-  }
-
-  public int getMaxCachedMemTablePerRegion() {
-    return maxCachedMemTablePerRegion;
-  }
-
-  public void setMaxCachedMemTablePerRegion(int maxCachedMemTablePerRegion) {
-    this.maxCachedMemTablePerRegion = maxCachedMemTablePerRegion;
-  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
index 702807607d9..e6e5377009d 100755
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/conf/IoTDBDescriptor.java
@@ -1074,23 +1074,20 @@ public class IoTDBDescriptor {
                 "detail_container_min_degrade_memory_in_bytes",
                 
String.valueOf(conf.getDetailContainerMinDegradeMemoryInBytes()))));
 
-    conf.setEnableGCThrottle(
-        Boolean.parseBoolean(
-            properties.getProperty(
-                "enable_gc_throttle", 
String.valueOf(conf.isEnableGCThrottle()))));
+    conf.setEnableGCThrottle(Boolean.parseBoolean(
+        properties.getProperty(
+            "enable_gc_throttle",
+            String.valueOf(conf.isEnableGCThrottle())
+        )
+    ));
     conf.setGcThrottleTimeMs(
         Integer.parseInt(
             properties.getProperty(
-                "gc_throttle_time_ms", 
String.valueOf(conf.getGcThrottleTimeMs()))));
-
-    conf.setEnableMemTableCache(
-        Boolean.parseBoolean(
-            properties.getProperty(
-                "enable_memtable_cache", 
String.valueOf(conf.isEnableGCThrottle()))));
-    conf.setMaxCachedMemTablePerRegion(
-        Integer.parseInt(
-            properties.getProperty(
-                "max_cached_memtable_per_region", 
String.valueOf(conf.getGcThrottleTimeMs()))));
+                "gc_throttle_time_ms",
+                String.valueOf(conf.getGcThrottleTimeMs())
+            )
+        )
+    );
 
     loadIoTConsensusProps(properties);
     loadIoTConsensusV2Props(properties);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
index 6f72f46ae08..e4b9f4514dc 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/protocol/thrift/impl/ClientRPCServiceImpl.java
@@ -19,6 +19,7 @@
 
 package org.apache.iotdb.db.protocol.thrift.impl;
 
+import java.util.Random;
 import org.apache.iotdb.common.rpc.thrift.TAggregationType;
 import org.apache.iotdb.common.rpc.thrift.TEndPoint;
 import org.apache.iotdb.common.rpc.thrift.TRegionReplicaSet;
@@ -214,7 +215,6 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 import java.util.Optional;
-import java.util.Random;
 import java.util.concurrent.TimeUnit;
 
 import static org.apache.iotdb.commons.partition.DataPartition.NOT_ASSIGNED;
@@ -3065,7 +3065,6 @@ public class ClientRPCServiceImpl implements 
IClientRPCServiceWithHandler {
   }
 
   private static final Random throttleRandom = new Random();
-
   public static void gcThrottle() {
     if (!IoTDBDescriptor.getInstance().getConfig().isEnableGCThrottle()) {
       return;
@@ -3073,13 +3072,13 @@ public class ClientRPCServiceImpl implements 
IClientRPCServiceWithHandler {
     int minimumGcTimePercentToThrottle = 20;
     long gcTimePercentage = 
JvmGcMonitorMetrics.getInstance().getGcData().getGcTimePercentage();
     // if gc time is above 20%, pause the request with the probability equals 
to gc time percent
-    if (gcTimePercentage > minimumGcTimePercentToThrottle
-        && throttleRandom.nextInt(100) < gcTimePercentage) {
-      try {
-        
Thread.sleep(IoTDBDescriptor.getInstance().getConfig().getGcThrottleTimeMs());
-      } catch (InterruptedException e) {
-        Thread.currentThread().interrupt();
+    if (gcTimePercentage > minimumGcTimePercentToThrottle && 
throttleRandom.nextInt(100) < gcTimePercentage) {
+        try {
+          
Thread.sleep(IoTDBDescriptor.getInstance().getConfig().getGcThrottleTimeMs());
+        } catch (InterruptedException e) {
+          Thread.currentThread().interrupt();
+        }
       }
-    }
+
   }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
index 90a03098501..8880f4f1723 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/DataRegion.java
@@ -176,8 +176,6 @@ import java.util.Objects;
 import java.util.Optional;
 import java.util.Set;
 import java.util.TreeMap;
-import java.util.concurrent.ArrayBlockingQueue;
-import java.util.concurrent.BlockingQueue;
 import java.util.concurrent.Callable;
 import java.util.concurrent.CompletableFuture;
 import java.util.concurrent.ConcurrentHashMap;
@@ -335,10 +333,6 @@ public class DataRegion implements IDataRegionForQuery {
   private ILoadDiskSelector ordinaryLoadDiskSelector;
   private ILoadDiskSelector pipeAndIoTV2LoadDiskSelector;
 
-  private BlockingQueue<IMemTable> memTableCache =
-      new ArrayBlockingQueue<>(
-          
IoTDBDescriptor.getInstance().getConfig().getMaxCachedMemTablePerRegion());
-
   /**
    * Construct a database processor.
    *
@@ -3948,19 +3942,4 @@ public class DataRegion implements IDataRegionForQuery {
       return DataNodeTTLCache.getInstance().getTTLForTable(databaseName, 
insertNode.getTableName());
     }
   }
-
-  public IMemTable getCachedMemTable() {
-    if (IoTDBDescriptor.getInstance().getConfig().isEnableMemTableCache()) {
-      return memTableCache.poll();
-    } else {
-      return null;
-    }
-  }
-
-  @SuppressWarnings({"ResultOfMethodCallIgnored", "java:S899"})
-  public void cacheMemTable(IMemTable memTable) {
-    if (IoTDBDescriptor.getInstance().getConfig().isEnableMemTableCache()) {
-      memTableCache.offer(memTable);
-    }
-  }
 }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
index a664dba57cd..d550781858f 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractMemTable.java
@@ -411,14 +411,6 @@ public abstract class AbstractMemTable implements 
IMemTable {
   @Override
   public void clear() {
     memTableMap.clear();
-    reset();
-  }
-
-  @Override
-  public void reset() {
-    for (IWritableMemChunkGroup value : memTableMap.values()) {
-      value.reset();
-    }
     memSize = 0;
     seriesNumber = 0;
     totalPointsNum = 0;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractWritableMemChunk.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractWritableMemChunk.java
index cdcc24978d7..ac71e3da6bb 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractWritableMemChunk.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AbstractWritableMemChunk.java
@@ -50,13 +50,14 @@ public abstract class AbstractWritableMemChunk implements 
IWritableMemChunk {
    * method must ensure success because it's part of flushing.
    *
    * @param tvList
-   * @return whether the TvList is cleared (exclusively held by the MemTable)
    */
-  protected boolean maybeReleaseTvList(TVList tvList) {
+  protected void maybeReleaseTvList(TVList tvList) {
     long startTimeInMs = System.currentTimeMillis();
-    while (true) {
+    boolean succeed = false;
+    while (!succeed) {
       try {
-        return tryReleaseTvList(tvList);
+        tryReleaseTvList(tvList);
+        succeed = true;
       } catch (MemoryNotEnoughException ex) {
         long waitQueryInMs = System.currentTimeMillis() - startTimeInMs;
         if (waitQueryInMs > MAX_WAIT_QUERY_MS) {
@@ -87,15 +88,11 @@ public abstract class AbstractWritableMemChunk implements 
IWritableMemChunk {
     }
   }
 
-  /**
-   * @return whether the list is cleared.
-   */
-  private boolean tryReleaseTvList(TVList tvList) {
+  private void tryReleaseTvList(TVList tvList) {
     tvList.lockQueryList();
     try {
       if (tvList.getQueryContextSet().isEmpty()) {
         tvList.clear();
-        return true;
       } else {
         QueryContext firstQuery = 
tvList.getQueryContextSet().iterator().next();
         // transfer memory from write process to read process. Here it 
reserves read memory and
@@ -107,7 +104,6 @@ public abstract class AbstractWritableMemChunk implements 
IWritableMemChunk {
         }
         // update current TVList owner to first query in the list
         tvList.setOwnerQuery(firstQuery);
-        return false;
       }
     } finally {
       tvList.unlockQueryList();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
index 5c63b317215..d20866d0c79 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunk.java
@@ -697,25 +697,12 @@ public class AlignedWritableMemChunk extends 
AbstractWritableMemChunk {
 
   @Override
   public void release() {
-    boolean listCleared = maybeReleaseTvList(list);
-    if (!listCleared) {
-      // if the list is not cleared, we cannot reuse it
-      list = null;
-    }
+    maybeReleaseTvList(list);
     for (AlignedTVList alignedTvList : sortedList) {
       maybeReleaseTvList(alignedTvList);
     }
   }
 
-  @Override
-  public void reset() {
-    sortedList.clear();
-    if (list == null) {
-      list = AlignedTVList.newAlignedList(dataTypes);
-    }
-    sortedRowCount = 0;
-  }
-
   @Override
   public long getFirstPoint() {
     if (rowCount() == 0) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java
index f15fffa62e2..36acdedf9bc 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/AlignedWritableMemChunkGroup.java
@@ -72,11 +72,6 @@ public class AlignedWritableMemChunkGroup implements 
IWritableMemChunkGroup {
     memChunk.release();
   }
 
-  @Override
-  public void reset() {
-    memChunk.reset();
-  }
-
   @Override
   public long count() {
     return memChunk.count();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IMemTable.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IMemTable.java
index 91fb831d955..44098b69a56 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IMemTable.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IMemTable.java
@@ -140,9 +140,6 @@ public interface IMemTable extends WALEntryValue {
   /** putBack all the memory resources. */
   void clear();
 
-  /** Prepare the memtable for new insertions, keeping the inner structures 
for reuse. */
-  void reset();
-
   boolean isEmpty();
 
   /**
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunk.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunk.java
index 2f2e819c9e8..13f09a05d8a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunk.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunk.java
@@ -116,9 +116,6 @@ public interface IWritableMemChunk extends WALEntryValue {
 
   void release();
 
-  /** Prepare the chunk for the next round of insertion. */
-  void reset();
-
   long getFirstPoint();
 
   long getLastPoint();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunkGroup.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunkGroup.java
index f46c7ebd8b9..62bf7700218 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunkGroup.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/IWritableMemChunkGroup.java
@@ -44,9 +44,6 @@ public interface IWritableMemChunkGroup extends WALEntryValue 
{
 
   void release();
 
-  /** Prepare the chunk group for the next round of insertion. */
-  void reset();
-
   long count();
 
   boolean contains(String measurement);
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
index ce9cdf5bd23..861b72c923a 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/TsFileProcessor.java
@@ -453,14 +453,11 @@ public class TsFileProcessor {
   }
 
   private void createNewWorkingMemTable() {
-    workMemTable = dataRegionInfo.getDataRegion().getCachedMemTable();
-    if (workMemTable == null) {
-      workMemTable =
-          MemTableManager.getInstance()
-              .getAvailableMemTable(
-                  dataRegionInfo.getDataRegion().getDatabaseName(),
-                  dataRegionInfo.getDataRegion().getDataRegionId());
-    }
+    workMemTable =
+        MemTableManager.getInstance()
+            .getAvailableMemTable(
+                dataRegionInfo.getDataRegion().getDatabaseName(),
+                dataRegionInfo.getDataRegion().getDataRegionId());
     walNode.onMemTableCreated(workMemTable, tsFileResource.getTsFilePath());
   }
 
@@ -1635,8 +1632,6 @@ public class TsFileProcessor {
     for (FlushListener flushListener : flushListeners) {
       flushListener.onMemTableFlushed(memTableToFlush);
     }
-    memTableToFlush.reset();
-    dataRegionInfo.getDataRegion().cacheMemTable(memTableToFlush);
     // Retry to avoid unnecessary read-only mode
     int retryCnt = 0;
     while (shouldClose && flushingMemTables.isEmpty() && writer != null) {
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java
index 89ee4445dbd..1f4078dfc7d 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunk.java
@@ -504,25 +504,12 @@ public class WritableMemChunk extends 
AbstractWritableMemChunk {
 
   @Override
   public void release() {
-    boolean listCleared = maybeReleaseTvList(list);
-    if (!listCleared) {
-      // the list cannot be reused if not cleared
-      list = null;
-    }
+    maybeReleaseTvList(list);
     for (TVList tvList : sortedList) {
       maybeReleaseTvList(tvList);
     }
   }
 
-  @Override
-  public void reset() {
-    sortedRowCount = 0;
-    sortedList.clear();
-    if (list == null) {
-      list = TVList.newList(schema.getType());
-    }
-  }
-
   @Override
   public int serializedSize() {
     int serializedSize = schema.serializedSize() + list.serializedSize();
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java
index 762ca3ed13c..854ca9c8d2c 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/memtable/WritableMemChunkGroup.java
@@ -80,13 +80,6 @@ public class WritableMemChunkGroup implements 
IWritableMemChunkGroup {
     }
   }
 
-  @Override
-  public void reset() {
-    for (IWritableMemChunk memChunk : memChunkMap.values()) {
-      memChunk.reset();
-    }
-  }
-
   @Override
   public long count() {
     long count = 0;

Reply via email to