This is an automated email from the ASF dual-hosted git repository.

jackietien pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/iotdb.git


The following commit(s) were added to refs/heads/master by this push:
     new d5f1849  Improve dropping non-existent tag/attribute code (#2418)
d5f1849 is described below

commit d5f1849584437a6855863903245c40a4fe52ed15
Author: Al Wei <[email protected]>
AuthorDate: Thu Jan 7 20:50:05 2021 +0800

    Improve dropping non-existent tag/attribute code (#2418)
    
    Improve dropping non-existent tag/attribute code
---
 .../org/apache/iotdb/db/metadata/MManager.java     | 38 ++++++++++++++--------
 1 file changed, 24 insertions(+), 14 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 40f40a4..c1623ed 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
@@ -1356,32 +1356,42 @@ public class MManager {
     for (String key : keySet) {
       // check tag map
       // check attribute map
-      if (pair.left.containsKey(key)) {
-        deleteTag.put(key, pair.left.remove(key));
+      String removeVal = pair.left.remove(key);
+      if (removeVal != null) {
+        deleteTag.put(key, removeVal);
       } else {
-        pair.right.remove(key);
+        removeVal = pair.right.remove(key);
+        if (removeVal == null) {
+          logger.warn("TimeSeries [{}] does not have tag/attribute [{}]", 
fullPath, key);
+        }
       }
     }
 
     // persist the change to disk
     tagLogFile.write(pair.left, pair.right, leafMNode.getOffset());
 
+    Map<String, Set<MeasurementMNode>> tagVal2LeafMNodeSet;
+    Set<MeasurementMNode> MMNodes;
     for (Entry<String, String> entry : deleteTag.entrySet()) {
       String key = entry.getKey();
       String value = entry.getValue();
       // change the tag inverted index map
-      if (tagIndex.containsKey(key) && tagIndex.get(key).containsKey(value)) {
-        if (logger.isDebugEnabled()) {
-          logger.debug(String.format(
-                  String.format(DEBUG_MSG, "Drop" + TAG_FORMAT, 
leafMNode.getFullPath()),
-                  entry.getKey(), entry.getValue(), leafMNode.getOffset()));
-        }
+      tagVal2LeafMNodeSet = tagIndex.get(key);
+      if (tagVal2LeafMNodeSet != null) {
+        MMNodes = tagVal2LeafMNodeSet.get(value);
+        if (MMNodes != null) {
+          if (logger.isDebugEnabled()) {
+            logger.debug(String.format(
+                String.format(DEBUG_MSG, "Drop" + TAG_FORMAT, 
leafMNode.getFullPath()),
+                entry.getKey(), entry.getValue(), leafMNode.getOffset()));
+          }
 
-        tagIndex.get(key).get(value).remove(leafMNode);
-        if (tagIndex.get(key).get(value).isEmpty()) {
-          tagIndex.get(key).remove(value);
-          if (tagIndex.get(key).isEmpty()) {
-            tagIndex.remove(key);
+          MMNodes.remove(leafMNode);
+          if (MMNodes.isEmpty()) {
+            tagVal2LeafMNodeSet.remove(value);
+            if (tagVal2LeafMNodeSet.isEmpty()) {
+              tagIndex.remove(key);
+            }
           }
         }
       } else {

Reply via email to