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()));
}