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

  1. Use a valid allocator name (e.g., 'default', 'pooled', 'unpooled' as registered)
  2. 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.