This is an automated email from the ASF dual-hosted git repository.
tanxinyu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/master by this push:
new ffa327154f0 [IOTDB-6187] IoTConsense WAL Interval Reading Strategy
Optimization (#11291)
ffa327154f0 is described below
commit ffa327154f0b958c59e94dee0c50e61907c49f83
Author: Xiangpeng Hu <[email protected]>
AuthorDate: Thu Oct 26 15:46:49 2023 +0800
[IOTDB-6187] IoTConsense WAL Interval Reading Strategy Optimization (#11291)
---
.../storageengine/dataregion/wal/node/WALNode.java | 23 ++++++++++++++++++----
1 file changed, 19 insertions(+), 4 deletions(-)
diff --git
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
index 55a6f11cd5d..f3b6cd9c69c 100644
---
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
+++
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/wal/node/WALNode.java
@@ -64,9 +64,9 @@ import java.io.FileNotFoundException;
import java.nio.ByteBuffer;
import java.util.ArrayList;
import java.util.Collections;
-import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
+import java.util.ListIterator;
import java.util.Map;
import java.util.NoSuchElementException;
import java.util.concurrent.ConcurrentHashMap;
@@ -610,9 +610,9 @@ public class WALNode implements IWALNode {
/** true means filesToSearch and currentFileIndex are outdated, call
updateFilesToSearch */
private boolean needUpdatingFilesToSearch = true;
/** batch store insert nodes */
- private final List<IndexedConsensusRequest> insertNodes = new
LinkedList<>();
+ private final LinkedList<IndexedConsensusRequest> insertNodes = new
LinkedList<>();
/** iterator of insertNodes */
- private Iterator<IndexedConsensusRequest> itr = null;
+ private ListIterator<IndexedConsensusRequest> itr = null;
public PlanNodeIterator(long startIndex) {
this.nextSearchIndex = startIndex;
@@ -774,7 +774,7 @@ public class WALNode implements IWALNode {
// update iterator
if (!insertNodes.isEmpty()) {
- itr = insertNodes.iterator();
+ itr = insertNodes.listIterator();
return true;
}
return false;
@@ -832,6 +832,21 @@ public class WALNode implements IWALNode {
targetIndex,
targetIndex);
}
+
+ if (itr != null
+ && itr.hasNext()
+ && insertNodes.get(itr.nextIndex()).getSearchIndex() <= targetIndex
+ && targetIndex <= insertNodes.getLast().getSearchIndex()) {
+ while (itr.hasNext()) {
+ IndexedConsensusRequest request = itr.next();
+ if (targetIndex == request.getSearchIndex()) {
+ itr.previous();
+ nextSearchIndex = targetIndex;
+ return;
+ }
+ }
+ }
+
reset();
nextSearchIndex = targetIndex;
}