{"record":{"id":"5b1e26fa310d404e","repo":"apache/hadoop","slug":"failed-to-instantiate-a-custom-keyring-provider","errorCode":null,"errorMessage":"Failed to instantiate a custom keyring provider: \" + e","messagePattern":"Failed to instantiate a custom keyring provider: \" \\+ e","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/EncryptionS3ClientFactory.java","lineNumber":206,"sourceCode":"            // this is required for backward compatibility with older encryption clients\n            .enableLegacyWrappingAlgorithms(true);\n\n    switch (cseMaterials.getCseKeyType()) {\n    case KMS:\n      Keyring kmsKeyring = createKmsKeyring(parameters, cseMaterials);\n      CryptographicMaterialsManager kmsCryptoMaterialsManager =\n          DefaultCryptoMaterialsManager.builder()\n              .keyring(kmsKeyring)\n              .build();\n      s3EncryptionClientBuilder.cryptoMaterialsManager(kmsCryptoMaterialsManager);\n      break;\n    case CUSTOM:\n      Keyring keyring;\n      try {\n        keyring =\n            getKeyringProvider(cseMaterials.getCustomKeyringClassName(), cseMaterials.getConf());\n      } catch (RuntimeException e) {\n        throw new IOException(\"Failed to instantiate a custom keyring provider: \" + e, e);\n      }\n      CryptographicMaterialsManager customCryptoMaterialsManager =\n          DefaultCryptoMaterialsManager.builder()\n              .keyring(keyring)\n              .build();\n      s3EncryptionClientBuilder.cryptoMaterialsManager(customCryptoMaterialsManager);\n      break;\n    default:\n      break;\n    }\n    return s3EncryptionClientBuilder.build();\n  }\n\n  /**\n   * Creates KmsKeyring instance based on the provided S3ClientCreationParameters and CSEMaterials.\n   *\n   * @param parameters The S3ClientCreationParameters containing the necessary configuration.\n   * @param cseMaterials The CSEMaterials containing the KMS key ID and other encryption materials.","sourceCodeStart":188,"sourceCodeEnd":224,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/EncryptionS3ClientFactory.java#L188-L224","documentation":"Error \"Failed to instantiate a custom keyring provider: \" + e\" thrown in apache/hadoop.","triggerScenarios":"Thrown at hadoop-tools/hadoop-aws/src/main/java/org/apache/hadoop/fs/s3a/impl/EncryptionS3ClientFactory.java:206 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the custom keyring provider class is on the classpath, public, and instantiable; check fs.s3a.encryption.cse.keyring.class.name."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2add9630210752f88ceb1bb74eb65e37bf41da8e","analyzedAt":"2026-08-22T19:55:07.957Z","schemaVersion":2},"datasetVersion":"2026-08-22T20:17:22.307Z"}