{"record":{"id":"7fc6c0a6cf63dea8","repo":"apache/hadoop","slug":"error-generating-shuffle-secret-key","errorCode":null,"errorMessage":"Error generating shuffle secret key","messagePattern":"Error generating shuffle secret key","errorType":"exception","errorClass":"IOException","httpStatus":null,"severity":"error","filePath":"hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/JobSubmitter.java","lineNumber":183,"sourceCode":"      conf.set(MRJobConfig.MAPREDUCE_JOB_DIR, submitJobDir.toString());\n      LOG.debug(\"Configuring job \" + jobId + \" with \" + submitJobDir \n          + \" as the submit dir\");\n      // get delegation token for the dir\n      TokenCache.obtainTokensForNamenodes(job.getCredentials(),\n          new Path[] { submitJobDir }, conf);\n      \n      populateTokenCache(conf, job.getCredentials());\n\n      // generate a secret to authenticate shuffle transfers\n      if (TokenCache.getShuffleSecretKey(job.getCredentials()) == null) {\n        KeyGenerator keyGen;\n        try {\n          keyGen = KeyGenerator.getInstance(SHUFFLE_KEYGEN_ALGORITHM);\n          int shuffleKeyLength =\n              conf.getInt(MRJobConfig.SHUFFLE_KEY_LENGTH, MRJobConfig.DEFAULT_SHUFFLE_KEY_LENGTH);\n          keyGen.init(shuffleKeyLength);\n        } catch (NoSuchAlgorithmException e) {\n          throw new IOException(\"Error generating shuffle secret key\", e);\n        }\n        SecretKey shuffleKey = keyGen.generateKey();\n        TokenCache.setShuffleSecretKey(shuffleKey.getEncoded(),\n            job.getCredentials());\n      }\n      if (CryptoUtils.isEncryptedSpillEnabled(conf)) {\n        conf.setInt(MRJobConfig.MR_AM_MAX_ATTEMPTS, 1);\n        LOG.warn(\"Max job attempts set to 1 since encrypted intermediate\" +\n                \"data spill is enabled\");\n      }\n\n      copyAndConfigureFiles(job, submitJobDir);\n\n      Path submitJobFile = JobSubmissionFiles.getJobConfPath(submitJobDir);\n      \n      // Create the splits for the job\n      LOG.debug(\"Creating splits at \" + jtFs.makeQualified(submitJobDir));\n      int maps = writeSplits(job, submitJobDir);","sourceCodeStart":165,"sourceCodeEnd":201,"githubUrl":"https://github.com/apache/hadoop/blob/2add9630210752f88ceb1bb74eb65e37bf41da8e/hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/JobSubmitter.java#L165-L201","documentation":"Error \"Error generating shuffle secret key\" thrown in apache/hadoop.","triggerScenarios":"Thrown at hadoop-mapreduce-project/hadoop-mapreduce-client/hadoop-mapreduce-client-core/src/main/java/org/apache/hadoop/mapreduce/JobSubmitter.java:183 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check that the JVM has a working secure random provider and sufficient entropy; retry job submission after resolving the crypto error."],"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"}