pentaho/pentaho-kettle · error · KettleException
PGPEncryptStream.Error.DataStreamFieldMissing
Error message
PGPEncryptStream.Error.DataStreamFieldMissing
What it means
PGPEncryptStream.processRow throws KettleException when the step's 'stream field' (the field containing the data to encrypt) is not configured. The step cannot know which column to encrypt, so it aborts on the first row.
Solutions
- Open the PGP Encrypt Stream step dialog and set the 'Stream field' to the column holding data to encrypt
- If building metadata in code, call meta.setStreamField("fieldName") before execution
- Validate transformation metadata before running (e.g., in a test that inspects getStreamField())
Example fix
// before PGPEncryptStreamMeta meta = new PGPEncryptStreamMeta(); // streamField never set // after meta.setStreamField( "payload" );
Defensive patterns
Strategy: validation
Validate before calling
// Before running the transformation
PGPEncryptStreamMeta meta = /* ... */;
if (meta.getStreamField() == null || meta.getStreamField().trim().isEmpty()) {
throw new IllegalStateException("PGP Encrypt Stream step: Stream field must be set");
} Try / catch
try { trans.execute(null); }
catch (KettleException e) {
if (e.getMessage().contains("DataStreamFieldMissing")) {
log.error("Configure the PGP step's stream field before running", e);
} else { throw e; }
} Prevention
- Always configure the stream field after adding the step
- Add a metadata sanity test that asserts required step settings
- Use Spoon's step dialog rather than manual metadata construction
- Validate transformations in CI before deployment
When it happens
Trigger: Executing a transformation where the PGP Encrypt Stream step has an empty StreamField setting; check runs once on first row via Utils.isEmpty(meta.getStreamField()).
Common situations: Step created programmatically or via a template that never set the field name, field cleared in the dialog, transformation migrated from another tool.
Understand the failure class
Background: "is required", "must be set", "missing required field": configuration validation errors across open-source libraries — this error's family across 36 libraries.
Related errors
- PGPEncryptStream.Error.KeyNameFieldMissing
- DimensionLookup.Exception.KeyFieldNotFound
- DimensionLookup.Exception.StartDateValueColumnNotFound
- GetFileNames.Log.NoField
- GetFilesRowsCount.Log.NoField
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/26451d3f59526413.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/pgpencryptstream/PGPEncryptStream.java:75
if ( r == null ) { // no more input to be expected...
setOutputDone();
return false;
}
try {
if ( first ) {
first = false;
// get the RowMeta
data.previousRowMeta = getInputRowMeta().clone();
data.NrPrevFields = data.previousRowMeta.size();
data.outputRowMeta = data.previousRowMeta;
meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,
metaStore );
// Check is stream data field is provided
if ( Utils.isEmpty( meta.getStreamField() ) ) {
throw new KettleException( BaseMessages.getString( PKG, "PGPEncryptStream.Error.DataStreamFieldMissing" ) );
}
if ( meta.isKeynameInField() ) {
// keyname will be extracted from a field
String keyField = meta.getKeynameFieldName();
if ( Utils.isEmpty( keyField ) ) {
throw new KettleException( BaseMessages.getString( PKG, "PGPEncryptStream.Error.KeyNameFieldMissing" ) );
}
data.indexOfKeyName = data.previousRowMeta.indexOfValue( keyField );
if ( data.indexOfKeyName < 0 ) {
// The field is unreachable !
throw new KettleException( BaseMessages.getString(
PKG, "PGPEncryptStream.Exception.CouldnotFindField", meta.getStreamField() ) );
}
} else {
// Check is keyname is provided
data.keyName = environmentSubstitute( meta.getKeyName() );
View on GitHub (pinned to f3058517a1)