This is an automated email from the ASF dual-hosted git repository.
jackietien pushed a commit to branch ZYBug
in repository https://gitbox.apache.org/repos/asf/iotdb.git
The following commit(s) were added to refs/heads/ZYBug by this push:
new 0ca9dc4 add merge datatype error log
new 58d716a Merge pull request #1886 from zhanglingzhe0820/ZYBug
0ca9dc4 is described below
commit 0ca9dc462aeb0e9969edd05c1a15acf129eda65a
Author: 张凌哲 <[email protected]>
AuthorDate: Wed Oct 28 17:12:29 2020 +0800
add merge datatype error log
---
.../query/reader/universal/CachedPriorityMergeReader.java | 14 +++++++++++++-
.../main/java/org/apache/iotdb/db/utils/MergeUtils.java | 4 ++++
.../main/java/org/apache/iotdb/db/utils/QueryUtils.java | 6 ++++++
3 files changed, 23 insertions(+), 1 deletion(-)
diff --git
a/server/src/main/java/org/apache/iotdb/db/query/reader/universal/CachedPriorityMergeReader.java
b/server/src/main/java/org/apache/iotdb/db/query/reader/universal/CachedPriorityMergeReader.java
index 887dd85..7882339 100644
---
a/server/src/main/java/org/apache/iotdb/db/query/reader/universal/CachedPriorityMergeReader.java
+++
b/server/src/main/java/org/apache/iotdb/db/query/reader/universal/CachedPriorityMergeReader.java
@@ -23,12 +23,15 @@ import java.io.IOException;
import org.apache.iotdb.tsfile.read.TimeValuePair;
import org.apache.iotdb.db.utils.TimeValuePairUtils;
import org.apache.iotdb.tsfile.file.metadata.enums.TSDataType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
/**
* CachedPriorityMergeReader use a cache to reduce unnecessary heap updates
and increase locality.
*/
public class CachedPriorityMergeReader extends PriorityMergeReader {
+ private static final Logger logger =
LoggerFactory.getLogger(CachedPriorityMergeReader.class);
private static final int CACHE_SIZE = 100;
private TimeValuePair[] timeValuePairCache = new TimeValuePair[CACHE_SIZE];
@@ -54,7 +57,16 @@ public class CachedPriorityMergeReader extends
PriorityMergeReader {
while (!heap.isEmpty() && cacheLimit < CACHE_SIZE) {
Element top = heap.peek();
if (lastTimestamp == null || top.currTime() != lastTimestamp) {
- TimeValuePairUtils.setTimeValuePair(top.timeValuePair,
timeValuePairCache[cacheLimit++]);
+ TimeValuePair fromTimeValuePair = top.timeValuePair;
+ TimeValuePair toTimeValuePair = timeValuePairCache[cacheLimit++];
+ try {
+ TimeValuePairUtils.setTimeValuePair(fromTimeValuePair,
toTimeValuePair);
+ } catch (UnsupportedOperationException e) {
+ logger.error("set data error,from: time = {}, dataType = {}",
+ fromTimeValuePair.getTimestamp(),
fromTimeValuePair.getValue().getDataType());
+ logger.error("set data error,from: to = {}, dataType = {}",
+ toTimeValuePair.getTimestamp(),
toTimeValuePair.getValue().getDataType());
+ }
lastTimestamp = top.currTime();
}
// remove duplicates
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/MergeUtils.java
b/server/src/main/java/org/apache/iotdb/db/utils/MergeUtils.java
index a5a0f0a..fa1b285 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/MergeUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/MergeUtils.java
@@ -192,6 +192,10 @@ public class MergeUtils {
QueryUtils.modifyChunkMetaData(metaDataList, pathModifications);
}
MetaListEntry entry = new MetaListEntry(i, metaDataList);
+ for (ChunkMetadata chunkMetadata : metaDataList) {
+ logger.info("buildMetaHeap add chunkMetadata,startTime:{} endTime:{}
dataType:{}",
+ chunkMetadata.getStartTime(), chunkMetadata.getEndTime(),
chunkMetadata.getDataType());
+ }
if (entry.hasNext()) {
entry.next();
chunkMetaHeap.add(entry);
diff --git a/server/src/main/java/org/apache/iotdb/db/utils/QueryUtils.java
b/server/src/main/java/org/apache/iotdb/db/utils/QueryUtils.java
index 7a3a6c5..f28e90a 100644
--- a/server/src/main/java/org/apache/iotdb/db/utils/QueryUtils.java
+++ b/server/src/main/java/org/apache/iotdb/db/utils/QueryUtils.java
@@ -27,9 +27,13 @@ import org.apache.iotdb.db.query.filter.TsFileFilter;
import org.apache.iotdb.tsfile.file.metadata.ChunkMetadata;
import java.util.List;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class QueryUtils {
+ private static final Logger logger =
LoggerFactory.getLogger(QueryUtils.class);
+
private QueryUtils() {
// util class
}
@@ -66,6 +70,8 @@ public class QueryUtils {
// remove chunks that are completely deleted
chunkMetaData.removeIf(metaData -> {
if (metaData.getDeletedAt() >= metaData.getEndTime()) {
+ logger.info("remove metaData because of modification, startTime:{}
endTime:{} dataType:{}",
+ metaData.getStartTime(), metaData.getEndTime(),
metaData.getDataType());
return true;
} else {
if (metaData.getDeletedAt() >= metaData.getStartTime()) {