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 <27994433+swjtu-zhang...@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-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org