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 c9e84b8f9918dae8a3192549731333ba9d3e22cd
Author: lisijia <[email protected]>
AuthorDate: Fri Mar 11 16:19:00 2022 +0800

    fix the bug of deleting storage groups
---
 .../iotdb/db/metadata/rocksdb/MRocksDBManager.java | 28 ++++++++++++----------
 1 file changed, 15 insertions(+), 13 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 8139977..c0dd427 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
@@ -882,24 +882,26 @@ public class MRocksDBManager implements IMetaManager {
                 // wait for all executing createTimeseries operations are 
complete
                 Thread.sleep(MAX_LOCK_WAIT_TIME * MAX_PATH_DEPTH);
                 String[] nodes = path.getNodes();
-                Arrays.asList(ALL_NODE_TYPE_ARRAY).stream()
+                Arrays.stream(ALL_NODE_TYPE_ARRAY)
                     .parallel()
                     .forEach(
                         type -> {
                           try {
-                            String startPath =
-                                RocksDBUtils.getLevelPathPrefix(
-                                    nodes, nodes.length - 1, nodes.length);
-                            byte[] startKey = 
RocksDBUtils.toRocksDBKey(startPath, type);
-                            String endPath =
-                                RocksDBUtils.getLevelPathPrefix(
-                                    nodes, nodes.length - 1, MAX_PATH_DEPTH);
-                            byte[] endKey = RocksDBUtils.toRocksDBKey(endPath, 
type);
-                            if (type == NODE_TYPE_MEASUREMENT) {
-                              readWriteHandler.deleteNodeByPrefix(
-                                  
readWriteHandler.getCFHByName(TABLE_NAME_TAGS), startKey, endKey);
+                            for (int i = nodes.length; i <= MAX_PATH_DEPTH; 
i++) {
+                              String startPath =
+                                  RocksDBUtils.getLevelPathPrefix(nodes, 
nodes.length - 1, i);
+                              byte[] startKey = 
RocksDBUtils.toRocksDBKey(startPath, type);
+                              byte[] endKey = new byte[startKey.length];
+                              System.arraycopy(startKey, 0, endKey, 0, 
startKey.length - 1);
+                              endKey[endKey.length - 1] = 127;
+                              if (type == NODE_TYPE_MEASUREMENT) {
+                                readWriteHandler.deleteNodeByPrefix(
+                                    
readWriteHandler.getCFHByName(TABLE_NAME_TAGS),
+                                    startKey,
+                                    endKey);
+                              }
+                              readWriteHandler.deleteNodeByPrefix(startKey, 
endKey);
                             }
-                            readWriteHandler.deleteNodeByPrefix(startKey, 
endKey);
                           } catch (RocksDBException e) {
                             logger.error("delete storage error {}", 
path.getFullPath(), e);
                           }

Reply via email to