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() {