{"record":{"id":"1e334d0457c4b49c","repo":"aeron-io/aeron","slug":"resolver-bootstrap-neighbor-list-too-large-can-have-a","errorCode":null,"errorMessage":"Resolver Bootstrap Neighbor list too large.  Can have a maximum of {MAX_BOOTSTRAP_NEIGHBORS}.","messagePattern":"Resolver Bootstrap Neighbor list too large\\.  Can have a maximum of (.+?)\\.","errorType":"exception","errorClass":"AeronException","httpStatus":null,"severity":"error","filePath":"aeron-driver/src/main/java/io/aeron/driver/DriverNameResolver.java","lineNumber":142,"sourceCode":"        clock = ctx.cachedEpochClock();\n\n        localDriverName = ctx.resolverName();\n        localName = localDriverName.getBytes(StandardCharsets.US_ASCII);\n        localSocketAddress = UdpNameResolutionTransport.getInterfaceAddress(ctx.resolverInterface());\n        localAddress = localSocketAddress.getAddress().getAddress();\n\n        neighborTimeoutMs = TimeUnit.NANOSECONDS.toMillis(ctx.resolverNeighborTimeoutNs());\n        selfResolutionIntervalMs = TimeUnit.NANOSECONDS.toMillis(ctx.resolverSelfResolutionIntervalNs());\n        neighborResolutionIntervalMs = TimeUnit.NANOSECONDS.toMillis(ctx.resolverNeighborResolutionIntervalNs());\n        bootstrapNeighborResolutionIntervalMs = TimeUnit.NANOSECONDS.toMillis(\n            ctx.resolverBootstrapNeighborResolutionIntervalNs());\n\n        bootstrapNeighbors = null != ctx.resolverBootstrapNeighbor() ?\n            ctx.resolverBootstrapNeighbor().split(\",\") : new String[0];\n\n        if (MAX_BOOTSTRAP_NEIGHBORS < bootstrapNeighbors.length)\n        {\n            throw new AeronException(\n                \"Resolver Bootstrap Neighbor list too large.  Can have a maximum of \" +\n                MAX_BOOTSTRAP_NEIGHBORS + \".\");\n        }\n\n        bootstrapNeighborAddresses = new InetSocketAddress[bootstrapNeighbors.length];\n        bootstrapNeighborCounters = new AtomicCounter[bootstrapNeighbors.length];\n        bootstrapNeighborConnected = new BitSet(bootstrapNeighborAddresses.length);\n\n        final long nowMs = ctx.epochClock().time();\n        bootstrapNeighborResolveDeadlineMs = nowMs + bootstrapNeighborResolutionIntervalMs;\n\n        selfResolutionDeadlineMs = 0;\n        neighborResolutionDeadlineMs = nowMs + neighborResolutionIntervalMs;\n\n        cache = new DriverNameResolverCache(neighborTimeoutMs);\n\n        final UdpChannel resolverChannel =\n            UdpChannel.parse(\"aeron:udp?endpoint=\" +","sourceCodeStart":124,"sourceCodeEnd":160,"githubUrl":"https://github.com/aeron-io/aeron/blob/6d60124e15e35c11b49ba2e3c2c2858a09a18803/aeron-driver/src/main/java/io/aeron/driver/DriverNameResolver.java#L124-L160","documentation":"A configuration validation error at driver startup: the aeron.driver.resolver.bootstrap.neighbor property lists more comma-separated neighbors than the driver supports (MAX_BOOTSTRAP_NEIGHBORS). The NameResolver bootstrap neighbor list has a hard cap and the driver refuses to start rather than silently truncating it.","triggerScenarios":"Setting the aeron.driver.resolver.bootstrap.neighbor system property / context value to a comma-separated list whose length exceeds MAX_BOOTSTRAP_NEIGHBORS, then launching MediaDriver (DriverNameResolver constructor).","commonSituations":"Enumerating every cluster node as a bootstrap neighbor in large clusters; copy-pasting a growing list over time; misunderstanding that only a couple of neighbors are needed to bootstrap.","solutions":["Trim the neighbor list to at most MAX_BOOTSTRAP_NEIGHBORS entries (pick a representative subset of nodes).","Use 1-2 stable seed nodes and let the resolver learn the rest via gossip.","Check the Aeron docs/constant for the exact maximum for your version.","If more neighbors are genuinely required, upgrade Aeron to a version with a larger cap or file an issue."],"exampleFix":"// before\n-Daeron.driver.resolver.bootstrap.neighbor=node1:40456,node2:40456,node3:40456,node4:40456,... (too many)\n// after\n-Daeron.driver.resolver.bootstrap.neighbor=node1:40456,node2:40456","handlingStrategy":"validation","validationCode":"String[] neighbors = bootstrapNeighborCsv == null ? new String[0] : bootstrapNeighborCsv.split(\",\");\nif (neighbors.length > MediaDriver.Context.MAX_BOOTSTRAP_NEIGHBORS) {\n    throw new IllegalArgumentException(\"too many bootstrap neighbors: \" + neighbors.length);\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Cap the neighbor list at the documented maximum in your config tooling","Use a few seed nodes; the resolver discovers peers via gossip","Validate resolver config in CI before driver launch"],"tags":["aeron","config","name-resolver","startup"],"backgroundTag":"invalid-config-value","analyzedSha":"6d60124e15e35c11b49ba2e3c2c2858a09a18803","analyzedAt":"2026-09-12T11:17:07.683Z","contentChangedAt":"2026-09-12T11:17:07.683Z","schemaVersion":2},"datasetVersion":"2026-09-19T12:17:13.211Z"}