pentaho/pentaho-kettle · error · KettleException

PGPDecryptStream.Error.DataStreamFieldMissing

Error message

PGPDecryptStream.Error.DataStreamFieldMissing

What it means

Message key PGPDecryptStream.Error.DataStreamFieldMissing thrown in processRow: the stream data field setting is empty (Utils.isEmpty on meta.getStreamField()), so the step has no field carrying the encrypted data to decrypt.

Solutions

  1. Configure the stream field in the step dialog so it names the field containing the encrypted data
  2. Ensure the upstream step provides that field in the row stream
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStream.java:76 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/01a58fd3b8d9b484. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStream.java:76

    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, "PGPDecryptStream.Error.DataStreamFieldMissing" ) );
        }

        if ( meta.isPassphraseFromField() ) {
          // Passphrase from field
          String fieldname = meta.getPassphraseFieldName();
          if ( Utils.isEmpty( fieldname ) ) {
            throw new KettleException( BaseMessages.getString(
              PKG, "PGPDecryptStream.Error.PassphraseFieldMissing" ) );
          }
          data.indexOfPassphraseField = data.previousRowMeta.indexOfValue( fieldname );
          if ( data.indexOfPassphraseField < 0 ) {
            // The field is unreachable !
            throw new KettleException( BaseMessages.getString(
              PKG, "PGPDecryptStream.Exception.CouldnotFindField", fieldname ) );
          }
        } else {
          // Check is passphrase is provided
          data.passPhrase =

View on GitHub (pinned to f3058517a1)