This is an automated email from the ASF dual-hosted git repository. rong pushed a commit to branch IOTDB-6021 in repository https://gitbox.apache.org/repos/asf/iotdb.git
commit d28e55ef949f5b5a495a21054603d1057340cf90 Author: Steve Yurong Su <[email protected]> AuthorDate: Thu Jun 22 04:17:54 2023 +0800 [IOTDB-6021] Pipe: NPE when sync TEXT timeseries with null fields between IoTDB instances using file mode with pattern filter (#10269) (cherry picked from commit 06d353158c788833509ffcc5c3d9dfa623be19b1) --- .../event/common/tsfile/TsFileInsertionDataTabletIterator.java | 9 ++++----- .../apache/iotdb/db/pipe/task/subtask/PipeConnectorSubtask.java | 5 +++++ .../main/java/org/apache/iotdb/tsfile/write/record/Tablet.java | 2 ++ 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataTabletIterator.java b/server/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataTabletIterator.java index 63b2b15d403..4ff37e21741 100644 --- a/server/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataTabletIterator.java +++ b/server/src/main/java/org/apache/iotdb/db/pipe/event/common/tsfile/TsFileInsertionDataTabletIterator.java @@ -128,11 +128,10 @@ public class TsFileInsertionDataTabletIterator implements Iterator<Tablet> { final int fieldSize = fields.size(); for (int i = 0; i < fieldSize; i++) { final Field field = fields.get(i); - if (field == null || field.getDataType() == null) { - tablet.bitMaps[i].mark(rowIndex); - } else { - tablet.addValue(measurements.get(i), rowIndex, field.getObjectValue(field.getDataType())); - } + tablet.addValue( + measurements.get(i), + rowIndex, + field == null ? null : field.getObjectValue(field.getDataType())); } tablet.rowSize++; diff --git a/server/src/main/java/org/apache/iotdb/db/pipe/task/subtask/PipeConnectorSubtask.java b/server/src/main/java/org/apache/iotdb/db/pipe/task/subtask/PipeConnectorSubtask.java index ce2b6403a2f..45c54078524 100644 --- a/server/src/main/java/org/apache/iotdb/db/pipe/task/subtask/PipeConnectorSubtask.java +++ b/server/src/main/java/org/apache/iotdb/db/pipe/task/subtask/PipeConnectorSubtask.java @@ -138,6 +138,11 @@ public class PipeConnectorSubtask extends PipeSubtask { // is dropped or the process is running normally. return; } + } else { + LOGGER.warn( + "A non-PipeConnectionException occurred, exception message: {}", + throwable.getMessage(), + throwable); } // handle other exceptions as usual diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java index ea1cd5846ca..c213fc74a2f 100644 --- a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java +++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/record/Tablet.java @@ -586,6 +586,8 @@ public class Tablet { boolean isNotNull = BytesUtils.byteToBool(ReadWriteIOUtils.readByte(byteBuffer)); if (isNotNull) { binaryValues[index] = ReadWriteIOUtils.readBinary(byteBuffer); + } else { + binaryValues[index] = Binary.EMPTY_VALUE; } } values[i] = binaryValues;
