Pipe: Properly handle OUT_OF_TTL status code on receiver side when data syncing (#12414)
diff --git a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java
index 4412ecc..7efd7b8 100644
--- a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java
+++ b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/receiver/visitor/PipeStatementTSStatusVisitor.java
@@ -76,7 +76,10 @@
private TSStatus visitInsertBase(
final InsertBaseStatement insertBaseStatement, final TSStatus context) {
- if (context.getCode() == TSStatusCode.METADATA_ERROR.getStatusCode()) {
+ if (context.getCode() == TSStatusCode.OUT_OF_TTL.getStatusCode()) {
+ return new TSStatus(TSStatusCode.PIPE_RECEIVER_IDEMPOTENT_CONFLICT_EXCEPTION.getStatusCode())
+ .setMessage(context.getMessage());
+ } else if (context.getCode() == TSStatusCode.METADATA_ERROR.getStatusCode()) {
return new TSStatus(TSStatusCode.PIPE_RECEIVER_USER_CONFLICT_EXCEPTION.getStatusCode())
.setMessage(context.getMessage());
}