pentaho/pentaho-kettle · error · KettleException
LDAPInputMeta.Exception.ErrorSavingToRepository
LDAPInputMeta.Exception.ErrorSavingToRepository
Error message
LDAPInputMeta.Exception.ErrorSavingToRepository
What it means
This KettleException is thrown by LDAPInputMeta.saveRep() when saving any of the LDAP Input step's attributes to the Pentaho repository fails. The repository layer (rep.saveStepAttribute) signals a persistence problem (connection, schema, or constraint issue) and this wraps it with the step id for context. It indicates the transformation could not be persisted, not that the LDAP step itself is misconfigured.
Solutions
- Check the underlying cause exception (getCause) for the repository/database error and fix that first
- Verify the repository database is reachable and credentials/permissions allow writes
- Run the repository upgrade scripts so the schema matches the Pentaho version
- Save the transformation as a file (.ktr) as a workaround while repairing the repository
Example fix
// before
try { transMeta.saveRep(rep, repoDirectory, transName, desc); } catch (KettleException e) { /* check cause */ }
// after
try {
transMeta.saveRep(rep, repoDirectory, transName, desc);
} catch (KettleException e) {
Throwable cause = e.getCause();
log.logError("Repository save failed (check DB connectivity/schema): " + cause, cause);
throw e;
} Defensive patterns
Strategy: try-catch
Validate before calling
// Before saving: verify repository connectivity
if (rep == null || !rep.isConnected()) { throw new IllegalStateException("Repository not connected"); } Try / catch
try {
transMeta.saveRep(rep, dir, name, desc);
} catch (KettleException e) {
Throwable cause = e.getCause();
log.error("LDAP Input step could not be saved (step id " + e.getMessage() + ")", cause);
// inspect cause: DB connectivity / schema / permissions
} Prevention
- Keep the repository schema upgraded to match the Pentaho version
- Grant the repository user write privileges
- Test repository saves with a trivial transformation after DB maintenance
When it happens
Trigger: Any Exception from rep.saveStepAttribute(...) while persisting LDAP Input fields: trim type codes, repeat flags, search scope, or connection attributes during saveRep with a repository-backed transformation.
Common situations: Repository database is down or connection dropped mid-save; repository schema is outdated (missing kettle attribute tables/columns); repository user lacks INSERT/UPDATE permissions; saving an oversized value exceeding a column length.
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/6e6c894dd8f9c8a0.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/ldap/impl/src/main/java/org/pentaho/di/trans/steps/ldapinput/LDAPInputMeta.java:905
rep.saveStepAttribute( id_transformation, id_step, i, "field_name", field.getName() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_attribute", field.getAttribute() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_attribute_fetch_as", field
.getFetchAttributeAsCode() );
rep.saveStepAttribute( id_transformation, id_step, i, "sorted_key", field.isSortedKey() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_type", field.getTypeDesc() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_format", field.getFormat() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_currency", field.getCurrencySymbol() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_decimal", field.getDecimalSymbol() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_group", field.getGroupSymbol() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_length", field.getLength() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_precision", field.getPrecision() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_trim_type", field.getTrimTypeCode() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_repeat", field.isRepeated() );
}
rep.saveStepAttribute( id_transformation, id_step, "searchScope", getSearchScopeCode( searchScope ) );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "LDAPInputMeta.Exception.ErrorSavingToRepository", "" + 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;
// Check output fields
if ( inputFields.length == 0 ) {
cr =
new CheckResult( CheckResult.TYPE_RESULT_ERROR, BaseMessages.getString(
PKG, "LDAPInputMeta.CheckResult.NoOutputFields" ), stepMeta );
} else {
cr =View on GitHub (pinned to f3058517a1)