{"record":{"id":"5748f3d3c71a7044","repo":"pentaho/pentaho-kettle","slug":"pgpdecryptstream-error-passphrasemissing","errorCode":null,"errorMessage":"PGPDecryptStream.Error.PassphraseMissing","messagePattern":"PGPDecryptStream\\.Error\\.PassphraseMissing","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStream.java","lineNumber":97,"sourceCode":"        if ( meta.isPassphraseFromField() ) {\n          // Passphrase from field\n          String fieldname = meta.getPassphraseFieldName();\n          if ( Utils.isEmpty( fieldname ) ) {\n            throw new KettleException( BaseMessages.getString(\n              PKG, \"PGPDecryptStream.Error.PassphraseFieldMissing\" ) );\n          }\n          data.indexOfPassphraseField = data.previousRowMeta.indexOfValue( fieldname );\n          if ( data.indexOfPassphraseField < 0 ) {\n            // The field is unreachable !\n            throw new KettleException( BaseMessages.getString(\n              PKG, \"PGPDecryptStream.Exception.CouldnotFindField\", fieldname ) );\n          }\n        } else {\n          // Check is passphrase is provided\n          data.passPhrase =\n            Encr.decryptPasswordOptionallyEncrypted( environmentSubstitute( meta.getPassphrase() ) );\n          if ( Utils.isEmpty( data.passPhrase ) ) {\n            throw new KettleException( BaseMessages.getString( PKG, \"PGPDecryptStream.Error.PassphraseMissing\" ) );\n          }\n        }\n\n        // cache the position of the field\n        if ( data.indexOfField < 0 ) {\n          data.indexOfField = data.previousRowMeta.indexOfValue( meta.getStreamField() );\n          if ( data.indexOfField < 0 ) {\n            // The field is unreachable !\n            throw new KettleException( BaseMessages.getString(\n              PKG, \"PGPDecryptStream.Exception.CouldnotFindField\", meta.getStreamField() ) );\n          }\n        }\n      } // End If first\n\n      // allocate output row\n      Object[] outputRow = RowDataUtil.allocateRowData( data.outputRowMeta.size() );\n      for ( int i = 0; i < data.NrPrevFields; i++ ) {\n        outputRow[i] = r[i];","sourceCodeStart":79,"sourceCodeEnd":115,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStream.java#L79-L115","documentation":"Message key PGPDecryptStream.Error.PassphraseMissing thrown in processRow: the value read from the passphrase field is null/empty at runtime (Utils.isEmpty on data.passPhrase), so decryption cannot proceed for the current row.","triggerScenarios":"Thrown at engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStream.java:97 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the passphrase field carries a non-empty value in every row","Filter out or route rows with missing passphrases before this step"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}