apache/pulsar · error · IllegalArgumentException
Invalid allocator name :
Error message
Invalid allocator name :
What it means
Validation failure inside AllocatorStatsGenerator.generate: the requested Netty allocator name does not correspond to a known allocator, so its pooling metrics cannot be collected and the stats request is rejected with this sentinel message.
Source
Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/AllocatorStatsGenerator.java:43
import io.netty.buffer.PooledByteBufAllocator;
import java.util.ArrayList;
import java.util.stream.Collectors;
import org.apache.bookkeeper.mledger.impl.cache.RangeEntryCacheImpl;
import org.apache.pulsar.common.stats.AllocatorStats;
import org.apache.pulsar.common.stats.AllocatorStats.PoolArenaStats;
import org.apache.pulsar.common.stats.AllocatorStats.PoolChunkListStats;
import org.apache.pulsar.common.stats.AllocatorStats.PoolChunkStats;
import org.apache.pulsar.common.stats.AllocatorStats.PoolSubpageStats;
public class AllocatorStatsGenerator {
public static AllocatorStats generate(String allocatorName) {
PooledByteBufAllocator allocator;
if ("default".equals(allocatorName)) {
allocator = PooledByteBufAllocator.DEFAULT;
} else if ("ml-cache".equals(allocatorName)) {
allocator = RangeEntryCacheImpl.ALLOCATOR;
} else {
throw new IllegalArgumentException("Invalid allocator name : " + allocatorName);
}
AllocatorStats stats = new AllocatorStats();
stats.directArenas = allocator.metric().directArenas().stream()
.map(AllocatorStatsGenerator::newPoolArenaStats)
.collect(Collectors.toList());
stats.heapArenas = allocator.metric().heapArenas().stream()
.map(AllocatorStatsGenerator::newPoolArenaStats)
.collect(Collectors.toList());
stats.numDirectArenas = allocator.metric().numDirectArenas();
stats.numHeapArenas = allocator.metric().numHeapArenas();
stats.numThreadLocalCaches = allocator.metric().numThreadLocalCaches();
stats.usedHeapMemory = allocator.metric().usedHeapMemory();
stats.usedDirectMemory = allocator.metric().usedDirectMemory();
stats.normalCacheSize = allocator.metric().normalCacheSize();
stats.smallCacheSize = allocator.metric().smallCacheSize();
return stats;View on GitHub (pinned to 820761864e)
Solutions
- Use a valid allocator name (e.g., 'default', 'pooled', 'unpooled' as registered)
- Register the custom allocator under that name before querying
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at pulsar-broker/src/main/java/org/apache/pulsar/broker/stats/AllocatorStatsGenerator.java:43 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/018570c5c51d7664.
Report an issue: GitHub.