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

lhotari 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 4e7ee9448fc [fix][test] Fix flaky 
ExtensibleLoadManagerImplTest.testLoadBalancerServiceUnitTableViewSyncer 
(#25378)
4e7ee9448fc is described below

commit 4e7ee9448fc5ce84774646de118f49318b0e8ec5
Author: Matteo Merli <[email protected]>
AuthorDate: Fri Mar 20 17:02:13 2026 -0700

    [fix][test] Fix flaky 
ExtensibleLoadManagerImplTest.testLoadBalancerServiceUnitTableViewSyncer 
(#25378)
---
 .../extensions/ExtensibleLoadManagerImplTest.java    | 20 ++++++++++++++++----
 1 file changed, 16 insertions(+), 4 deletions(-)

diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImplTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImplTest.java
index c179db96227..82fed30cb35 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImplTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImplTest.java
@@ -1318,12 +1318,19 @@ public class ExtensibleLoadManagerImplTest extends 
ExtensibleLoadManagerImplBase
                 ? "SystemTopicToMetadataStoreSyncer" : 
"MetadataStoreToSystemTopicSyncer";
         pulsar.getAdminClient().brokers()
                 
.updateDynamicConfiguration("loadBalancerServiceUnitTableViewSyncer", 
syncerTyp);
+        // Wait for the dynamic config to propagate to both brokers before 
triggering
+        // leader transitions. Without this, the leader callback may see the 
old config
+        // and skip activating the syncer.
+        Awaitility.await().untilAsserted(() ->
+                
assertTrue(pulsar1.getConfiguration().isLoadBalancerServiceUnitTableViewSyncerEnabled()));
+        Awaitility.await().untilAsserted(() ->
+                
assertTrue(pulsar2.getConfiguration().isLoadBalancerServiceUnitTableViewSyncerEnabled()));
         makeSecondaryAsLeader();
         makePrimaryAsLeader();
-        Awaitility.waitAtMost(10, TimeUnit.SECONDS)
+        Awaitility.await()
                 .untilAsserted(() -> 
assertTrue(primaryLoadManager.getServiceUnitStateTableViewSyncer()
                         .isActive()));
-        Awaitility.waitAtMost(10, TimeUnit.SECONDS)
+        Awaitility.await()
                 .untilAsserted(() -> 
assertFalse(secondaryLoadManager.getServiceUnitStateTableViewSyncer()
                         .isActive()));
         ServiceConfiguration defaultConf = getDefaultConf();
@@ -1503,11 +1510,16 @@ public class ExtensibleLoadManagerImplTest extends 
ExtensibleLoadManagerImplBase
 
         pulsar.getAdminClient().brokers()
                 
.deleteDynamicConfiguration("loadBalancerServiceUnitTableViewSyncer");
+        // Wait for config deletion to propagate before leader transition
+        Awaitility.await().untilAsserted(() ->
+                
assertFalse(pulsar1.getConfiguration().isLoadBalancerServiceUnitTableViewSyncerEnabled()));
+        Awaitility.await().untilAsserted(() ->
+                
assertFalse(pulsar2.getConfiguration().isLoadBalancerServiceUnitTableViewSyncerEnabled()));
         makeSecondaryAsLeader();
-        Awaitility.waitAtMost(5, TimeUnit.SECONDS)
+        Awaitility.await()
                 .untilAsserted(() -> 
assertFalse(primaryLoadManager.getServiceUnitStateTableViewSyncer()
                         .isActive()));
-        Awaitility.waitAtMost(5, TimeUnit.SECONDS)
+        Awaitility.await()
                 .untilAsserted(() -> 
assertFalse(secondaryLoadManager.getServiceUnitStateTableViewSyncer()
                         .isActive()));
     }

Reply via email to