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

w41ter pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git


The following commit(s) were added to refs/heads/master by this push:
     new b53b8c9c115 [fix](restore) Reset next version for remote table when 
restore (#40118)
b53b8c9c115 is described below

commit b53b8c9c115485f3912914e347e2c8dd45dde632
Author: smallx <[email protected]>
AuthorDate: Fri Aug 30 10:24:42 2024 +0800

    [fix](restore) Reset next version for remote table when restore (#40118)
    
    We should reset next version to visible version + 1 for all partitions
    of remote table, when restoring table that do not exist locally.
    
    在高并发insert场景,CCR源端表的next version可能比visible
    version大比较多,目标集群restore全量快照后,切换到增量binlog后,commit事务时使用的version(来自next
    version)就可能比当前visible version大比较多。
    
    此时,对于MoW表,就会出现publish
    version不连续,增量binlog一直无法publish的问题。事务状态会一直是`COMMITTED`,并伴随类似ErrMsg `wait
    for publishing partition 15027 version 1037597. self version: 1037627.
    table 15025`。
---
 fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java | 3 +++
 fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java | 6 ++++++
 2 files changed, 9 insertions(+)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java 
b/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java
index b7880302442..12a30a97277 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/backup/RestoreJob.java
@@ -771,6 +771,9 @@ public class RestoreJob extends AbstractJob implements 
GsonPostProcessable {
                         return;
                     }
 
+                    // reset next version to visible version + 1 for all 
partitions
+                    remoteOlapTbl.resetVersionForRestore();
+
                     // Reset properties to correct values.
                     
remoteOlapTbl.resetPropertiesForRestore(reserveDynamicPartitionEnable, 
reserveReplica,
                                                             replicaAlloc, 
isBeingSynced);
diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
index c4414e17d39..78d97e8e48b 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java
@@ -653,6 +653,12 @@ public class OlapTable extends Table implements 
MTMVRelatedTableIf, GsonPostProc
         setColocateGroup(null);
     }
 
+    public void resetVersionForRestore() {
+        for (Partition partition : idToPartition.values()) {
+            partition.setNextVersion(partition.getVisibleVersion() + 1);
+        }
+    }
+
     public Status resetIdsForRestore(Env env, Database db, ReplicaAllocation 
restoreReplicaAlloc,
             boolean reserveReplica, String srcDbName) {
         // ATTN: The meta of the restore may come from different clusters, so 
the


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to