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

jackietien pushed a commit to branch mergemaster0808
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit e8ce48fba2d76cc7e39e808e81be1d8a3b00a6e1
Author: Caideyipi <[email protected]>
AuthorDate: Mon Jul 29 15:21:27 2024 +0800

    Pipe: Enhanced the "isEmpty" judgement for tablets to prevent NPE (#13051)
    
    (cherry picked from commit e5ba36aba8aa37a977131b74111b747a688f48e5)
---
 .../payload/evolvable/request/PipeTransferTabletRawReq.java      | 4 +++-
 .../db/pipe/event/common/tablet/PipeRawTabletInsertionEvent.java | 9 ++++++++-
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletRawReq.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletRawReq.java
index 389eb63d07c..44ec2333705 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletRawReq.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/connector/payload/evolvable/request/PipeTransferTabletRawReq.java
@@ -42,6 +42,8 @@ import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.Objects;
 
+import static 
org.apache.iotdb.db.pipe.event.common.tablet.PipeRawTabletInsertionEvent.isTabletEmpty;
+
 public class PipeTransferTabletRawReq extends TPipeTransferReq {
 
   private static final Logger LOGGER = 
LoggerFactory.getLogger(PipeTransferTabletRawReq.class);
@@ -61,7 +63,7 @@ public class PipeTransferTabletRawReq extends 
TPipeTransferReq {
     new 
PipeTabletEventSorter(tablet).deduplicateAndSortTimestampsIfNecessary();
 
     try {
-      if (tablet == null || tablet.rowSize == 0) {
+      if (isTabletEmpty(tablet)) {
         // Empty statement, will be filtered after construction
         return new InsertTabletStatement();
       }
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeRawTabletInsertionEvent.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeRawTabletInsertionEvent.java
index cd84a60b496..96d5f2d90c3 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeRawTabletInsertionEvent.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/pipe/event/common/tablet/PipeRawTabletInsertionEvent.java
@@ -262,7 +262,14 @@ public class PipeRawTabletInsertionEvent extends 
EnrichedEvent implements Tablet
   }
 
   public boolean hasNoNeedParsingAndIsEmpty() {
-    return !shouldParseTimeOrPattern() && tablet.rowSize == 0;
+    return !shouldParseTimeOrPattern() && isTabletEmpty(tablet);
+  }
+
+  public static boolean isTabletEmpty(final Tablet tablet) {
+    return Objects.isNull(tablet)
+        || tablet.rowSize == 0
+        || Objects.isNull(tablet.getSchemas())
+        || tablet.getSchemas().isEmpty();
   }
 
   /////////////////////////// Object ///////////////////////////

Reply via email to