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 8f383de0d9261e..d182e1d08d4d21 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; @@ -142,11 +143,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 6b338d7f827f43..974404a4e1160e 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.Replica; import org.apache.doris.catalog.Table; @@ -521,16 +523,24 @@ private void checkCommitStatus(List