{"record":{"id":"54aabf5202d70407","repo":"prestodb/presto","slug":"encoding-s-is-already-registered","errorCode":null,"errorMessage":"Encoding %s is already registered","messagePattern":"Encoding (.+?) is already registered","errorType":"error_code","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"presto-common/src/main/java/com/facebook/presto/common/block/BlockEncodingManager.java","lineNumber":58,"sourceCode":"        addBlockEncoding(new IntArrayBlockEncoding());\n        addBlockEncoding(new LongArrayBlockEncoding());\n        addBlockEncoding(new Int128ArrayBlockEncoding());\n        addBlockEncoding(new DictionaryBlockEncoding());\n        addBlockEncoding(new ArrayBlockEncoding());\n        addBlockEncoding(new MapBlockEncoding());\n        addBlockEncoding(new SingleMapBlockEncoding());\n        addBlockEncoding(new RowBlockEncoding());\n        addBlockEncoding(new SingleRowBlockEncoding());\n        addBlockEncoding(new RunLengthBlockEncoding());\n        addBlockEncoding(new LazyBlockEncoding());\n    }\n\n    public void addBlockEncoding(BlockEncoding blockEncoding)\n    {\n        requireNonNull(blockEncoding, \"blockEncoding is null\");\n        BlockEncoding existingEntry = blockEncodings.putIfAbsent(blockEncoding.getName(), blockEncoding);\n        if (existingEntry != null) {\n            throw new IllegalArgumentException(format(\"Encoding %s is already registered\", blockEncoding.getName()));\n        }\n    }\n\n    @Override\n    public Block readBlock(SliceInput input)\n    {\n        // read the encoding name\n        String encodingName = readLengthPrefixedString(input);\n\n        // look up the encoding factory\n        BlockEncoding blockEncoding = blockEncodings.get(encodingName);\n        if (blockEncoding == null) {\n            throw new IllegalArgumentException(format(\"Unknown block encoding %s\", encodingName));\n        }\n\n        // load read the encoding factory from the output stream\n        return blockEncoding.readBlock(this, input);\n    }","sourceCodeStart":40,"sourceCodeEnd":76,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-common/src/main/java/com/facebook/presto/common/block/BlockEncodingManager.java#L40-L76","documentation":"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.","triggerScenarios":"Thrown at presto-common/src/main/java/com/facebook/presto/common/block/BlockEncodingManager.java:58 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Register each encoding name only once at bootstrap","Check for duplicate encoding registrations in custom plugin code"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"55bb57d202de3b926896fa966c2c4a44c779634e","analyzedAt":"2026-09-04T12:50:26.162Z","contentChangedAt":"2026-09-04T12:50:26.162Z","schemaVersion":2},"datasetVersion":"2026-09-11T21:17:09.523Z"}