This is an automated email from the ASF dual-hosted git repository.
tison 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 7bb35312fc0 [fix][broker] getOwnedServiceUnits NPE (#20625)
7bb35312fc0 is described below
commit 7bb35312fc0d146525bea40faace961d52293afe
Author: Kai Wang <[email protected]>
AuthorDate: Wed Jun 21 13:27:16 2023 +0800
[fix][broker] getOwnedServiceUnits NPE (#20625)
---
.../broker/loadbalance/extensions/ExtensibleLoadManagerImpl.java | 6 +++++-
.../loadbalance/extensions/ExtensibleLoadManagerImplTest.java | 8 ++++++++
2 files changed, 13 insertions(+), 1 deletion(-)
diff --git
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImpl.java
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImpl.java
index a9a6e6138bd..d0c55a65191 100644
---
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImpl.java
+++
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/ExtensibleLoadManagerImpl.java
@@ -169,7 +169,7 @@ public class ExtensibleLoadManagerImpl implements
ExtensibleLoadManager {
private SplitManager splitManager;
- private boolean started = false;
+ private volatile boolean started = false;
private final AssignCounter assignCounter = new AssignCounter();
@Getter
@@ -191,6 +191,10 @@ public class ExtensibleLoadManagerImpl implements
ExtensibleLoadManager {
* Get all the bundles that are owned by this broker.
*/
public Set<NamespaceBundle> getOwnedServiceUnits() {
+ if (!started) {
+ log.warn("Failed to get owned service units, load manager is not
started.");
+ return Collections.emptySet();
+ }
Set<Map.Entry<String, ServiceUnitStateData>> entrySet =
serviceUnitStateChannel.getOwnershipEntrySet();
String brokerId = brokerRegistry.getBrokerId();
return entrySet.stream()
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 c2c60831955..1f4e8709d9d 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
@@ -1115,6 +1115,14 @@ public class ExtensibleLoadManagerImplTest extends
MockedPulsarServiceBaseTest {
assertEquals(status.broker_assignment, BrokerAssignment.shared);
}
+ @Test(timeOut = 30 * 1000)
+ public void testGetOwnedServiceUnitsWhenLoadManagerNotStart() {
+ ExtensibleLoadManagerImpl loadManager = new
ExtensibleLoadManagerImpl();
+ Set<NamespaceBundle> ownedServiceUnits =
loadManager.getOwnedServiceUnits();
+ assertNotNull(ownedServiceUnits);
+ assertTrue(ownedServiceUnits.isEmpty());
+ }
+
@Test(timeOut = 30 * 1000)
public void testTryAcquiringOwnership()
throws PulsarAdminException, ExecutionException,
InterruptedException {