pentaho/pentaho-kettle · error · KettleException
PGPEncryptStreamMeta.Exception.UnableToSaveStepInfo
Error message
PGPEncryptStreamMeta.Exception.UnableToSaveStepInfo
What it means
KettleException thrown by PGPEncryptStreamMeta.saveRep when persisting the step's attributes to the repository fails. Each rep.saveStepAttribute call writes the PGP step settings; any exception is wrapped with this message plus the step id. It means the step's configuration could not be saved.
Solutions
- Check repository connection and retry saving the transformation.
- Verify the repository user has write permission on the transformation.
- Check database disk space and constraint errors in the underlying repository DB logs.
Example fix
// before: saving with read-only repository user
rep.save(transMeta, "path", null, true); // throws
// after: save with a user granted INSERT/UPDATE on repository tables
rep = KettleDatabaseRepository ... connect("admin", password); // writable account Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-save check: writable repository and connectivity
if (!rep.isConnected()) throw new KettleException("Repository not connected");
// e.g. attempt a trivial write or check user privileges beforehand Try / catch
try { rep.save(transMeta, path, null, true); } catch (KettleException e) { log.error("Save failed for step " + idStep + ": " + e.getCause(), e); throw e; } Prevention
- Use a repository account with write privileges
- Monitor DB disk space and connection pool health
- Save to file as backup before repository saves
When it happens
Trigger: saveRep is invoked when saving a transformation and a rep.saveStepAttribute call throws (write failure, read-only connection, constraint violation, connection loss).
Common situations: Repository DB read-only or out of space; network failure during save; repository user lacks write privileges.
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/f120362bbc74d91b.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/pgpencryptstream/PGPEncryptStreamMeta.java:260
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 );
}
}
@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, "PGPEncryptStreamMeta.CheckResult.GPGLocationMissing" );
cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, error_message, stepMeta );
remarks.add( cr );
} else {
error_message = BaseMessages.getString( PKG, "PGPEncryptStreamMeta.CheckResult.GPGLocationOK" );View on GitHub (pinned to f3058517a1)