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

xingtanzjr pushed a commit to branch rel/1.1
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rel/1.1 by this push:
     new a8eacc038f Follower doesn't need to update last cache when using 
IoT_consensus (#9811) (#9821)
a8eacc038f is described below

commit a8eacc038fb24a078b8bba85380389d87d8a66b9
Author: Zhang.Jinrui <[email protected]>
AuthorDate: Wed May 10 23:20:49 2023 +0800

    Follower doesn't need to update last cache when using IoT_consensus (#9811) 
(#9821)
---
 .../java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java  | 8 ++++++--
 .../iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java     | 8 ++++++++
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
index 7aa38a3a68..7730aeef5e 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/DataRegion.java
@@ -1143,7 +1143,9 @@ public class DataRegion implements IDataRegionForQuery {
   }
 
   private void tryToUpdateBatchInsertLastCache(InsertTabletNode node, long 
latestFlushedTime) {
-    if (!IoTDBDescriptor.getInstance().getConfig().isLastCacheEnabled()) {
+    if (!IoTDBDescriptor.getInstance().getConfig().isLastCacheEnabled()
+        || 
(config.getDataRegionConsensusProtocolClass().equals(ConsensusFactory.IOT_CONSENSUS)
+            && !node.isFromLeaderWhenUsingIoTConsensus())) {
       return;
     }
     for (int i = 0; i < node.getColumns().length; i++) {
@@ -1184,7 +1186,9 @@ public class DataRegion implements IDataRegionForQuery {
   }
 
   private void tryToUpdateInsertLastCache(InsertRowNode node, long 
latestFlushedTime) {
-    if (!IoTDBDescriptor.getInstance().getConfig().isLastCacheEnabled()) {
+    if (!IoTDBDescriptor.getInstance().getConfig().isLastCacheEnabled()
+        || 
(config.getDataRegionConsensusProtocolClass().equals(ConsensusFactory.IOT_CONSENSUS)
+            && !node.isFromLeaderWhenUsingIoTConsensus())) {
       return;
     }
     for (int i = 0; i < node.getValues().length; i++) {
diff --git 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java
 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java
index 0994935c95..a82685ed6a 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/mpp/plan/planner/plan/node/write/InsertNode.java
@@ -292,6 +292,14 @@ public abstract class InsertNode extends WritePlanNode {
 
   public abstract Object getFirstValueOfIndex(int index);
 
+  /**
+   * Notice: Call this method ONLY when using IOT_CONSENSUS, other consensus 
protocol cannot
+   * distinguish whether the insertNode is from leader by this method.
+   */
+  public boolean isFromLeaderWhenUsingIoTConsensus() {
+    return searchIndex == ConsensusReqReader.DEFAULT_SEARCH_INDEX;
+  }
+
   // region partial insert
   /**
    * Mark failed measurement, measurements[index], dataTypes[index] and 
values/columns[index] would

Reply via email to