pentaho/pentaho-kettle · error · KettleException
LDAPOutputMeta.Exception.ErrorReadingRepository
LDAPOutputMeta.Exception.ErrorReadingRepository
Error message
LDAPOutputMeta.Exception.ErrorReadingRepository
What it means
LDAPOutputMeta.readRep wraps repository deserialization in try/catch and rethrows any failure as KettleException with Exception.ErrorReadingRepository. It indicates an error while reading the step's attributes from the Pentaho repository database.
Solutions
- Verify the repository connection (test login, network, DB up)
- Re-save the step in Spoon to rewrite its repository attributes
- Check repository schema version matches your Pentaho version and run upgrade scripts if needed
- Re-enter the LDAP Output settings if specific attributes are corrupted
Example fix
// before
rep.getStepAttributeString(id_step, "trustStorePassword") // throws: repo down
// after: ensure connection first
if (rep.connect(...)) { rep.getStepAttributeString(id_step, "trustStorePassword"); } Defensive patterns
Strategy: try-catch
Validate before calling
// Verify repository reachability before loading metadata
if (!rep.testConnection().isSuccess()) {
throw new KettleException("Repository unavailable: " + rep.testConnection().getError());
} Try / catch
try {
stepMeta.readRep(rep, metaStore, idStep, databases);
} catch (KettleException e) {
logError("Failed reading LDAP Output metadata from repository: " + e.getMessage(), e);
// retry connection or rebuild the step
} Prevention
- Test repository connection before opening transformations
- Run repository upgrade scripts after Pentaho upgrades
- Back up the repository database regularly
When it happens
Trigger: Loading an LDAP Output step's settings via rep.getStepAttributeString/getStepAttributeBoolean when the repository connection fails, the step row is missing, or a stored value (e.g. encrypted trustStorePassword) cannot be decrypted.
Common situations: Repository database unreachable or dropped mid-load; step metadata deleted/renamed in the repository; corrupted stored password from a different encryption setup; repository schema mismatch after Pentaho upgrade.
Understand the failure class
Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.
Related errors
- ElasticSearchBulkMeta.Exception.ErrorReadingRepository
- ElasticSearchBulkMeta.Exception.ErrorSavingToRepository
- FileExistsMeta.Exception.UnableToSaveStepInfo
- FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- GetPreviousRowFieldMeta.Exception.UnexpectedErrorInReadingSt…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/de134e54c6131145.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/ldap/impl/src/main/java/org/pentaho/di/trans/steps/ldapoutput/LDAPOutputMeta.java:817
deleteRDN = rep.getStepAttributeBoolean( id_step, "deleteRDN" );
int nrFields = rep.countNrStepAttributes( id_step, "field_name" );
allocate( nrFields );
for ( int i = 0; i < nrFields; i++ ) {
updateLookup[i] = rep.getStepAttributeString( id_step, i, "field_name" );
updateStream[i] = rep.getStepAttributeString( id_step, i, "field_attribut" );
update[i] = Boolean.valueOf( rep.getStepAttributeBoolean( id_step, i, "value_update", true ) );
}
protocol = rep.getStepAttributeString( id_step, "protocol" );
trustStorePath = rep.getStepAttributeString( id_step, "trustStorePath" );
trustStorePassword =
Encr.decryptPasswordOptionallyEncrypted( rep.getStepAttributeString( id_step, "trustStorePassword" ) );
trustAllCertificates = rep.getStepAttributeBoolean( id_step, "trustAllCertificates" );
useCertificate = rep.getStepAttributeBoolean( id_step, "useCertificate" );
} catch ( Exception e ) {
throw new KettleException(
BaseMessages.getString( PKG, "LDAPOutputMeta.Exception.ErrorReadingRepository" ), e );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
try {
rep.saveStepAttribute( id_transformation, id_step, "useauthentication", useAuthentication );
rep.saveStepAttribute( id_transformation, id_step, "host", Host );
rep.saveStepAttribute( id_transformation, id_step, "username", userName );
rep.saveStepAttribute( id_transformation, id_step, "password", Encr
.encryptPasswordIfNotUsingVariables( password ) );
rep.saveStepAttribute( id_transformation, id_step, "port", port );
rep.saveStepAttribute( id_transformation, id_step, "dnFieldName", dnFieldName );
rep.saveStepAttribute( id_transformation, id_step, "failIfNotExist", failIfNotExist );
rep.saveStepAttribute( id_transformation, id_step, "operationType", getOperationTypeCode( operationType ) );
rep.saveStepAttribute( id_transformation, id_step, "multivaluedseparator", multiValuedSeparator );
rep.saveStepAttribute( id_transformation, id_step, "searchBase", searchBase );View on GitHub (pinned to f3058517a1)