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

jinrongtong pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/rocketmq.git


The following commit(s) were added to refs/heads/develop by this push:
     new fa54915437 [ISSUE #7261] Slave high CPU usage when 
enableScheduleAsyncDeliver=true (#7262)
fa54915437 is described below

commit fa549154370cb866a90e37c13a90d2c598d6b1f6
Author: yuz10 <845238...@qq.com>
AuthorDate: Tue Aug 29 15:22:09 2023 +0800

    [ISSUE #7261] Slave high CPU usage when enableScheduleAsyncDeliver=true 
(#7262)
    
    * [ISSUE #6390] Add break to the exception of WHEEL_TIMER_NOT_ENABLE.
    
    * fix broker start fail if mapped file size is 0
    
    * log
    
    * only delete the last empty file
    
    * change dataReadAheadEnable default to true
    
    * fix endless loop when master change to slave.
---
 .../apache/rocketmq/broker/schedule/ScheduleMessageService.java    | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git 
a/broker/src/main/java/org/apache/rocketmq/broker/schedule/ScheduleMessageService.java
 
b/broker/src/main/java/org/apache/rocketmq/broker/schedule/ScheduleMessageService.java
index aed0ee19fa..297b14207c 100644
--- 
a/broker/src/main/java/org/apache/rocketmq/broker/schedule/ScheduleMessageService.java
+++ 
b/broker/src/main/java/org/apache/rocketmq/broker/schedule/ScheduleMessageService.java
@@ -566,7 +566,8 @@ public class ScheduleMessageService extends ConfigManager {
                             pendingQueue.remove();
                             break;
                         case RUNNING:
-                            break;
+                            scheduleNextTask();
+                            return;
                         case EXCEPTION:
                             if (!isStarted()) {
                                 log.warn("HandlePutResultTask shutdown, 
info={}", putResultProcess.toString());
@@ -586,6 +587,10 @@ public class ScheduleMessageService extends ConfigManager {
                 }
             }
 
+            scheduleNextTask();
+        }
+
+        private void scheduleNextTask() {
             if (isStarted()) {
                 ScheduleMessageService.this.handleExecutorService
                     .schedule(new HandlePutResultTask(this.delayLevel), 
DELAY_FOR_A_SLEEP, TimeUnit.MILLISECONDS);

Reply via email to