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

heesung pushed a commit to branch branch-3.2
in repository https://gitbox.apache.org/repos/asf/pulsar.git

commit 8ae5f04a8681a18b09d830076561b8b6989ec9fb
Author: Yunze Xu <[email protected]>
AuthorDate: Fri Jun 7 11:09:09 2024 +0800

    [fix][broker] Fix NPE after publishing a tombstone to the service unit 
channel (#22859)
    
    (cherry picked from commit 9326a08eb173b8a7410bcb00c4ab7d3602064b4a)
---
 .../pulsar/broker/loadbalance/extensions/manager/UnloadManager.java | 6 +++---
 .../broker/loadbalance/extensions/manager/UnloadManagerTest.java    | 6 +-----
 2 files changed, 4 insertions(+), 8 deletions(-)

diff --git 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/manager/UnloadManager.java
 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/manager/UnloadManager.java
index 742b23dc2d2..a905803c95d 100644
--- 
a/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/manager/UnloadManager.java
+++ 
b/pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/manager/UnloadManager.java
@@ -18,6 +18,7 @@
  */
 package org.apache.pulsar.broker.loadbalance.extensions.manager;
 
+import static com.google.common.base.Preconditions.checkArgument;
 import static 
org.apache.pulsar.broker.loadbalance.extensions.channel.ServiceUnitState.Assigning;
 import static 
org.apache.pulsar.broker.loadbalance.extensions.channel.ServiceUnitState.Owned;
 import static 
org.apache.pulsar.broker.loadbalance.extensions.models.UnloadDecision.Label.Failure;
@@ -119,9 +120,8 @@ public class UnloadManager implements StateChangeListener {
                 }
             }
             case Init -> {
-                if (data.force()) {
-                    complete(serviceUnit, t);
-                }
+                checkArgument(data == null, "Init state must be associated 
with null data");
+                complete(serviceUnit, t);
             }
             case Owned -> complete(serviceUnit, t);
             default -> {
diff --git 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/extensions/manager/UnloadManagerTest.java
 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/extensions/manager/UnloadManagerTest.java
index b7dae620629..06cfb0d9705 100644
--- 
a/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/extensions/manager/UnloadManagerTest.java
+++ 
b/pulsar-broker/src/test/java/org/apache/pulsar/broker/loadbalance/extensions/manager/UnloadManagerTest.java
@@ -127,11 +127,7 @@ public class UnloadManagerTest {
         assertEquals(inFlightUnloadRequestMap.size(), 1);
 
         // Success with Init state.
-        manager.handleEvent(bundle,
-                new ServiceUnitStateData(ServiceUnitState.Init, null, 
srcBroker, false, VERSION_ID_INIT), null);
-        assertEquals(inFlightUnloadRequestMap.size(), 1);
-        manager.handleEvent(bundle,
-                new ServiceUnitStateData(ServiceUnitState.Init, null, 
srcBroker, true, VERSION_ID_INIT), null);
+        manager.handleEvent(bundle, null, null);
         assertEquals(inFlightUnloadRequestMap.size(), 0);
         future.get();
         
assertEquals(counter.getBreakdownCounters().get(Success).get(Admin).get(), 1);

Reply via email to