This is an automated email from the ASF dual-hosted git repository.

dataroaring pushed a commit to branch branch-2.0
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/branch-2.0 by this push:
     new f3a8be6f3d7 [feature](binlog) Wrap rename table/column binlog in 
BarrierLog (#43033)
f3a8be6f3d7 is described below

commit f3a8be6f3d7e42a74714f646e975aa0938b48d34
Author: walter <w41te...@gmail.com>
AuthorDate: Fri Nov 1 16:18:49 2024 +0800

    [feature](binlog) Wrap rename table/column binlog in BarrierLog (#43033)
    
    This PR is part of #37031, #39782
---
 .../java/org/apache/doris/binlog/BinlogManager.java  | 20 ++++++++++++++++++++
 .../main/java/org/apache/doris/persist/EditLog.java  | 10 ++++++++--
 .../java/org/apache/doris/persist/TableInfo.java     | 18 ++++++++++++++++++
 .../apache/doris/persist/TableRenameColumnInfo.java  |  4 ++++
 gensrc/thrift/FrontendService.thrift                 |  2 ++
 5 files changed, 52 insertions(+), 2 deletions(-)

diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java 
b/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java
index 350a6c70917..47b0bb3c767 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/binlog/BinlogManager.java
@@ -32,6 +32,8 @@ import org.apache.doris.persist.DropPartitionInfo;
 import org.apache.doris.persist.ModifyTablePropertyOperationLog;
 import org.apache.doris.persist.ReplacePartitionOperationLog;
 import org.apache.doris.persist.TableAddOrDropColumnsInfo;
+import org.apache.doris.persist.TableInfo;
+import org.apache.doris.persist.TableRenameColumnInfo;
 import org.apache.doris.persist.TruncateTableInfo;
 import org.apache.doris.thrift.TBinlog;
 import org.apache.doris.thrift.TBinlogType;
@@ -355,6 +357,24 @@ public class BinlogManager {
         }
     }
 
+    public void addTableRename(TableInfo info, long commitSeq) {
+        long dbId = info.getDbId();
+        long tableId = info.getTableId();
+        TBinlogType type = TBinlogType.RENAME_TABLE;
+        String data = info.toJson();
+        BarrierLog log = new BarrierLog(dbId, tableId, type, data);
+        addBarrierLog(log, commitSeq);
+    }
+
+    public void addColumnRename(TableRenameColumnInfo info, long commitSeq) {
+        long dbId = info.getDbId();
+        long tableId = info.getTableId();
+        TBinlogType type = TBinlogType.RENAME_COLUMN;
+        String data = info.toJson();
+        BarrierLog log = new BarrierLog(dbId, tableId, type, data);
+        addBarrierLog(log, commitSeq);
+    }
+
     // get the dropped partitions of the db.
     public List<Long> getDroppedPartitions(long dbId) {
         lock.readLock().lock();
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 a1e033d6d1f..87b2b746d5e 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
@@ -296,6 +296,7 @@ public class EditLog {
                 case OperationType.OP_RENAME_TABLE: {
                     TableInfo info = (TableInfo) journal.getData();
                     env.replayRenameTable(info);
+                    env.getBinlogManager().addTableRename(info, logId);
                     break;
                 }
                 case OperationType.OP_MODIFY_VIEW_DEF: {
@@ -311,6 +312,7 @@ public class EditLog {
                 case OperationType.OP_RENAME_COLUMN: {
                     TableRenameColumnInfo info = (TableRenameColumnInfo) 
journal.getData();
                     env.replayRenameColumn(info);
+                    
Env.getCurrentEnv().getBinlogManager().addColumnRename(info, logId);
                     break;
                 }
                 case OperationType.OP_BACKUP_JOB: {
@@ -1435,7 +1437,9 @@ public class EditLog {
     }
 
     public void logTableRename(TableInfo tableInfo) {
-        logEdit(OperationType.OP_RENAME_TABLE, tableInfo);
+        long logId = logEdit(OperationType.OP_RENAME_TABLE, tableInfo);
+        LOG.info("log table rename, logId : {}, infos: {}", logId, tableInfo);
+        Env.getCurrentEnv().getBinlogManager().addTableRename(tableInfo, 
logId);
     }
 
     public void logModifyViewDef(AlterViewInfo alterViewInfo) {
@@ -1451,7 +1455,9 @@ public class EditLog {
     }
 
     public void logColumnRename(TableRenameColumnInfo info) {
-        logEdit(OperationType.OP_RENAME_COLUMN, info);
+        long logId = logEdit(OperationType.OP_RENAME_COLUMN, info);
+        LOG.info("log column rename, logId : {}, infos: {}", logId, info);
+        Env.getCurrentEnv().getBinlogManager().addColumnRename(info, logId);
     }
 
     public void logAddBroker(BrokerMgr.ModifyBrokerInfo info) {
diff --git a/fe/fe-core/src/main/java/org/apache/doris/persist/TableInfo.java 
b/fe/fe-core/src/main/java/org/apache/doris/persist/TableInfo.java
index 2d08a8a43fa..69360a0e08b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/persist/TableInfo.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/persist/TableInfo.java
@@ -19,6 +19,9 @@ package org.apache.doris.persist;
 
 import org.apache.doris.common.io.Text;
 import org.apache.doris.common.io.Writable;
+import org.apache.doris.persist.gson.GsonUtils;
+
+import com.google.gson.annotations.SerializedName;
 
 import java.io.DataInput;
 import java.io.DataOutput;
@@ -26,13 +29,20 @@ import java.io.IOException;
 
 public class TableInfo implements Writable {
 
+    @SerializedName("db")
     private long dbId;
+    @SerializedName("tb")
     private long tableId;
+    @SerializedName("ind")
     private long indexId;
+    @SerializedName("p")
     private long partitionId;
 
+    @SerializedName("nT")
     private String newTableName;
+    @SerializedName("nR")
     private String newRollupName;
+    @SerializedName("nP")
     private String newPartitionName;
 
     public TableInfo() {
@@ -124,4 +134,12 @@ public class TableInfo implements Writable {
         info.readFields(in);
         return info;
     }
+
+    public String toJson() {
+        return GsonUtils.GSON.toJson(this);
+    }
+
+    public static TableInfo fromJson(String json) {
+        return GsonUtils.GSON.fromJson(json, TableInfo.class);
+    }
 }
diff --git 
a/fe/fe-core/src/main/java/org/apache/doris/persist/TableRenameColumnInfo.java 
b/fe/fe-core/src/main/java/org/apache/doris/persist/TableRenameColumnInfo.java
index eafdb943e11..9434f7302c0 100644
--- 
a/fe/fe-core/src/main/java/org/apache/doris/persist/TableRenameColumnInfo.java
+++ 
b/fe/fe-core/src/main/java/org/apache/doris/persist/TableRenameColumnInfo.java
@@ -72,6 +72,10 @@ public class TableRenameColumnInfo implements Writable {
         return indexIdToSchemaVersion;
     }
 
+    public String toJson() {
+        return GsonUtils.GSON.toJson(this);
+    }
+
     @Override
     public void write(DataOutput out) throws IOException {
         Text.writeString(out, GsonUtils.GSON.toJson(this));
diff --git a/gensrc/thrift/FrontendService.thrift 
b/gensrc/thrift/FrontendService.thrift
index a3c25c17616..0140eeff5e1 100644
--- a/gensrc/thrift/FrontendService.thrift
+++ b/gensrc/thrift/FrontendService.thrift
@@ -1027,6 +1027,8 @@ enum TBinlogType {
   MODIFY_PARTITIONS = 11,
   REPLACE_PARTITIONS = 12,
   TRUNCATE_TABLE = 13,
+  RENAME_TABLE = 14,
+  RENAME_COLUMN = 15,
 }
 
 struct TBinlog {


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org
For additional commands, e-mail: commits-h...@doris.apache.org

Reply via email to