apache/pulsar · error · BrokerServiceException.ServiceUnitNotReadyException

Namespace bundles do not contain the child bundle:${childBun

Error message

Namespace bundles do not contain the child bundle:${childBundle}

What it means

During bundle-split handling in the service-unit channel, neither the parent bundle nor any candidate child bundle was found in the namespace's current bundle list — the split state references bundles that no longer exist.

Source

Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/channel/ServiceUnitStateChannelImpl.java:1258

        return bundleFactory.getBundlesAsync(parentBundle.getNamespaceObject())
                .thenCompose(targetNsBundle -> {
                    boolean found = false;
                    try {
                        targetNsBundle.validateBundle(parentBundle);
                    } catch (IllegalArgumentException e) {
                        if (debug) {
                            log.info().attr("bundle", parentBundle)
                                    .log("Namespace bundles do not contain the parent bundle");
                        }
                        for (var childBundle : childBundles) {
                            try {
                                targetNsBundle.validateBundle(childBundle);
                                if (debug) {
                                    log.info().attr("bundle", childBundle)
                                            .log("Namespace bundles contain the child bundle");
                                }
                            } catch (Exception ex) {
                                throw FutureUtil.wrapToCompletionException(
                                        new BrokerServiceException.ServiceUnitNotReadyException(
                                                "Namespace bundles do not contain the child bundle:" + childBundle, e));
                            }
                        }
                        found = true;
                    } catch (Exception e) {
                        throw FutureUtil.wrapToCompletionException(
                                new BrokerServiceException.ServiceUnitNotReadyException(
                                        "Failed to validate the parent bundle in the namespace bundles.", e));
                    }
                    if (found) {
                        return CompletableFuture.completedFuture(targetNsBundle);
                    } else {
                        return namespaceService.getSplitBoundary(parentBundle, algorithm, boundaries)
                                .thenApply(splitBundlesPair -> splitBundlesPair.getLeft());
                    }
                });
    }

View on GitHub (pinned to 820761864e)

Solutions

  1. Wait for bundle-split metadata to converge and re-check
  2. Trigger a namespace bundle refresh or investigate stale split state in the system topic
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/loadbalance/extensions/channel/ServiceUnitStateChannelImpl.java:1258 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/3f5e5a788c8c5c44. Report an issue: GitHub.