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 cef2ebb7774 Fixed the bug that tables with executing procedures can be 
fetched & Delete database cannot detect table procedures
cef2ebb7774 is described below

commit cef2ebb77749880febebdbb4126af5033cddc731
Author: Caideyipi <[email protected]>
AuthorDate: Tue Oct 29 08:22:13 2024 +0800

    Fixed the bug that tables with executing procedures can be fetched & Delete 
database cannot detect table procedures
---
 .../apache/iotdb/confignode/manager/ProcedureManager.java  | 14 ++++++++++----
 .../iotdb/db/schemaengine/table/DataNodeTableCache.java    |  4 +++-
 2 files changed, 13 insertions(+), 5 deletions(-)

diff --git 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
index 93eb0f55722..bbbe7214e18 100644
--- 
a/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
+++ 
b/iotdb-core/confignode/src/main/java/org/apache/iotdb/confignode/manager/ProcedureManager.java
@@ -138,6 +138,8 @@ import org.apache.tsfile.utils.ReadWriteIOUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import javax.annotation.Nonnull;
+
 import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.util.ArrayList;
@@ -239,7 +241,7 @@ public class ProcedureManager {
             && System.currentTimeMillis() - startCheckTimeForProcedures < 
PROCEDURE_WAIT_TIME_OUT) {
           final Pair<Long, Boolean> procedureIdDuplicatePair =
               checkDuplicateTableTask(
-                  database, null, null, null, 
ProcedureType.CREATE_TABLE_PROCEDURE);
+                  database, null, null, null, 
ProcedureType.DELETE_DATABASE_PROCEDURE);
           hasOverlappedTask = procedureIdDuplicatePair.getRight();
 
           if (Boolean.FALSE.equals(procedureIdDuplicatePair.getRight())) {
@@ -1587,7 +1589,7 @@ public class ProcedureManager {
   }
 
   public Pair<Long, Boolean> checkDuplicateTableTask(
-      final String database,
+      final @Nonnull String database,
       final TsTable table,
       final String tableName,
       final String queryId,
@@ -1606,8 +1608,10 @@ public class ProcedureManager {
           if (type == thisType && Objects.equals(table, 
createTableProcedure.getTable())) {
             return new Pair<>(procedure.getProcId(), false);
           }
+          // tableName == null indicates delete database procedure
           if (database.equals(createTableProcedure.getDatabase())
-              && Objects.equals(tableName, 
createTableProcedure.getTable().getTableName())) {
+              && (Objects.isNull(tableName)
+                  || Objects.equals(tableName, 
createTableProcedure.getTable().getTableName()))) {
             return new Pair<>(-1L, true);
           }
           break;
@@ -1621,8 +1625,10 @@ public class ProcedureManager {
           if (type == thisType && 
queryId.equals(alterTableProcedure.getQueryId())) {
             return new Pair<>(procedure.getProcId(), false);
           }
+          // tableName == null indicates delete database procedure
           if (database.equals(alterTableProcedure.getDatabase())
-              && Objects.equals(tableName, 
alterTableProcedure.getTableName())) {
+              && (Objects.isNull(tableName)
+                  || Objects.equals(tableName, 
alterTableProcedure.getTableName()))) {
             return new Pair<>(-1L, true);
           }
           break;
diff --git 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/DataNodeTableCache.java
 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/DataNodeTableCache.java
index 7c77c052bbc..24137f16d52 100644
--- 
a/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/DataNodeTableCache.java
+++ 
b/iotdb-core/datanode/src/main/java/org/apache/iotdb/db/schemaengine/table/DataNodeTableCache.java
@@ -268,7 +268,9 @@ public class DataNodeTableCache implements ITableCache {
               .fetchTables(
                   tableInput.entrySet().stream()
                       .collect(
-                          Collectors.toMap(Map.Entry::getKey, entry -> 
entry.getValue().keySet())));
+                          Collectors.toMap(
+                              entry -> 
PathUtils.qualifyDatabaseName(entry.getKey()),
+                              entry -> entry.getValue().keySet())));
       if (TSStatusCode.SUCCESS_STATUS.getStatusCode() == 
resp.getStatus().getCode()) {
         result = 
TsTableInternalRPCUtil.deserializeTsTableFetchResult(resp.getTableInfoMap());
       }

Reply via email to