You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by he...@apache.org on 2024/06/26 23:33:35 UTC
(pulsar) 03/09: [fix][broker] Fix NPE after publishing a tombstone to the service unit channel (#22859)
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 <xy...@163.com>
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);