pentaho/pentaho-kettle · error · KettleException
PGPDecryptStream.Error.DataToDecryptEmpty
Error message
PGPDecryptStream.Error.DataToDecryptEmpty
What it means
Message key PGPDecryptStream.Error.DataToDecryptEmpty thrown in processRow: the string read from the stream field as the data to decrypt is null/empty, so there is nothing to feed the PGP decryption routine.
Solutions
- Filter or handle rows whose encrypted-data field is empty before this step
- Verify the upstream field name and that it actually contains ciphertext
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStream.java:129 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/d0259094ae619c8d.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStream.java:129
// allocate output row
Object[] outputRow = RowDataUtil.allocateRowData( data.outputRowMeta.size() );
for ( int i = 0; i < data.NrPrevFields; i++ ) {
outputRow[i] = r[i];
}
if ( meta.isPassphraseFromField() ) {
data.passPhrase = data.previousRowMeta.getString( r, data.indexOfPassphraseField );
if ( Utils.isEmpty( data.passPhrase ) ) {
throw new KettleException( BaseMessages.getString( PKG, "PGPDecryptStream.Error.PassphraseMissing" ) );
}
}
// get stream, data to decrypt
String encryptedData = data.previousRowMeta.getString( r, data.indexOfField );
if ( Utils.isEmpty( encryptedData ) ) {
// no data..we can not continue with this row
throw new KettleException( BaseMessages.getString( PKG, "PGPDecryptStream.Error.DataToDecryptEmpty" ) );
}
// let's decrypt data
String decryptedData = data.gpg.decrypt( encryptedData, data.passPhrase );
// Add encrypted data to input stream
outputRow[data.NrPrevFields] = decryptedData;
// add new values to the row.
putRow( data.outputRowMeta, outputRow ); // copy row to output rowset(s);
if ( log.isRowLevel() ) {
logRowlevel( BaseMessages.getString( PKG, "PGPDecryptStream.LineNumber", getLinesRead()
+ " : " + getInputRowMeta().getString( r ) ) );
}
} catch ( Exception e ) {
if ( getStepMeta().isDoingErrorHandling() ) {
sendToErrorRow = true;View on GitHub (pinned to f3058517a1)