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
- Verify the repository connection is up and credentials are valid
- Re-open the transformation in Spoon to reload from the repository
- Check the repository tables (R_STEP_ATTRIBUTE) for the step's rows
- 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
- Verify repository connectivity and credentials before batch loads
- Monitor repository DB health
- Avoid concurrent deletion of steps while transformations load
- Align repository schema version with PDI runtime
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
- AddSequenceMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
- CubeInputMeta.Exception.UnableToSaveStepInfo
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)