pentaho/pentaho-kettle · error · KettleException
PGPDecryptStreamMeta.Exception.UnableToSaveStepInfo
Error message
PGPDecryptStreamMeta.Exception.UnableToSaveStepInfo
What it means
PGPDecryptStreamMeta.saveRep throws KettleException when saving the step's attributes (passphrase, stream field, result field, etc.) to the Pentaho Repository fails. The step id is appended to the message for identification.
Solutions
- Check repository connectivity and retry the save
- Verify the user has write permission on the repository
- Inspect the wrapped cause for the underlying repository error
- If password encryption is the issue, confirm Encr encryption is configured (kettle.encryption.password)
Defensive patterns
Strategy: try-catch
Validate before calling
// Ensure repository is writable before saving
if (!rep.isConnected()) { throw new IllegalStateException("Repository not connected"); }
// optionally: test write on a scratch attribute via rep.saveStepAttribute on a test step Try / catch
try { meta.saveRep(rep, metaStore, idTrans, idStep); }
catch (KettleException e) {
if (e.getMessage().contains("UnableToSaveStepInfo")) {
log.error("Repository save failed for step " + idStep + ": " + e.getCause(), e);
} else { throw e; }
} Prevention
- Check DB disk space and locks before bulk saves
- Grant write permissions to the repository user
- Retry saves with backoff on transient connection loss
- Verify Encr password encryption config
When it happens
Trigger: Calling saveRep when rep.saveStepAttribute throws — repository write failure, connection loss, constraint violation, or read-only repository.
Common situations: Repository database locked or down, insufficient write permissions, passphrase containing characters the repository layer rejects, disk full on the repository DB server.
Related errors
- Unable to save step information to the repository for…
- AddSequenceMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/7fdd786ccdba1e06.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/pgpdecryptstream/PGPDecryptStreamMeta.java:265
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 );
}
}
@Override
public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta,
RowMetaInterface prev, String[] input, String[] output, RowMetaInterface info, VariableSpace space,
Repository repository, IMetaStore metaStore ) {
CheckResult cr;
String error_message = "";
if ( Utils.isEmpty( gpglocation ) ) {
error_message = BaseMessages.getString( PKG, "PGPDecryptStreamMeta.CheckResult.GPGLocationMissing" );
cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, error_message, stepMeta );
remarks.add( cr );
} else {
error_message = BaseMessages.getString( PKG, "PGPDecryptStreamMeta.CheckResult.GPGLocationOK" );View on GitHub (pinned to f3058517a1)