diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java
index 74b8608760c86b..62d2e0bd6d6e56 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Database.java
@@ -274,24 +274,23 @@ public void setDbProperties(DatabaseProperty dbProperties) {
public long getUsedDataQuotaWithLock() {
long usedDataQuota = 0;
readLock();
- try {
- for (Table table : this.idToTable.values()) {
- if (table.getType() != TableType.OLAP) {
- continue;
- }
+ List
tables = new ArrayList<>(this.idToTable.values());
+ readUnlock();
- OlapTable olapTable = (OlapTable) table;
- olapTable.readLock();
- try {
- usedDataQuota = usedDataQuota + olapTable.getDataSize();
- } finally {
- olapTable.readUnlock();
- }
+ for (Table table : tables) {
+ if (table.getType() != TableType.OLAP) {
+ continue;
+ }
+
+ OlapTable olapTable = (OlapTable) table;
+ olapTable.readLock();
+ try {
+ usedDataQuota = usedDataQuota + olapTable.getDataSize();
+ } finally {
+ olapTable.readUnlock();
}
- return usedDataQuota;
- } finally {
- readUnlock();
}
+ return usedDataQuota;
}
public long getReplicaCountWithLock() {