From 9220fe75b4f9efc4fd0f2233712d458864ca0930 Mon Sep 17 00:00:00 2001 From: JackieTien97 Date: Mon, 8 Jun 2020 20:52:09 +0800 Subject: [PATCH 1/2] add a judgement before remove entry from tag inverted index --- .../apache/iotdb/db/metadata/MManager.java | 24 ++++++++++++------- 1 file changed, 16 insertions(+), 8 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 19e3a0aae055..1e4de8006fc4 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 @@ -453,12 +453,19 @@ private void removeFromTagInvertedIndex(LeafMNode node) throws IOException { tagLogFile.readTag(config.getTagAttributeTotalSize(), node.getOffset()); if (tagMap != null) { for (Entry 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 { + 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())); } } } @@ -972,7 +979,7 @@ public StorageGroupMNode getStorageGroupNode(String path) throws MetadataExcepti /** * get device node, if the storage group is not set, create it when autoCreateSchema is true - * + *

* (we develop this method as we need to get the node's lock after we get the lock.writeLock()) * *

!!!!!!Attention!!!!! must call the return node's readUnlock() if you call this method. @@ -1573,8 +1580,9 @@ public Map determineStorageGroup(String path) throws IllegalPath } /** - * if the path is in local mtree, nothing needed to do (because mtree is in the memory); - * Otherwise cache the path to mRemoteSchemaCache + * if the path is in local mtree, nothing needed to do (because mtree is in the memory); Otherwise + * cache the path to mRemoteSchemaCache + * * @param path * @param schema */ From 205d6a7e9dbe236d00d9c7d9c54dc0176b075480 Mon Sep 17 00:00:00 2001 From: qiaojialin <646274302@qq.com> Date: Tue, 9 Jun 2020 09:19:52 +0800 Subject: [PATCH 2/2] add isWarnEnabled --- .../main/java/org/apache/iotdb/db/metadata/MManager.java | 9 ++++++--- 1 file changed, 6 insertions(+), 3 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 1e4de8006fc4..7a857a618b3d 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 @@ -463,9 +463,12 @@ private void removeFromTagInvertedIndex(LeafMNode node) throws IOException { } } } else { - 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())); + 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())); + } } } }