This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch debug_metero
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
The following commit(s) were added to refs/heads/debug_metero by this push:
new 610a74c add logs and catch NPE in filter chunks
610a74c is described below
commit 610a74c592225b9ae43e9b5647abd9a36af452af
Author: jt2594838 <[email protected]>
AuthorDate: Thu Mar 12 11:16:28 2020 +0800
add logs and catch NPE in filter chunks
---
.../apache/iotdb/db/engine/merge/task/MergeFileTask.java | 15 +++++++++++++--
.../db/engine/storagegroup/StorageGroupProcessor.java | 2 +-
.../apache/iotdb/tsfile/write/writer/TsFileIOWriter.java | 6 +++++-
3 files changed, 19 insertions(+), 4 deletions(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeFileTask.java
b/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeFileTask.java
index 9c01908..06e9198 100644
---
a/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeFileTask.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/merge/task/MergeFileTask.java
@@ -166,7 +166,16 @@ class MergeFileTask {
new File(nextMergeVersionFile.getAbsolutePath() +
TsFileResource.RESOURCE_SUFFIX));
seqFile.setFile(nextMergeVersionFile);
} catch (Exception e) {
- logger.error("merge broken file: " +
oldFileWriter.getFile().getAbsolutePath(), e);
+ logger.error("An exception is encountered when moving merged chunks to
the old file {}: {}"
+ ,seqFile, e.getMessage());
+ // the old file may have been truncated, recover it if so
+ RestorableTsFileIOWriter oldFileRecoverWriter = new
RestorableTsFileIOWriter(
+ seqFile.getFile());
+ if (oldFileRecoverWriter.hasCrashed() &&
oldFileRecoverWriter.canWrite()) {
+ oldFileRecoverWriter.endFile(new
Schema(oldFileRecoverWriter.getKnownSchema()));
+ } else {
+ oldFileRecoverWriter.close();
+ }
throw e;
} finally {
seqFile.getWriteQueryLock().writeLock().unlock();
@@ -253,7 +262,9 @@ class MergeFileTask {
new File(nextMergeVersionFile.getAbsolutePath() +
TsFileResource.RESOURCE_SUFFIX));
seqFile.setFile(nextMergeVersionFile);
} catch (Exception e) {
- logger.error(e.getMessage(), e);
+ logger.error("An exception is encountered when moving unmerged chunks to
the new file {}: {}"
+ ,seqFile, e.getMessage());
+ throw e;
} finally {
seqFile.getWriteQueryLock().writeLock().unlock();
}
diff --git
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
index 16bfb4a..7ceb249 100755
---
a/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
+++
b/server/src/main/java/org/apache/iotdb/db/engine/storagegroup/StorageGroupProcessor.java
@@ -286,7 +286,7 @@ public class StorageGroupProcessor {
if
(!IoTDBDescriptor.getInstance().getConfig().isContinueMergeAfterReboot()) {
mergingMods.delete();
}
- } catch (IOException | MetadataException e) {
+ } catch (Exception e) {
throw new StorageGroupProcessorException(e);
}
diff --git
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
index 597273c..aebfe99 100644
---
a/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
+++
b/tsfile/src/main/java/org/apache/iotdb/tsfile/write/writer/TsFileIOWriter.java
@@ -407,7 +407,11 @@ public class TsFileIOWriter {
while (chunkMetaDataIterator.hasNext()) {
ChunkMetaData chunkMetaData = chunkMetaDataIterator.next();
Path path = new Path(deviceId, chunkMetaData.getMeasurementUid());
- int startTimeIdx = startTimeIdxes.get(path);
+ Integer startTimeIdx = startTimeIdxes.get(path);
+ if (startTimeIdx == null) {
+ logger.error("Unexpected timeseries {} found in file {}", path,
file);
+ continue;
+ }
List<Long> pathChunkStartTimes = chunkStartTimes.get(path);
boolean chunkValid = startTimeIdx < pathChunkStartTimes.size()