apache/pulsar · error · IllegalArgumentException
Invalid Config: loadBalancerServiceUnitStateTombstoneDelayTi
Error message
Invalid Config: loadBalancerServiceUnitStateTombstoneDelayTimeInSeconds${tombstoneSecs} secs< loadBalancerInFlightServiceUnitStateWaitingTimeInMillis${inFlightMillis} millis What it means
Error "Invalid Config: loadBalancerServiceUnitStateTombstoneDelayTimeInSeconds${tombstoneSecs} secs< loadBalancerInFlightServiceUnitStateWaitingTimeInMillis${inFlightMillis} millis" thrown in apache/pulsar.
Source
Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/channel/ServiceUnitStateChannelImpl.java:210
Jittery,
Unstable
}
@VisibleForTesting
public ServiceUnitStateChannelImpl(PulsarService pulsar) {
this.pulsar = pulsar;
this.config = pulsar.getConfig();
this.brokerId = pulsar.getBrokerId();
this.schema = Schema.JSON(ServiceUnitStateData.class);
this.getOwnerRequests = new ConcurrentHashMap<>();
this.cleanupJobs = new ConcurrentHashMap<>();
this.stateChangeListeners = new StateChangeListeners();
this.stateTombstoneDelayTimeInMillis = config.getLoadBalancerServiceUnitStateTombstoneDelayTimeInSeconds()
* 1000;
this.inFlightStateWaitingTimeInMillis = config.getLoadBalancerInFlightServiceUnitStateWaitingTimeInMillis();
this.ownershipMonitorDelayTimeInSecs = config.getLoadBalancerServiceUnitStateMonitorIntervalInSeconds();
if (stateTombstoneDelayTimeInMillis < inFlightStateWaitingTimeInMillis) {
throw new IllegalArgumentException(
"Invalid Config: loadBalancerServiceUnitStateTombstoneDelayTimeInSeconds"
+ stateTombstoneDelayTimeInMillis / 1000 + " secs"
+ "< loadBalancerInFlightServiceUnitStateWaitingTimeInMillis"
+ inFlightStateWaitingTimeInMillis + " millis");
}
this.maxCleanupDelayTimeInSecs = MAX_CLEAN_UP_DELAY_TIME_IN_SECS;
this.minCleanupDelayTimeInSecs = MIN_CLEAN_UP_DELAY_TIME_IN_SECS;
Map<ServiceUnitState, Counters> tmpOwnerLookUpCounters = new HashMap<>();
Map<ServiceUnitState, Counters> tmpHandlerCounters = new HashMap<>();
Map<EventType, Counters> tmpEventCounters = new HashMap<>();
for (var state : ServiceUnitState.values()) {
tmpOwnerLookUpCounters.put(state, new Counters());
tmpHandlerCounters.put(state, new Counters());
}
for (var event : EventType.values()) {
tmpEventCounters.put(event, new Counters());
}View on GitHub (pinned to 820761864e)
Solutions
- Raise loadBalancerServiceUnitStateTombstoneDelayTimeInSeconds above the in-flight wait time
- Lower loadBalancerInFlightServiceUnitStateWaitingTimeInMillis below the tombstone delay
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/channel/ServiceUnitStateChannelImpl.java:210 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of apache/pulsar@820761864e (2026-09-06).
Data as JSON: /api/errors/e7e812aa76313509.
Report an issue: GitHub.