pentaho/pentaho-kettle · error · KettleException

PGPDecryptStreamMeta.Exception.UnexpectedErrorReadingStepInf…

Error message

PGPDecryptStreamMeta.Exception.UnexpectedErrorReadingStepInfo

What it means

PGPDecryptStreamMeta.readRep throws KettleException when reading step attributes from the Pentaho Repository fails unexpectedly. Any exception from rep.getStepAttributeString/Boolean while loading the step's saved settings is wrapped with this message.

Solutions

  1. Verify the repository connection is up and credentials are valid
  2. Re-open the transformation in Spoon to reload from the repository
  3. Check the repository tables (R_STEP_ATTRIBUTE) for the step's rows
  4. Check the wrapped cause 'e' for the true repository error and address it
Defensive patterns

Strategy: try-catch

Validate before calling

// Check repository connectivity before loading
if (rep.connect() == null || !rep.isConnected()) {
  throw new IllegalStateException("Repository not connected");
}

Try / catch

try { stepMeta.readRep(rep, metaStore, idStep, dbs); }
catch (KettleException e) {
  if (e.getMessage().contains("UnexpectedErrorReadingStepInfo")) {
    log.error("Repository read failed for step " + idStep + ": " + e.getCause(), e);
  } else { throw e; }
}

Prevention

When it happens

Trigger: Calling readRep against a repository where the step attributes cannot be fetched — repository connection issues, missing/corrupt step record, or a repository API error.

Common situations: Database repository temporarily unavailable, step deleted by another user mid-load, repository schema version mismatch, permissions problems on the repository tables.

Understand the failure class

Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/38224f3219488e99. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStreamMeta.java:249

      passphraseFieldName = XMLHandler.getTagValue( stepnode, "passphraseFieldName" );
    } catch ( Exception e ) {
      throw new KettleXMLException( BaseMessages.getString(
        PKG, "PGPDecryptStreamMeta.Exception.UnableToReadStepInfo" ), e );
    }
  }

  @Override
  public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {
    try {
      gpglocation = rep.getStepAttributeString( id_step, "gpglocation" );
      passhrase = Encr.decryptPasswordOptionallyEncrypted( rep.getStepAttributeString( id_step, "passhrase" ) );

      streamfield = rep.getStepAttributeString( id_step, "streamfield" );
      resultfieldname = rep.getStepAttributeString( id_step, "resultfieldname" );
      passphraseFromField = rep.getStepAttributeBoolean( id_step, "passphraseFromField" );
      passphraseFieldName = rep.getStepAttributeString( id_step, "passphraseFieldName" );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "PGPDecryptStreamMeta.Exception.UnexpectedErrorReadingStepInfo" ), e );
    }
  }

  @Override
  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
    try {
      rep.saveStepAttribute( id_transformation, id_step, "gpglocation", gpglocation );
      rep.saveStepAttribute( id_transformation, id_step, "passhrase", Encr
        .encryptPasswordIfNotUsingVariables( passhrase ) );
      rep.saveStepAttribute( id_transformation, id_step, "streamfield", streamfield );
      rep.saveStepAttribute( id_transformation, id_step, "resultfieldname", resultfieldname );
      rep.saveStepAttribute( id_transformation, id_step, "passphraseFromField", passphraseFromField );
      rep.saveStepAttribute( id_transformation, id_step, "passphraseFieldName", passphraseFieldName );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "PGPDecryptStreamMeta.Exception.UnableToSaveStepInfo" )
        + id_step, e );

View on GitHub (pinned to f3058517a1)