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

Reply via email to