This is an automated email from the ASF dual-hosted git repository. rong pushed a commit to branch random-opt-pipe in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit 919ed99abef8be34b5d00eab2d35fe72d2c3aeda Author: Steve Yurong Su <[email protected]> AuthorDate: Wed Apr 2 18:09:51 2025 +0800 Pipe: Optimized insert node cache hit possibility --- .../db/storageengine/dataregion/wal/utils/WALEntryHandler.java | 10 ++++++++-- .../storageengine/dataregion/wal/utils/WALEntryPosition.java | 4 ++-- .../storageengine/dataregion/wal/utils/WALInsertNodeCache.java | 6 ++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryHandler.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryHandler.java index 333842e38ef..f5d7406f5a6 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryHandler.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryHandler.java @@ -26,6 +26,7 @@ import org.apache.iotdb.db.storageengine.dataregion.wal.exception.MemTablePinExc import org.apache.iotdb.db.storageengine.dataregion.wal.exception.WALPipeException; import org.apache.iotdb.db.storageengine.dataregion.wal.node.WALNode; +import org.apache.tsfile.utils.Pair; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -90,8 +91,13 @@ public class WALEntryHandler { public InsertNode getInsertNodeViaCacheIfPossible() { try { final WALEntryValue finalValue = value; - return finalValue instanceof InsertNode ? (InsertNode) finalValue : null; - } catch (Exception e) { + if (finalValue instanceof InsertNode) { + return (InsertNode) finalValue; + } + final Pair<ByteBuffer, InsertNode> byteBufferInsertNodePair = + walEntryPosition.getByteBufferOrInsertNodeIfPossible(); + return byteBufferInsertNodePair == null ? null : byteBufferInsertNodePair.getRight(); + } catch (final Exception e) { logger.warn("Fail to get insert node via cache. {}", this, e); throw e; } diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryPosition.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryPosition.java index 438e6a897e2..1370745cea2 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryPosition.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALEntryPosition.java @@ -64,8 +64,8 @@ public class WALEntryPosition { * Try to read the wal entry directly from the cache. No need to check if the wal entry is ready * for read. */ - public Pair<ByteBuffer, InsertNode> readByteBufferOrInsertNodeViaCacheDirectly() { - return cache.getByteBufferOrInsertNode(this); + public Pair<ByteBuffer, InsertNode> getByteBufferOrInsertNodeIfPossible() { + return cache.getByteBufferOrInsertNodeIfPossible(this); } /** diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCache.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCache.java index 21571c1ed98..0823c7e7b6e 100644 --- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCache.java +++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/utils/WALInsertNodeCache.java @@ -229,6 +229,12 @@ public class WALInsertNodeCache { return pair; } + public Pair<ByteBuffer, InsertNode> getByteBufferOrInsertNodeIfPossible( + final WALEntryPosition position) { + hasPipeRunning = true; + return lruCache.getIfPresent(position); + } + public void cacheInsertNodeIfNeeded( final WALEntryPosition walEntryPosition, final InsertNode insertNode) { // reduce memory usage
