You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@rocketmq.apache.org by ji...@apache.org on 2022/06/10 05:59:52 UTC

[rocketmq] branch 5.0.0-beta-dledger-controller updated: [Summer of code] Let controller become role state after append initial logs (#4442)

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

jinrongtong pushed a commit to branch 5.0.0-beta-dledger-controller
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/5.0.0-beta-dledger-controller by this push:
     new 6645d0a42 [Summer of code] Let controller become role state after append initial logs (#4442)
6645d0a42 is described below

commit 6645d0a42b743fc003ed54658cd24e99c375ac8b
Author: hzh0425 <64...@qq.com>
AuthorDate: Fri Jun 10 13:59:37 2022 +0800

    [Summer of code] Let controller become role state after append initial logs (#4442)
    
    * fix bug
    
    * fix bug
---
 .../java/org/apache/rocketmq/controller/impl/DLedgerController.java     | 2 +-
 .../apache/rocketmq/controller/impl/DLedgerControllerStateMachine.java  | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerController.java b/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerController.java
index c8c213714..e99036817 100644
--- a/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerController.java
+++ b/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerController.java
@@ -403,7 +403,6 @@ public class DLedgerController implements Controller {
                         DLedgerController.this.stopScheduling();
                         break;
                     case LEADER: {
-                        this.currentRole = MemberState.Role.LEADER;
                         log.info("Controller {} change role to leader, try process a initial proposal", this.selfId);
                         // Because the role becomes to leader, but the memory statemachine of the controller is still in the old point,
                         // some committed logs have not been applied. Therefore, we must first process an empty request to dledger,
@@ -414,6 +413,7 @@ public class DLedgerController implements Controller {
                             request.setBody(new byte[0]);
                             try {
                                 if (appendToDledgerAndWait(request)) {
+                                    this.currentRole = MemberState.Role.LEADER;
                                     DLedgerController.this.startScheduling();
                                     break;
                                 }
diff --git a/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerControllerStateMachine.java b/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerControllerStateMachine.java
index 4cfe3c5bd..7679adc36 100644
--- a/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerControllerStateMachine.java
+++ b/controller/src/main/java/org/apache/rocketmq/controller/impl/DLedgerControllerStateMachine.java
@@ -54,8 +54,8 @@ public class DLedgerControllerStateMachine implements StateMachine {
             if (body != null && body.length > 0) {
                 final EventMessage event = this.eventSerializer.deserialize(body);
                 this.replicasInfoManager.applyEvent(event);
-                applyingSize++;
             }
+            applyingSize++;
         }
         log.info("Apply {} events on controller {}", applyingSize, this.dledgerId);
     }