{"record":{"id":"26451d3f59526413","repo":"pentaho/pentaho-kettle","slug":"pgpencryptstream-error-datastreamfieldmissing","errorCode":null,"errorMessage":"PGPEncryptStream.Error.DataStreamFieldMissing","messagePattern":"PGPEncryptStream\\.Error\\.DataStreamFieldMissing","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/pgpencryptstream/PGPEncryptStream.java","lineNumber":75,"sourceCode":"    if ( r == null ) { // no more input to be expected...\n\n      setOutputDone();\n      return false;\n    }\n\n    try {\n      if ( first ) {\n        first = false;\n        // get the RowMeta\n        data.previousRowMeta = getInputRowMeta().clone();\n        data.NrPrevFields = data.previousRowMeta.size();\n        data.outputRowMeta = data.previousRowMeta;\n        meta.getFields( getTransMeta().getBowl(), data.outputRowMeta, getStepname(), null, null, this, repository,\n          metaStore );\n\n        // Check is stream data field is provided\n        if ( Utils.isEmpty( meta.getStreamField() ) ) {\n          throw new KettleException( BaseMessages.getString( PKG, \"PGPEncryptStream.Error.DataStreamFieldMissing\" ) );\n        }\n\n        if ( meta.isKeynameInField() ) {\n          // keyname will be extracted from a field\n          String keyField = meta.getKeynameFieldName();\n          if ( Utils.isEmpty( keyField ) ) {\n            throw new KettleException( BaseMessages.getString( PKG, \"PGPEncryptStream.Error.KeyNameFieldMissing\" ) );\n          }\n          data.indexOfKeyName = data.previousRowMeta.indexOfValue( keyField );\n          if ( data.indexOfKeyName < 0 ) {\n            // The field is unreachable !\n            throw new KettleException( BaseMessages.getString(\n              PKG, \"PGPEncryptStream.Exception.CouldnotFindField\", meta.getStreamField() ) );\n          }\n        } else {\n          // Check is keyname is provided\n          data.keyName = environmentSubstitute( meta.getKeyName() );\n","sourceCodeStart":57,"sourceCodeEnd":93,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/pgpencryptstream/PGPEncryptStream.java#L57-L93","documentation":"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.","triggerScenarios":"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()).","commonSituations":"Step created programmatically or via a template that never set the field name, field cleared in the dialog, transformation migrated from another tool.","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())"],"exampleFix":"// before\nPGPEncryptStreamMeta meta = new PGPEncryptStreamMeta(); // streamField never set\n// after\nmeta.setStreamField( \"payload\" );","handlingStrategy":"validation","validationCode":"// Before running the transformation\nPGPEncryptStreamMeta meta = /* ... */;\nif (meta.getStreamField() == null || meta.getStreamField().trim().isEmpty()) {\n  throw new IllegalStateException(\"PGP Encrypt Stream step: Stream field must be set\");\n}","typeGuard":null,"tryCatchPattern":"try { trans.execute(null); }\ncatch (KettleException e) {\n  if (e.getMessage().contains(\"DataStreamFieldMissing\")) {\n    log.error(\"Configure the PGP step's stream field before running\", e);\n  } else { throw e; }\n}","preventionTips":["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"],"tags":["kettle","pgp","step-config","missing-field"],"backgroundTag":"missing-required-config-field","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"}