You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@iotdb.apache.org by su...@apache.org on 2019/07/09 12:08:37 UTC
[incubator-iotdb] 01/01: catch exception to find broken tsfile
This is an automated email from the ASF dual-hosted git repository.
suyue pushed a commit to branch hash_map_with_fix_length
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit 7e9f543819cdb7348a4a6e9661bf39b0add9dcf1
Author: suyue <23...@qq.com>
AuthorDate: Tue Jul 9 20:07:59 2019 +0800
catch exception to find broken tsfile
---
.../iotdb/tsfile/read/controller/ChunkLoader.java | 6 +++++
.../tsfile/read/controller/ChunkLoaderImpl.java | 3 +++
.../reader/series/FileSeriesReaderWithFilter.java | 26 +++++++++++++++-------
3 files changed, 27 insertions(+), 8 deletions(-)
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/ChunkLoader.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/ChunkLoader.java
index 78e561e..de92164 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/ChunkLoader.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/ChunkLoader.java
@@ -34,4 +34,10 @@ public interface ChunkLoader {
*/
void close() throws IOException;
+ /**
+ *
+ * @return file name of the chunk.
+ */
+ String printFileName();
+
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/ChunkLoaderImpl.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/ChunkLoaderImpl.java
index 4907634..1f4905f 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/ChunkLoaderImpl.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/controller/ChunkLoaderImpl.java
@@ -69,4 +69,7 @@ public class ChunkLoaderImpl implements ChunkLoader {
reader.close();
}
+ public String printFileName(){
+ return reader.getFileName();
+ }
}
diff --git a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReaderWithFilter.java b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReaderWithFilter.java
index c874e17..d2a8444 100644
--- a/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReaderWithFilter.java
+++ b/tsfile/src/main/java/org/apache/iotdb/tsfile/read/reader/series/FileSeriesReaderWithFilter.java
@@ -27,14 +27,17 @@ import org.apache.iotdb.tsfile.read.controller.ChunkLoader;
import org.apache.iotdb.tsfile.read.filter.DigestForFilter;
import org.apache.iotdb.tsfile.read.filter.basic.Filter;
import org.apache.iotdb.tsfile.read.reader.chunk.ChunkReaderWithFilter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
- * Series reader is used to query one series of one TsFile,
- * and this reader has a filter operating on the same series.
+ * Series reader is used to query one series of one TsFile, and this reader has a filter operating
+ * on the same series.
*/
public class FileSeriesReaderWithFilter extends FileSeriesReader {
private Filter filter;
+ private static final Logger LOG = LoggerFactory.getLogger(FileSeriesReaderWithFilter.class);
public FileSeriesReaderWithFilter(ChunkLoader chunkLoader,
List<ChunkMetaData> chunkMetaDataList, Filter filter) {
@@ -50,12 +53,19 @@ public class FileSeriesReaderWithFilter extends FileSeriesReader {
@Override
protected boolean chunkSatisfied(ChunkMetaData chunkMetaData) {
- DigestForFilter digest = new DigestForFilter(chunkMetaData.getStartTime(),
- chunkMetaData.getEndTime(),
- chunkMetaData.getDigest().getStatistics().get(StatisticConstant.MIN_VALUE),
- chunkMetaData.getDigest().getStatistics().get(StatisticConstant.MAX_VALUE),
- chunkMetaData.getTsDataType());
- return filter.satisfy(digest);
+ try {
+ assert chunkMetaData.getDigest() != null;
+ assert chunkMetaData.getDigest().getStatistics() != null;
+ DigestForFilter digest = new DigestForFilter(chunkMetaData.getStartTime(),
+ chunkMetaData.getEndTime(),
+ chunkMetaData.getDigest().getStatistics().get(StatisticConstant.MIN_VALUE),
+ chunkMetaData.getDigest().getStatistics().get(StatisticConstant.MAX_VALUE),
+ chunkMetaData.getTsDataType());
+ return filter.satisfy(digest);
+ } catch (Exception e) {
+ LOG.error("when check chunkMetaData, find an error in file {}.", chunkLoader.printFileName());
+ }
+ return false;
}
}