This is an automated email from the ASF dual-hosted git repository. qiaojialin pushed a commit to branch check_tag in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git
commit bc7f4223e34135455da8b587085ccf756dfc0ec5 Author: qiaojialin <[email protected]> AuthorDate: Tue Jun 9 09:36:38 2020 +0800 Add a judgement before removing entry from tag inverted index --- .../java/org/apache/iotdb/db/metadata/MManager.java | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java index b9c55a9..5995fc8 100644 --- a/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java +++ b/server/src/main/java/org/apache/iotdb/db/metadata/MManager.java @@ -433,11 +433,21 @@ public class MManager { tagLogFile.readTag(config.getTagAttributeTotalSize(), node.getOffset()); if (tagMap != null) { for (Entry<String, String> entry : tagMap.entrySet()) { - tagIndex.get(entry.getKey()).get(entry.getValue()).remove(node); - if (tagIndex.get(entry.getKey()).get(entry.getValue()).isEmpty()) { - tagIndex.get(entry.getKey()).remove(entry.getValue()); - if (tagIndex.get(entry.getKey()).isEmpty()) { - tagIndex.remove(entry.getKey()); + if (tagIndex.containsKey(entry.getKey()) && tagIndex.get(entry.getKey()) + .containsKey(entry.getValue())) { + tagIndex.get(entry.getKey()).get(entry.getValue()).remove(node); + if (tagIndex.get(entry.getKey()).get(entry.getValue()).isEmpty()) { + tagIndex.get(entry.getKey()).remove(entry.getValue()); + if (tagIndex.get(entry.getKey()).isEmpty()) { + tagIndex.remove(entry.getKey()); + } + } + } else { + if (logger.isWarnEnabled()) { + logger.warn(String.format( + "TimeSeries %s's tag info has been removed from tag inverted index before " + + "deleting it, tag key is %s, tag value is %s", + node.getFullPath(), entry.getKey(), entry.getValue())); } } }
