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

jianyun pushed a commit to branch rocksdb/dev
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit a54d080049b66372f6a926152c0d39373e216b4c
Author: chengjianyun <[email protected]>
AuthorDate: Thu Mar 10 11:52:04 2022 +0800

    fix some bugs
---
 .../apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java | 15 ++++++++++++---
 .../iotdb/db/metadata/rocksdb/MetaDataTransfer.java       |  3 +++
 .../db/metadata/rocksdb/RocksDBReadWriteHandler.java      |  4 +++-
 3 files changed, 18 insertions(+), 4 deletions(-)

diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java
 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java
index 671fcbe..e2375c3 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MRocksDBManager.java
@@ -833,9 +833,18 @@ public class MRocksDBManager implements IMetaManager {
                     levelKey, RocksDBMNodeType.STORAGE_GROUP, 
DEFAULT_NODE_VALUE);
               }
             } else {
-              boolean hasChild = 
!keyCheckResult.getResult(RocksDBMNodeType.STORAGE_GROUP);
-              throw new StorageGroupAlreadySetException(
-                  RocksDBUtils.concatNodesName(nodes, 0, i), hasChild);
+              if (i >= len - 1) {
+                if (keyCheckResult.getExistType() == 
RocksDBMNodeType.STORAGE_GROUP) {
+                  throw new 
StorageGroupAlreadySetException(storageGroup.getFullPath());
+                } else {
+                  throw new 
PathAlreadyExistException(storageGroup.getFullPath());
+                }
+              } else {
+                if (keyCheckResult.getExistType() != 
RocksDBMNodeType.INTERNAL) {
+                  throw new StorageGroupAlreadySetException(
+                      RocksDBUtils.concatNodesName(nodes, 0, i), true);
+                }
+              }
             }
           } finally {
             lock.unlock();
diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MetaDataTransfer.java
 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MetaDataTransfer.java
index c3c8906..89e59d6 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MetaDataTransfer.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/MetaDataTransfer.java
@@ -320,6 +320,9 @@ public class MetaDataTransfer {
         .forEach(
             sgNode -> {
               try {
+                if (sgNode.getPartialPath().getFullPath() == "root.iotcloud") {
+                  return;
+                }
                 rocksDBManager.setStorageGroup(sgNode.getPartialPath());
                 if (sgNode.getDataTTL() > 0) {
                   rocksDBManager.setTTL(sgNode.getPartialPath(), 
sgNode.getDataTTL());
diff --git 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/RocksDBReadWriteHandler.java
 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/RocksDBReadWriteHandler.java
index 69d8e7e..cac86e6 100644
--- 
a/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/RocksDBReadWriteHandler.java
+++ 
b/server/src/main/java/org/apache/iotdb/db/metadata/rocksdb/RocksDBReadWriteHandler.java
@@ -268,12 +268,14 @@ public class RocksDBReadWriteHandler {
     if (!rocksDB.keyMayExist(key, holder)) {
       exist = false;
     } else {
-      if (holder.getValue() != null) {
+      if (holder.getValue() == null) {
         byte[] value = rocksDB.get(key);
         if (value != null) {
           exist = true;
           holder.setValue(value);
         }
+      } else {
+        exist = true;
       }
     }
     return exist;

Reply via email to