prestodb/presto · error · IllegalArgumentException
Encoding %s is already registered
Error message
Encoding %s is already registered
What it means
Registry uniqueness guard: a BlockEncoding with the same name was already registered (putIfAbsent returned an existing entry), so re-registering encodings would silently change serialization behavior.
Source
Thrown at presto-common/src/main/java/com/facebook/presto/common/block/BlockEncodingManager.java:58
addBlockEncoding(new IntArrayBlockEncoding());
addBlockEncoding(new LongArrayBlockEncoding());
addBlockEncoding(new Int128ArrayBlockEncoding());
addBlockEncoding(new DictionaryBlockEncoding());
addBlockEncoding(new ArrayBlockEncoding());
addBlockEncoding(new MapBlockEncoding());
addBlockEncoding(new SingleMapBlockEncoding());
addBlockEncoding(new RowBlockEncoding());
addBlockEncoding(new SingleRowBlockEncoding());
addBlockEncoding(new RunLengthBlockEncoding());
addBlockEncoding(new LazyBlockEncoding());
}
public void addBlockEncoding(BlockEncoding blockEncoding)
{
requireNonNull(blockEncoding, "blockEncoding is null");
BlockEncoding existingEntry = blockEncodings.putIfAbsent(blockEncoding.getName(), blockEncoding);
if (existingEntry != null) {
throw new IllegalArgumentException(format("Encoding %s is already registered", blockEncoding.getName()));
}
}
@Override
public Block readBlock(SliceInput input)
{
// read the encoding name
String encodingName = readLengthPrefixedString(input);
// look up the encoding factory
BlockEncoding blockEncoding = blockEncodings.get(encodingName);
if (blockEncoding == null) {
throw new IllegalArgumentException(format("Unknown block encoding %s", encodingName));
}
// load read the encoding factory from the output stream
return blockEncoding.readBlock(this, input);
}View on GitHub (pinned to 55bb57d202)
Solutions
- Register each encoding name only once at bootstrap
- Check for duplicate encoding registrations in custom plugin code
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at presto-common/src/main/java/com/facebook/presto/common/block/BlockEncodingManager.java:58 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of prestodb/presto@55bb57d202 (2026-09-04).
Data as JSON: /api/errors/54aabf5202d70407.
Report an issue: GitHub.