pentaho/pentaho-kettle · error · KettleException
SalesforceInsertMeta.Exception.ErrorReadingRepository
Error message
SalesforceInsertMeta.Exception.ErrorReadingRepository
What it means
SalesforceInsertMeta.readRep() loads the step's settings from the Kettle repository (database) instead of XML. Any exception while reading step attributes — repository connectivity, missing row, schema mismatch — is rethrown as a KettleException with the localized message key 'SalesforceInsertMeta.Exception.ErrorReadingRepository'. The real cause is chained.
Solutions
- Inspect the chained cause to see whether it is a database connection, SQL, or missing-row error.
- Verify the Kettle repository database is reachable and its schema (r_step_attribute etc.) matches the PDI version.
- Re-open the transformation in Spoon to confirm the step row still exists; re-save the step to regenerate its attributes.
- If the repository is corrupted, restore from backup or re-create the transformation in a fresh repository.
Defensive patterns
Strategy: try-catch
Validate before calling
// Verify repository connectivity before loading metadata
try (Connection c = repoDataSource.getConnection()) {
if (!c.isValid(5)) throw new IllegalStateException("Repository DB unreachable");
} Try / catch
try {
TransMeta tm = repository.loadTransformation(transObjectId, null);
} catch (KettleException e) {
Throwable cause = e.getCause();
if (cause instanceof SQLException) {
// handle repository DB problem: check connectivity/schema
}
throw e;
} Prevention
- Check repository DB availability before batch metadata loads.
- Keep the Kettle repository schema upgraded to match your PDI version.
- Avoid concurrent edits/saves of the same transformation.
- Back up the repository before migrations.
When it happens
Trigger: Loading a Salesforce Insert step's metadata via Repository (loadTransMeta / StepMeta from repository) when rep.getStepAttributeString/Boolean throws: repository database down, KETTLE_* tables missing or out of schema, or the id_step no longer exists.
Common situations: Repository database upgraded/migrated with stale r_step_attribute schema; transformation deleted by another user while being loaded; network interruption to the repository DB; corrupted repository row for the step.
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
- SalesforceUpdateMeta.Exception.ErrorReadingRepository
- SalesforceUpdateMeta.Exception.ErrorSavingToRepository
- SalesforceUpsertMeta.Exception.ErrorReadingRepository
- ElasticSearchBulkMeta.Exception.ErrorReadingRepository
- ElasticSearchBulkMeta.Exception.ErrorSavingToRepository
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/c92932e96ec2045f.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/salesforce/core/src/main/java/org/pentaho/di/trans/steps/salesforceinsert/SalesforceInsertMeta.java:289
}
public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {
super.readRep( rep, metaStore, id_step, databases );
try {
setBatchSize( rep.getStepAttributeString( id_step, "batchSize" ) );
setSalesforceIDFieldName( rep.getStepAttributeString( id_step, "salesforceIDFieldName" ) );
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" );
useExternalId[i] =
Boolean.valueOf( rep.getStepAttributeBoolean( id_step, i, "field_useExternalId", false ) );
}
setRollbackAllChangesOnError( rep.getStepAttributeBoolean( id_step, "rollbackAllChangesOnError" ) );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "SalesforceInsertMeta.Exception.ErrorReadingRepository" ), e );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
super.saveRep( rep, metaStore, id_transformation, id_step );
try {
rep.saveStepAttribute( id_transformation, id_step, "batchSize", getBatchSize() );
rep.saveStepAttribute( id_transformation, id_step, "salesforceIDFieldName", getSalesforceIDFieldName() );
for ( int i = 0; i < updateLookup.length; i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, "field_name", getUpdateLookup()[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "field_attribut", getUpdateStream()[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "field_useExternalId", getUseExternalId()[i]
.booleanValue() );
}
rep.saveStepAttribute( id_transformation, id_step, "rollbackAllChangesOnError", isRollbackAllChangesOnError() );View on GitHub (pinned to f3058517a1)