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

  1. Set supportedNamespaceBundleSplitAlgorithms only to names listed in the error message (e.g. topic_count_evenness_split,specified_positions_split)
  2. Remove unknown/custom algorithm names from broker.conf
  3. 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

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


AI-assisted analysis of apache/pulsar@820761864e (2026-09-06). Data as JSON: /api/errors/f82e88a6bf471614. Report an issue: GitHub.