You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2024/01/18 02:04:58 UTC
(doris) 06/22: [fix](fe) Fix drop table write too many times editlog (#29966)
This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch branch-2.1
in repository https://gitbox.apache.org/repos/asf/doris.git
commit e73c0f40779c720a799617c49b0ba5caee9eece9
Author: Lei Zhang <27...@users.noreply.github.com>
AuthorDate: Wed Jan 17 16:40:17 2024 +0800
[fix](fe) Fix drop table write too many times editlog (#29966)
---
.../java/org/apache/doris/datasource/InternalCatalog.java | 9 +++++++--
.../src/main/java/org/apache/doris/persist/EditLog.java | 4 +++-
.../java/org/apache/doris/statistics/AnalysisManager.java | 14 ++------------
3 files changed, 12 insertions(+), 15 deletions(-)
diff --git a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
index b5e68de5b2e..3212d18c1d3 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/datasource/InternalCatalog.java
@@ -903,11 +903,15 @@ public class InternalCatalog implements CatalogIf<Database> {
} finally {
table.writeUnlock();
}
- DropInfo info = new DropInfo(db.getId(), table.getId(), tableName, -1L, stmt.isForceDrop(), recycleTime);
- Env.getCurrentEnv().getEditLog().logDropTable(info);
+
Env.getCurrentEnv().getQueryStats().clear(Env.getCurrentEnv().getCurrentCatalog().getId(),
db.getId(), table.getId());
+
Env.getCurrentEnv().getAnalysisManager().removeTableStats(table.getId());
+
+ DropInfo info = new DropInfo(db.getId(), table.getId(), tableName, -1L, stmt.isForceDrop(), recycleTime);
+ Env.getCurrentEnv().getEditLog().logDropTable(info);
+
Env.getCurrentEnv().getMtmvService().dropTable(table);
} catch (UserException e) {
throw new DdlException(e.getMessage(), e.getMysqlErrorCode());
@@ -944,6 +948,7 @@ public class InternalCatalog implements CatalogIf<Database> {
unprotectDropTable(db, table, isForceDrop, true, recycleTime);
Env.getCurrentEnv().getQueryStats().clear(Env.getCurrentInternalCatalog().getId(), db.getId(),
tableId);
+ Env.getCurrentEnv().getAnalysisManager().removeTableStats(table.getId());
} finally {
table.writeUnlock();
db.writeUnlock();
diff --git a/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java b/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java
index fb97c02b00c..5b2ff25f54e 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/persist/EditLog.java
@@ -1135,7 +1135,9 @@ public class EditLog {
break;
}
case OperationType.OP_DELETE_TABLE_STATS: {
- env.getAnalysisManager().replayTableStatsDeletion((TableStatsDeletionLog) journal.getData());
+ long tableId = ((TableStatsDeletionLog) journal.getData()).id;
+ LOG.info("replay delete table stat tableId: {}", tableId);
+ Env.getCurrentEnv().getAnalysisManager().removeTableStats(tableId);
break;
}
case OperationType.OP_ALTER_MTMV: {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
index f56e800e83d..00e858c1536 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/statistics/AnalysisManager.java
@@ -46,7 +46,6 @@ import org.apache.doris.common.util.Util;
import org.apache.doris.datasource.CatalogIf;
import org.apache.doris.mysql.privilege.PrivPredicate;
import org.apache.doris.persist.AnalyzeDeletionLog;
-import org.apache.doris.persist.TableStatsDeletionLog;
import org.apache.doris.persist.gson.GsonUtils;
import org.apache.doris.qe.ConnectContext;
import org.apache.doris.qe.ShowResultSet;
@@ -1015,17 +1014,8 @@ public class AnalysisManager implements Writable {
}
}
- public void removeTableStats(long tblId) {
- if (!idToTblStats.containsKey(tblId)) {
- return;
- }
- TableStatsDeletionLog log = new TableStatsDeletionLog(tblId);
- Env.getCurrentEnv().getEditLog().logDeleteTableStats(log);
- replayTableStatsDeletion(log);
- }
-
- public void replayTableStatsDeletion(TableStatsDeletionLog log) {
- idToTblStats.remove(log.id);
+ public void removeTableStats(long tableId) {
+ idToTblStats.remove(tableId);
}
public ColStatsMeta findColStatsMeta(long tblId, String colName) {
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org