apache/pulsar · error · IllegalArgumentException
The given supported namespace bundle split algorithm has una
Error message
The given supported namespace bundle split algorithm has unavailable algorithm. Available algorithms are ${availableAlgorithms} What it means
The broker validates brokerConfig.getSupportedNamespaceBundleSplitAlgorithms() against the static set NamespaceBundleSplitAlgorithm.AVAILABLE_ALGORITHMS. If any configured algorithm is unknown, startup fails with this IllegalArgumentException listing the available algorithms.
Source
Thrown at pulsar-broker/src/main/java/org/apache/pulsar/PulsarBrokerStarter.java:184
// init broker config
if (isBlank(starterArguments.brokerConfigFile)) {
commander.usage(commander.getOut());
throw new IllegalArgumentException("Need to specify a configuration file for broker");
} else {
final String filepath = Path.of(starterArguments.brokerConfigFile)
.toAbsolutePath().normalize().toString();
brokerConfig = loadConfig(filepath);
}
int maxFrameSize = brokerConfig.getMaxMessageSize() + Commands.MESSAGE_SIZE_FRAME_PADDING;
if (maxFrameSize >= DirectMemoryUtils.jvmMaxDirectMemory()) {
throw new IllegalArgumentException("Max message size need smaller than jvm directMemory");
}
if (!NamespaceBundleSplitAlgorithm.AVAILABLE_ALGORITHMS.containsAll(
brokerConfig.getSupportedNamespaceBundleSplitAlgorithms())) {
throw new IllegalArgumentException(
"The given supported namespace bundle split algorithm has unavailable algorithm. "
+ "Available algorithms are " + NamespaceBundleSplitAlgorithm.AVAILABLE_ALGORITHMS);
}
if (!brokerConfig.getSupportedNamespaceBundleSplitAlgorithms().contains(
brokerConfig.getDefaultNamespaceBundleSplitAlgorithm())) {
throw new IllegalArgumentException("Supported namespace bundle split algorithms "
+ "must contains the default namespace bundle split algorithm");
}
// init functions worker
if (starterArguments.runFunctionsWorker || brokerConfig.isFunctionsWorkerEnabled()) {
final String filepath = Path.of(starterArguments.fnWorkerConfigFile)
.toAbsolutePath().normalize().toString();
workerConfig = PulsarService.initializeWorkerConfigFromBrokerConfig(brokerConfig, filepath);
functionsWorkerService = WorkerServiceLoader.load(workerConfig);
} else {
workerConfig = null;View on GitHub (pinned to 820761864e)
Solutions
- Set supportedNamespaceBundleSplitAlgorithms only to names listed in the error message (e.g. topic_count_evenness_split,specified_positions_split)
- Remove unknown/custom algorithm names from broker.conf
- Verify against NamespaceBundleSplitAlgorithm.AVAILABLE_ALGORITHMS for your broker version
Example fix
// before (broker.conf) supportedNamespaceBundleSplitAlgorithms=even_split,range_split // after supportedNamespaceBundleSplitAlgorithms=topic_count_evenness_split,specified_positions_split
Defensive patterns
Strategy: validation
Validate before calling
Set<String> allowed = NamespaceBundleSplitAlgorithm.AVAILABLE_ALGORITHMS;
List<String> configured = List.of(brokerConf.getSupportedNamespaceBundleSplitAlgorithms().split(","));
if (!allowed.containsAll(configured)) {
throw new IllegalStateException("Unknown algorithms: " + configured.stream()
.filter(a -> !allowed.contains(a)).toList());
} Try / catch
try {
int rc = starter.call();
} catch (IllegalArgumentException e) {
if (e.getMessage().contains("bundle split algorithm")) {
throw new IllegalStateException("Use only: " + NamespaceBundleSplitAlgorithm.AVAILABLE_ALGORITHMS, e);
}
throw e;
} Prevention
- Copy algorithm names exactly from the error message/docs (topic_count_evenness_split, specified_positions_split)
- Don't carry custom algorithm names from forks into stock broker.conf
When it happens
Trigger: supportedNamespaceBundleSplitAlgorithms in broker.conf contains a name not in AVAILABLE_ALGORITHMS (built-ins: topic_count_evenness_split, specified_positions_split).
Common situations: Typo in the algorithm name; copying config from a fork/patched build with a custom algorithm; upgrading to a version where an algorithm was renamed/removed.
Related errors
- Supported namespace bundle split algorithms must contains th
- Timeout during delete operation
- Timeout during close operation
- Timeout during open-cursor operation
- Timeout during delete-cursors operation
AI-assisted analysis of apache/pulsar@820761864e (2026-09-06).
Data as JSON: /api/errors/f82e88a6bf471614.
Report an issue: GitHub.