diff --git a/fe/fe-core/src/main/java/org/apache/doris/load/BrokerFileGroup.java b/fe/fe-core/src/main/java/org/apache/doris/load/BrokerFileGroup.java index 6e5ca07106b48e..ff27acadcac2f4 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/load/BrokerFileGroup.java +++ b/fe/fe-core/src/main/java/org/apache/doris/load/BrokerFileGroup.java @@ -29,6 +29,7 @@ import org.apache.doris.catalog.OlapTable; import org.apache.doris.catalog.OlapTable.OlapTableState; import org.apache.doris.catalog.Partition; +import org.apache.doris.catalog.Partition.PartitionState; import org.apache.doris.catalog.Table; import org.apache.doris.common.DdlException; import org.apache.doris.common.Pair; @@ -139,11 +140,20 @@ public void parse(Database db, DataDescription dataDescription) throws DdlExcept throw new DdlException("Unknown partition '" + pName + "' in table '" + olapTable.getName() + "'"); } + // partition which need load data + if (partition.getState() == PartitionState.RESTORE) { + throw new DdlException("Table [" + olapTable.getName() + + "], Partition[" + partition.getName() + "] is under restore"); + } partitionIds.add(partition.getId()); } } - if (olapTable.getState() == OlapTableState.RESTORE) { + boolean isPartitionRestoring = olapTable.getPartitions().stream().anyMatch( + partition -> partition.getState() == PartitionState.RESTORE + ); + // restore table + if (!isPartitionRestoring && olapTable.getState() == OlapTableState.RESTORE) { throw new DdlException("Table [" + olapTable.getName() + "] is under restore"); } diff --git a/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java b/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java index 0b5e7a18d043e2..636fe582ed11a9 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java +++ b/fe/fe-core/src/main/java/org/apache/doris/transaction/DatabaseTransactionMgr.java @@ -23,7 +23,9 @@ import org.apache.doris.catalog.Env; import org.apache.doris.catalog.MaterializedIndex; import org.apache.doris.catalog.OlapTable; +import org.apache.doris.catalog.OlapTable.OlapTableState; import org.apache.doris.catalog.Partition; +import org.apache.doris.catalog.Partition.PartitionState; import org.apache.doris.catalog.PartitionInfo; import org.apache.doris.catalog.PartitionType; import org.apache.doris.catalog.Replica; @@ -516,16 +518,24 @@ private void checkCommitStatus(List