pentaho/pentaho-kettle · error · KettleException
CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
Error message
CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
What it means
CreditCardValidatorMeta.saveRep persists step settings to a repository via saveStepAttribute calls. Any exception during those writes is wrapped in a KettleException with UnableToSaveStepInfo (concatenated with the step id) and the original cause, indicating the step configuration could not be saved.
Solutions
- Check repository connection and write permissions, then retry saving
- Save the transformation to a local .ktr file as a fallback
- Inspect the chained cause for the underlying repository error
Example fix
// before
rep.saveStepAttribute(idTrans, idStep, "onlydigits", onlydigits); // throws
// after — save to file when repository is unavailable
transMeta.setFilename("local_copy.ktr"); transMeta.writeToFile("local_copy.ktr"); Defensive patterns
Strategy: try-catch
Validate before calling
if (!rep.isConnected()) throw new IllegalStateException("Repository not connected"); Try / catch
try { meta.saveRep(rep, metaStore, idTrans, idStep); } catch (KettleException e) { logError("Save failed (step " + idStep + "): " + e.getCause()); } Prevention
- Confirm write permissions on the repository before saving
- Save a local copy of important transformations
- Check the chained cause for the real repository error
When it happens
Trigger: Saving a transformation while the repository is read-only, the connection drops, or the repository throws while writing attributes for the given id_step.
Common situations: Database repository with insufficient write permissions; locked tables; network interruption during save; repository schema version mismatch.
Related errors
- ColumnExistsMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- CubeInputMeta.Exception.UnexpectedErrorWhileReadingStepInfo
- SETVARIABLE0006
- SymmetricCryptoTransMeta.Exception.UnexpectedErrorInReadingStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/8ada623de1750489.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/credit-card-validator/impl/src/main/java/org/pentaho/di/trans/steps/creditcardvalidator/CreditCardValidatorMeta.java:235
notvalidmsg = rep.getStepAttributeString( id_step, "notvalidmsg" );
onlydigits = rep.getStepAttributeBoolean( id_step, "onlydigits" );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "CreditCardValidatorMeta.Exception.UnexpectedErrorReadingStepInfo" ), e );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
try {
rep.saveStepAttribute( id_transformation, id_step, "fieldname", fieldname );
rep.saveStepAttribute( id_transformation, id_step, "resultfieldname", resultfieldname );
rep.saveStepAttribute( id_transformation, id_step, "cardtype", cardtype );
rep.saveStepAttribute( id_transformation, id_step, "notvalidmsg", notvalidmsg );
rep.saveStepAttribute( id_transformation, id_step, "onlydigits", onlydigits );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "CreditCardValidatorMeta.Exception.UnableToSaveStepInfo" )
+ id_step, e );
}
}
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 = "";
String realresultfieldname = transMeta.environmentSubstitute( resultfieldname );
if ( Utils.isEmpty( realresultfieldname ) ) {
error_message = BaseMessages.getString( PKG, "CreditCardValidatorMeta.CheckResult.ResultFieldMissing" );
cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, error_message, stepMeta );
remarks.add( cr );
} else {
error_message = BaseMessages.getString( PKG, "CreditCardValidatorMeta.CheckResult.ResultFieldOK" );View on GitHub (pinned to f3058517a1)