pentaho/pentaho-kettle · error · KettleException
SelectValuesMeta.Exception.UnableToSaveStepInfoToRepository
Error message
SelectValuesMeta.Exception.UnableToSaveStepInfoToRepository
What it means
saveRep() wraps any exception while persisting SelectValues step attributes into a repository in a KettleException with key 'SelectValuesMeta.Exception.UnableToSaveStepInfoToRepository' plus the id_step. It means step configuration could not be written to the repository.
Solutions
- Verify the repository user has write privileges
- Check repository DB connectivity and free space, then retry the save
- Reconnect/re-login to the repository in Spoon and save again
- Inspect the cause for constraint errors and shorten/fix offending attribute values
Defensive patterns
Strategy: try-catch
Validate before calling
// before save
if (!repository.getSecurityProvider() != null /* or equivalent write check */) { /* verify user can write */ }
if (id_step == null) throw new IllegalStateException("id_step is null; step not registered"); Try / catch
try { meta.saveRep(rep, metaStore, transId, stepId); } catch (KettleException e) { logError("Repository save failed for id_step=" + stepId + ": " + e.getCause(), e); throw e; } Prevention
- Confirm repository user has write privileges before saving
- Avoid saving over unstable DB connections
- Export to XML as a fallback before risky repository operations
- Monitor repository disk space and constraint errors
When it happens
Trigger: Calling saveRep() when one of many rep.saveStepAttribute calls fails — read-only repository, lost DB connection, constraint violation, or attribute value too large for the column.
Common situations: Saving a transformation as a user without write permission; repository database disk full or connection dropped mid-save; migrating transformations between repositories with different schemas.
Related errors
- AppendMeta.Exception.UnableToSaveStepInfo
- CombinationLookupMeta.Exception.UnableToSaveStepInfo
- DynamicSQLRowMeta.Exception.UnableToSaveStepInfo
- ExecProcessMeta.Exception.UnableToSaveStepInfo
- ExecSQLRowMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/da45ebff1c7d9635.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/selectvalues/SelectValuesMeta.java:624
.getConversionMask() );
rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "META_DATE_FORMAT_LENIENT" ), Boolean
.toString( meta[i].isDateFormatLenient() ) );
rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "META_DATE_FORMAT_LOCALE" ), meta[i]
.getDateFormatLocale() == null ? null : meta[i].getDateFormatLocale().toString() );
rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "META_DATE_FORMAT_TIMEZONE" ), meta[i]
.getDateFormatTimeZone() == null ? null : meta[i].getDateFormatTimeZone().toString() );
rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "META_LENIENT_STRING_TO_NUMBER" ), Boolean
.toString( meta[i].isLenientStringToNumber() ) );
rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "META_DECIMAL" ), meta[i]
.getDecimalSymbol() );
rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "META_GROUPING" ), meta[i]
.getGroupingSymbol() );
rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "META_CURRENCY" ), meta[i]
.getCurrencySymbol() );
rep.saveStepAttribute( id_transformation, id_step, i, getRepCode( "META_ENCODING" ), meta[i].getEncoding() );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG,
"SelectValuesMeta.Exception.UnableToSaveStepInfoToRepository" ) + 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;
if ( prev != null && prev.size() > 0 ) {
cr =
new CheckResult( CheckResultInterface.TYPE_RESULT_OK, BaseMessages.getString( PKG,
"SelectValuesMeta.CheckResult.StepReceivingFields", prev.size() + "" ), stepMeta );
remarks.add( cr );
/*View on GitHub (pinned to f3058517a1)