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

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


The following commit(s) were added to refs/heads/master by this push:
     new 461ffd84d64 [fix][broker] Ensure LoadSheddingTask is scheduled after 
metadata service is available again (#24838)
461ffd84d64 is described below

commit 461ffd84d641b855fcc0d09d586ff4b580c21974
Author: Kai Wang <[email protected]>
AuthorDate: Tue Oct 14 15:23:55 2025 +0800

    [fix][broker] Ensure LoadSheddingTask is scheduled after metadata service 
is available again (#24838)
    
    Motivation
    After PR: #23040, if the metadata service is unavailable and then becomes 
available again, the LoadSheddingTask will not run again.
    
    Modifications
    Ensure LoadSheddingTask is scheduled after metadata service is available 
again by moving the isMetadataServiceAvailable check to the try block.
---
 .../org/apache/pulsar/broker/loadbalance/LoadSheddingTask.java    | 8 ++++----
 .../pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java      | 5 ++++-
 2 files changed, 8 insertions(+), 5 deletions(-)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/LoadSheddingTask.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/LoadSheddingTask.java
index 25a0a2752d1..4af86c1d71d 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/LoadSheddingTask.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/LoadSheddingTask.java
@@ -59,11 +59,11 @@ public class LoadSheddingTask implements Runnable {
         if (isCancel) {
             return;
         }
-        if (factory instanceof ManagedLedgerFactoryImpl
-                && !((ManagedLedgerFactoryImpl) 
factory).isMetadataServiceAvailable()) {
-            return;
-        }
         try {
+            if (factory instanceof ManagedLedgerFactoryImpl
+                    && !((ManagedLedgerFactoryImpl) 
factory).isMetadataServiceAvailable()) {
+                return;
+            }
             loadManager.get().doLoadShedding();
         } catch (Exception e) {
             LOG.warn("Error during the load shedding", e);
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java
index 2f79b972b36..3f10553902a 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/SimpleLoadManagerImplTest.java
@@ -22,6 +22,7 @@ import static 
org.apache.pulsar.broker.BrokerTestUtil.spyWithClassAndConstructor
 import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.testng.Assert.assertEquals;
@@ -521,12 +522,14 @@ public class SimpleLoadManagerImplTest {
         AtomicReference<LoadManager> atomicLoadManager = new 
AtomicReference<>(loadManager);
         ManagedLedgerFactoryImpl factory = 
mock(ManagedLedgerFactoryImpl.class);
         doReturn(false).when(factory).isMetadataServiceAvailable();
-        LoadSheddingTask task2 = new LoadSheddingTask(atomicLoadManager, null, 
null, factory);
+        LoadSheddingTask task2 = spy(new LoadSheddingTask(atomicLoadManager, 
null, null, factory));
         task2.run();
         verify(loadManager, times(0)).doLoadShedding();
+        verify(task2, times(1)).start();
         doReturn(true).when(factory).isMetadataServiceAvailable();
         task2.run();
         verify(loadManager, times(1)).doLoadShedding();
+        verify(task2, times(2)).start();
     }
 
     @Test

Reply via email to