apache/pulsar · error · BrokerServiceException.ServiceUnitNotReadyException

Failed to validate the parent bundle in the namespace bundle

Error message

Failed to validate the parent bundle in the namespace bundles.

What it means

ServiceUnitStateChannelImpl bundle-splitting validation failed: the parent bundle referenced by a split request is not contained in the target namespace's bundle set, indicating inconsistent bundle state between the channel metadata and the namespace policies.

Source

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

                            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());
                    }
                });
    }

    private CompletableFuture<Void> updateSplitNamespaceBundlesAsync(
            NamespaceService namespaceService,
            NamespaceBundleFactory bundleFactory,
            NamespaceBundle parentBundle,
            NamespaceBundles splitNamespaceBundles) {
        var namespaceName = parentBundle.getNamespaceObject();

View on GitHub (pinned to 820761864e)

Solutions

  1. Re-read current namespace bundles and work from the existing children
  2. Skip the transfer for the stale parent bundle
Defensive patterns

Strategy: validation

When it happens

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