pentaho/pentaho-kettle · error · KettleException
Unable to load job entry of type 'xslt' from the repository…
Error message
Unable to load job entry of type 'xslt' from the repository for id_jobentry=<id_jobentry>
What it means
JobEntryXSLT.loadRep rethrows KettleException when reading the entry's attributes, including the indexed output_property_name/output_property_value rows, from the repository fails for the given id_jobentry.
Solutions
- Check the wrapped KettleException cause
- Verify repository database connectivity
- Confirm the numbered attribute rows exist for this id_jobentry
- Repair or upgrade the repository schema
Defensive patterns
Strategy: try-catch
Try / catch
try {
entry.loadRep( rep, metaStore, id_jobentry, databases, slaveServers );
} catch ( KettleException e ) {
logError( "Repository load failed for id_jobentry=" + id_jobentry + ": " + e.getCause(), e );
throw e;
} Prevention
- Monitor repository DB availability
- Avoid direct database manipulation of repository tables
- Keep repository schema and PDI versions aligned
- Maintain repository backups
When it happens
Trigger: Loading an XSLT job entry from the repository where getJobEntryAttributeString throws KettleException (DB outage, missing rows, schema mismatch).
Common situations: Repository database unreachable; r_jobentry_attribute rows missing or corrupted; repository schema version drift between PDI versions.
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
- Edi2Xml.Exception.UnableToSaveStepInfoToRepository
- Edi2Xml.Exception.UnexpectedErrorInReadingStepInfo
- error reading step with id_step=
- GetSequenceMeta.Exception.UnableToReadStepInfo
- GetSequenceMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/9ca82795dd425125.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/xml/core/src/main/java/org/pentaho/di/job/entries/xslt/JobEntryXSLT.java:265
xsltfactory = rep.getJobEntryAttributeString( id_jobentry, "xsltfactory" );
if ( xsltfactory == null ) {
xsltfactory = FACTORY_JAXP;
}
int nrparams = rep.countNrJobEntryAttributes( id_jobentry, "param_name" );
int nroutputprops = rep.countNrJobEntryAttributes( id_jobentry, "output_property_name" );
allocate( nrparams, nroutputprops );
for ( int i = 0; i < nrparams; i++ ) {
parameterField[i] = rep.getJobEntryAttributeString( id_jobentry, i, "param_field" );
parameterName[i] = rep.getJobEntryAttributeString( id_jobentry, i, "param_name" );
}
for ( int i = 0; i < nroutputprops; i++ ) {
outputPropertyName[i] = rep.getJobEntryAttributeString( id_jobentry, i, "output_property_name" );
outputPropertyValue[i] = rep.getJobEntryAttributeString( id_jobentry, i, "output_property_value" );
}
} catch ( KettleException dbe ) {
throw new KettleException( "Unable to load job entry of type 'xslt' from the repository for id_jobentry="
+ id_jobentry, dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "xmlfilename", xmlfilename );
rep.saveJobEntryAttribute( id_job, getObjectId(), "xslfilename", xslfilename );
rep.saveJobEntryAttribute( id_job, getObjectId(), "outputfilename", outputfilename );
rep.saveJobEntryAttribute( id_job, getObjectId(), "iffileexists", iffileexists );
rep.saveJobEntryAttribute( id_job, getObjectId(), "addfiletoresult", addfiletoresult );
rep.saveJobEntryAttribute( id_job, getObjectId(), "filenamesfromprevious", filenamesfromprevious );
rep.saveJobEntryAttribute( id_job, getObjectId(), "xsltfactory", xsltfactory );
for ( int i = 0; i < parameterName.length; i++ ) {
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "param_field", parameterField[i] );
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "param_name", parameterName[i] );
}View on GitHub (pinned to f3058517a1)