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


The following commit(s) were added to refs/heads/branch-2.1 by this push:
     new ee09f55ca24 branch-2.1: [fix](mtmv)Fix issue that refreshState turns 
to init when replaying alterStatus editLog  #51439 (#51544)
ee09f55ca24 is described below

commit ee09f55ca2405a41fd5fb2afc9896d2efef703cb
Author: github-actions[bot] 
<41898282+github-actions[bot]@users.noreply.github.com>
AuthorDate: Mon Jun 16 17:30:14 2025 +0800

    branch-2.1: [fix](mtmv)Fix issue that refreshState turns to init when 
replaying alterStatus editLog  #51439 (#51544)
    
    Cherry-picked from #51439
    
    Co-authored-by: zhangdong <zhangd...@selectdb.com>
---
 .../main/java/org/apache/doris/catalog/MTMV.java   |  3 ++-
 .../java/org/apache/doris/mtmv/MTMVStatus.java     | 20 ++++++++----------
 .../test/java/org/apache/doris/mtmv/MTMVTest.java  | 24 ++++++++++++++++++++++
 3 files changed, 34 insertions(+), 13 deletions(-)

diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/MTMV.java 
b/fe/fe-core/src/main/java/org/apache/doris/catalog/MTMV.java
index 3be722f18c9..ea4e94d5c97 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/catalog/MTMV.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/MTMV.java
@@ -182,7 +182,8 @@ public class MTMV extends OlapTable {
     public MTMVStatus alterStatus(MTMVStatus newStatus) {
         writeMvLock();
         try {
-            return this.status.updateNotNull(newStatus);
+            // only can update state, refresh state will be change by add task
+            return this.status.updateStateAndDetail(newStatus);
         } finally {
             writeMvUnlock();
         }
diff --git a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVStatus.java 
b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVStatus.java
index ea05dbc8673..b1761b9e973 100644
--- a/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVStatus.java
+++ b/fe/fe-core/src/main/java/org/apache/doris/mtmv/MTMVStatus.java
@@ -70,18 +70,14 @@ public class MTMVStatus {
         this.refreshState = refreshState;
     }
 
-    public MTMVStatus updateNotNull(MTMVStatus status) {
-        Objects.requireNonNull(status);
-        if (status.getState() != null) {
-            this.state = status.getState();
-            if (this.state == MTMVState.SCHEMA_CHANGE) {
-                this.schemaChangeDetail = status.getSchemaChangeDetail();
-            } else {
-                this.schemaChangeDetail = null;
-            }
-        }
-        if (status.getRefreshState() != null) {
-            this.refreshState = status.getRefreshState();
+    public MTMVStatus updateStateAndDetail(MTMVStatus status) {
+        Objects.requireNonNull(status, "status can not be null");
+        Objects.requireNonNull(status.getState(), "status.state can not be 
null");
+        this.state = status.getState();
+        if (this.state == MTMVState.SCHEMA_CHANGE) {
+            this.schemaChangeDetail = status.getSchemaChangeDetail();
+        } else {
+            this.schemaChangeDetail = null;
         }
         return this;
     }
diff --git a/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVTest.java 
b/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVTest.java
index cfe2ac9cb6f..b8c438348ac 100644
--- a/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVTest.java
+++ b/fe/fe-core/src/test/java/org/apache/doris/mtmv/MTMVTest.java
@@ -32,6 +32,8 @@ import org.apache.doris.common.util.PropertyAnalyzer;
 import org.apache.doris.job.common.IntervalUnit;
 import org.apache.doris.job.extensions.mtmv.MTMVTask;
 import org.apache.doris.mtmv.MTMVRefreshEnum.BuildMode;
+import org.apache.doris.mtmv.MTMVRefreshEnum.MTMVRefreshState;
+import org.apache.doris.mtmv.MTMVRefreshEnum.MTMVState;
 import org.apache.doris.mtmv.MTMVRefreshEnum.RefreshMethod;
 import org.apache.doris.mtmv.MTMVRefreshEnum.RefreshTrigger;
 
@@ -173,4 +175,26 @@ public class MTMVTest {
         Assert.assertTrue(excludedTriggerTables.contains(new TableName(null, 
"db2", "t2")));
         Assert.assertTrue(excludedTriggerTables.contains(new TableName(null, 
null, "t3")));
     }
+
+    @Test
+    public void testAlterStatus() {
+        MTMV mtmv = new MTMV();
+        MTMVStatus status = new MTMVStatus();
+        mtmv.setStatus(status);
+        // test init
+        Assert.assertEquals(MTMVState.INIT, status.getState());
+        Assert.assertEquals(MTMVRefreshState.INIT, status.getRefreshState());
+        // test schema change
+        status.setRefreshState(MTMVRefreshState.SUCCESS);
+        mtmv.alterStatus(new MTMVStatus(MTMVState.SCHEMA_CHANGE, "base 
table"));
+        Assert.assertEquals(MTMVState.SCHEMA_CHANGE, status.getState());
+        Assert.assertEquals(MTMVRefreshState.SUCCESS, 
status.getRefreshState());
+
+        MTMVStatus alterStatus = new MTMVStatus();
+        alterStatus.setState(MTMVState.SCHEMA_CHANGE);
+        alterStatus.setSchemaChangeDetail("base table");
+        mtmv.alterStatus(new MTMVStatus(MTMVState.SCHEMA_CHANGE, "base 
table"));
+        Assert.assertEquals(MTMVState.SCHEMA_CHANGE, status.getState());
+        Assert.assertEquals(MTMVRefreshState.SUCCESS, 
status.getRefreshState());
+    }
 }


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

Reply via email to