pentaho/pentaho-kettle · error · KettleException

PGPDecryptStream.Error.PassphraseFieldMissing

Error message

PGPDecryptStream.Error.PassphraseFieldMissing

What it means

Message key PGPDecryptStream.Error.PassphraseFieldMissing thrown in processRow: passphrase-from-field is enabled but the passphrase field name is empty (Utils.isEmpty on meta.getPassphraseFieldName()), so the step cannot locate the passphrase.

Solutions

  1. Fill in the passphrase field name, or disable passphrase-from-field and provide a fixed passphrase
  2. Ensure the named field exists in the incoming rows
Defensive patterns

Strategy: validation

When it happens

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

Appendix: source

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

      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 =
            Encr.decryptPasswordOptionallyEncrypted( environmentSubstitute( meta.getPassphrase() ) );
          if ( Utils.isEmpty( data.passPhrase ) ) {
            throw new KettleException( BaseMessages.getString( PKG, "PGPDecryptStream.Error.PassphraseMissing" ) );
          }
        }

        // cache the position of the field

View on GitHub (pinned to f3058517a1)