pentaho/pentaho-kettle · error · KettleException

PGPEncryptStreamMeta.Exception.UnexpectedErrorReadingStepInf…

Error message

PGPEncryptStreamMeta.Exception.UnexpectedErrorReadingStepInfo

What it means

KettleException thrown by PGPEncryptStreamMeta.readRep when reading the step's attributes from the repository fails. Each rep.getStepAttributeString/Boolean call reads persisted settings for the step; any repository-level exception is wrapped with this message. It means the step metadata could not be loaded from the database repository.

Solutions

  1. Verify the repository database connection is healthy and retry loading the transformation.
  2. Check r_step_attribute rows for the step id and repair or re-create the step.
  3. Confirm repository schema matches the Pentaho version (run the repository upgrade scripts).

Example fix

// before: loading transformation against stale repository connection
TransMeta tm = new TransMeta(rep, "PGP transform"); // throws
// after: reconnect repository first
rep.connect("admin", "password");
TransMeta tm = new TransMeta(rep, "PGP transform");
Defensive patterns

Strategy: try-catch

Validate before calling

// Verify repository is reachable before loading
if (!rep.isConnected()) rep.connect(user, pass);
rep.findStepAttributeNames sanity: check the transformation exists via rep.getTransformationID(name)

Try / catch

try { meta.readRep(rep, metaStore, idStep, databases); } catch (KettleException e) { log.error("Repository read failed for step: " + e.getCause(), e); throw e; }

Prevention

When it happens

Trigger: readRep is invoked when loading a transformation stored in a repository and the repository call throws (connection dropped, missing r_step_attribute rows, repository schema mismatch).

Common situations: Repository database down or network dropped mid-load; shared repository upgraded from older Pentaho version; corrupted r_step_attribute entries for the step.

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/033000cb4b45042b. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/pgpencryptstream/PGPEncryptStreamMeta.java:245

      streamfield = XMLHandler.getTagValue( stepnode, "streamfield" );
      resultfieldname = XMLHandler.getTagValue( stepnode, "resultfieldname" );
    } catch ( Exception e ) {
      throw new KettleXMLException( BaseMessages.getString(
        PKG, "PGPEncryptStreamMeta.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" );
      keyname = rep.getStepAttributeString( id_step, "keyname" );
      keynameInField = rep.getStepAttributeBoolean( id_step, "keynameInField" );
      keynameFieldName = rep.getStepAttributeString( id_step, "keynameFieldName" );
      streamfield = rep.getStepAttributeString( id_step, "streamfield" );
      resultfieldname = rep.getStepAttributeString( id_step, "resultfieldname" );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "PGPEncryptStreamMeta.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, "keyname", keyname );
      rep.saveStepAttribute( id_transformation, id_step, "keynameInField", keynameInField );
      rep.saveStepAttribute( id_transformation, id_step, "keynameFieldName", keynameFieldName );
      rep.saveStepAttribute( id_transformation, id_step, "streamfield", streamfield );
      rep.saveStepAttribute( id_transformation, id_step, "resultfieldname", resultfieldname );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "PGPEncryptStreamMeta.Exception.UnableToSaveStepInfo" )
        + id_step, e );
    }

View on GitHub (pinned to f3058517a1)