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 {