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];
}