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

tanxinyu pushed a commit to branch rc/1.3.3
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/rc/1.3.3 by this push:
     new 1df0000d7be [To rc/1.3.3][Inconsistent copies] Enhance IoTConsensus 
Retry (#13431)
1df0000d7be is described below

commit 1df0000d7befb91bfb4ee9504bd64dff29921ec0
Author: Xiangpeng Hu <[email protected]>
AuthorDate: Fri Sep 6 18:19:02 2024 +0800

    [To rc/1.3.3][Inconsistent copies] Enhance IoTConsensus Retry (#13431)
---
 .../consensus/iot/client/DispatchLogHandler.java   | 41 ++++++++++++++--------
 .../dataregion/snapshot/SnapshotLoader.java        |  7 +---
 2 files changed, 27 insertions(+), 21 deletions(-)

diff --git 
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/iot/client/DispatchLogHandler.java
 
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/iot/client/DispatchLogHandler.java
index 0e03b97a111..9b0979bf6be 100644
--- 
a/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/iot/client/DispatchLogHandler.java
+++ 
b/iotdb-core/consensus/src/main/java/org/apache/iotdb/consensus/iot/client/DispatchLogHandler.java
@@ -74,6 +74,19 @@ public class DispatchLogHandler implements 
AsyncMethodCallback<TSyncLogEntriesRe
           messages);
       sleepCorrespondingTimeAndRetryAsynchronous();
     } else {
+      if (logger.isDebugEnabled()) {
+        boolean containsError =
+            response.getStatuses().stream()
+                .anyMatch(
+                    status -> status.getCode() != 
TSStatusCode.SUCCESS_STATUS.getStatusCode());
+        if (containsError) {
+          logger.debug(
+              "Send {} to peer {} complete but contains unsuccessful status: 
{}",
+              batch,
+              thread.getPeer(),
+              response.getStatuses());
+        }
+      }
       completeBatch(batch);
     }
     logDispatcherThreadMetrics.recordSyncLogTimePerRequest(System.nanoTime() - 
createTime);
@@ -88,21 +101,19 @@ public class DispatchLogHandler implements 
AsyncMethodCallback<TSyncLogEntriesRe
   @Override
   public void onError(Exception exception) {
     ++retryCount;
-    if (logger.isWarnEnabled()) {
-      Throwable rootCause = ExceptionUtils.getRootCause(exception);
-      logger.warn(
-          "Can not send {} to peer for {} times {} because {}",
-          batch,
-          thread.getPeer(),
-          retryCount,
-          rootCause.toString());
-      // skip TApplicationException caused by follower
-      if (rootCause instanceof TApplicationException) {
-        completeBatch(batch);
-        logger.warn("Skip retrying this Batch {} because of 
TApplicationException.", batch);
-        
logDispatcherThreadMetrics.recordSyncLogTimePerRequest(System.nanoTime() - 
createTime);
-        return;
-      }
+    Throwable rootCause = ExceptionUtils.getRootCause(exception);
+    logger.warn(
+        "Can not send {} to peer for {} times {} because {}",
+        batch,
+        thread.getPeer(),
+        retryCount,
+        rootCause.toString());
+    // skip TApplicationException caused by follower
+    if (rootCause instanceof TApplicationException) {
+      completeBatch(batch);
+      logger.warn("Skip retrying this Batch {} because of 
TApplicationException.", batch);
+      logDispatcherThreadMetrics.recordSyncLogTimePerRequest(System.nanoTime() 
- createTime);
+      return;
     }
     sleepCorrespondingTimeAndRetryAsynchronous();
   }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotLoader.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotLoader.java
index c608f1be5ac..57ae347b48b 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotLoader.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/storageengine/dataregion/snapshot/SnapshotLoader.java
@@ -82,12 +82,7 @@ public class SnapshotLoader {
     if (sourceDataDir.exists()) {
       File[] files =
           sourceDataDir.listFiles((dir, name) -> 
name.equals(SnapshotLogger.SNAPSHOT_LOG_NAME));
-      if (files == null || files.length == 0) {
-        LOGGER.warn("Failed to find snapshot log file, cannot recover it");
-      } else if (files.length > 1) {
-        LOGGER.warn(
-            "Found more than one snapshot log file, cannot recover it. {}", 
Arrays.toString(files));
-      } else {
+      if (files != null && files.length == 1) {
         LOGGER.info("Reading snapshot log file {}", files[0]);
         return files[0];
       }

Reply via email to