{"record":{"id":"0a5e16a330b065d7","repo":"prestodb/presto","slug":"hive-invalid-encryption-metadata-0a5e16","errorCode":"HIVE_INVALID_ENCRYPTION_METADATA","errorMessage":"Unknown encryptionMetadata type: ","messagePattern":"Unknown encryptionMetadata type: ","errorType":"error_code","errorClass":"PrestoException","httpStatus":null,"severity":"error","filePath":"presto-hive/src/main/java/com/facebook/presto/hive/EncryptionInformation.java","lineNumber":57,"sourceCode":"    {\n        this.dwrfEncryptionMetadata = requireNonNull(dwrfEncryptionMetadata, \"dwrfEncryptionMetadata is null\");\n    }\n\n    @JsonProperty\n    public Optional<DwrfEncryptionMetadata> getDwrfEncryptionMetadata()\n    {\n        return dwrfEncryptionMetadata;\n    }\n\n    public static EncryptionInformation fromEncryptionMetadata(EncryptionMetadata encryptionMetadata)\n    {\n        requireNonNull(encryptionMetadata, \"encryptionMetadata is null\");\n\n        if (encryptionMetadata instanceof DwrfEncryptionMetadata) {\n            return new EncryptionInformation(Optional.of((DwrfEncryptionMetadata) encryptionMetadata));\n        }\n\n        throw new PrestoException(HIVE_INVALID_ENCRYPTION_METADATA, \"Unknown encryptionMetadata type: \" + encryptionMetadata.getClass());\n    }\n\n    @Override\n    public int hashCode()\n    {\n        return hash(dwrfEncryptionMetadata);\n    }\n\n    @Override\n    public boolean equals(Object obj)\n    {\n        if (obj == this) {\n            return true;\n        }\n\n        if (obj == null || !this.getClass().equals(obj.getClass())) {\n            return false;\n        }","sourceCodeStart":39,"sourceCodeEnd":75,"githubUrl":"https://github.com/prestodb/presto/blob/55bb57d202de3b926896fa966c2c4a44c779634e/presto-hive/src/main/java/com/facebook/presto/hive/EncryptionInformation.java#L39-L75","documentation":"EncryptionInformation.fromEncryptionMetadata wraps an encryptionMetadata object from the Hive client. It only understands DwrfEncryptionMetadata; any other implementation type causes a HIVE_INVALID_ENCRYPTION_METADATA 'Unknown encryptionMetadata type' error. The library throws this because it cannot map an unrecognized metadata class into its DWRF-specific reader model.","triggerScenarios":"A custom EncryptionMetadata implementation (or a metadata class from a different Hive/Presto version) is passed to fromEncryptionMetadata, e.g. when a storage-format plugin supplies its own encryption metadata type during a split read.","commonSituations":"Running a custom or patched Hive client that returns a new EncryptionMetadata subclass, version skew between Presto and the Hive metastore/client libraries, or classloader issues loading a different DwrfEncryptionMetadata class.","solutions":["Ensure the metadata object passed in is an instance of DwrfEncryptionMetadata (from presto-hive), not a foreign implementation","Align Presto and Hive client library versions so the same EncryptionMetadata classes are used","If a custom encryption metadata type is required, extend EncryptionInformation to handle it instead of routing through this factory","Check for duplicate/conflicting hive client jars on the classpath causing instanceof to fail"],"exampleFix":"// before\nEncryptionInformation.fromEncryptionMetadata(myCustomMetadata);\n// after\nif (myCustomMetadata instanceof DwrfEncryptionMetadata) {\n    EncryptionInformation.fromEncryptionMetadata(myCustomMetadata);\n} else {\n    throw new IllegalArgumentException(\"Only DWRF metadata supported: \" + myCustomMetadata.getClass());\n}","handlingStrategy":"type-guard","validationCode":"if (!(encryptionMetadata instanceof DwrfEncryptionMetadata)) {\n    throw new IllegalArgumentException(\"Unsupported metadata type: \" + encryptionMetadata.getClass());\n}","typeGuard":"boolean isDwrfMetadata(EncryptionMetadata m) {\n    return m instanceof DwrfEncryptionMetadata;\n}","tryCatchPattern":"try {\n    EncryptionInformation info = EncryptionInformation.fromEncryptionMetadata(meta);\n} catch (PrestoException e) {\n    if (e.getMessage().startsWith(\"Unknown encryptionMetadata type:\")) {\n        // skip encryption handling or convert to DwrfEncryptionMetadata first\n    }\n    throw e;\n}","preventionTips":["Convert foreign metadata types to DwrfEncryptionMetadata before the factory call","Keep Hive client and Presto versions aligned","Avoid duplicate hive-storage jars on the classpath"],"tags":["hive","encryption","type-mismatch"],"backgroundTag":"unknown-metadata-type","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"}