pentaho/pentaho-kettle · error · KettleException
JobEntrySetVariables.Meta.UnableLoadRep
Error message
JobEntrySetVariables.Meta.UnableLoadRep
What it means
This KettleException is thrown in loadRep when reading the Set Variables entry's variable rows (variable_name, variable_value, variable_type) from the repository fails with a KettleException. The message includes the id_jobentry and the underlying error text, with the original exception chained as cause. It identifies a repository read failure for this entry's variable list.
Solutions
- Check the chained cause for the real DB error and restore repository connectivity
- Verify R_JOBENTRY_ATTRIBUTE rows for this id_jobentry; re-save the entry from Spoon to rewrite them
- If row counts mismatch, correct or delete the entry's attribute rows and re-enter variables in Spoon
- Repair the repository schema with Pentaho repair tools if corruption is widespread
Example fix
// before
entry.loadRep(rep, metaStore, idJobentry, databases, slaveServers);
// after
try {
entry.loadRep(rep, metaStore, idJobentry, databases, slaveServers);
} catch (KettleException e) {
logError("Cannot load Set Variables entry " + idJobentry + ": " + e.getMessage(), e);
// inspect R_JOBENTRY_ATTRIBUTE rows, then re-save entry
} Defensive patterns
Strategy: try-catch
Validate before calling
if (id_jobentry == null) throw new IllegalArgumentException("id_jobentry is null");
if (!rep.isConnected()) throw new IllegalStateException("Repository not connected"); Try / catch
try {
entry.loadRep(rep, metaStore, idJobentry, databases, slaveServers);
} catch (KettleException e) {
logError("Repository load failed for id " + id_jobentry + ": " + e.getMessage(), e);
// verify attribute rows / re-save entry from Spoon
} Prevention
- Keep repository DB backups and verify after migrations
- Re-save job entries after repository restores to rewrite attributes
- Match PDI client and repository schema versions
- Monitor DB connectivity during batch job loading
When it happens
Trigger: Loading the entry from a repository when rep.getJobEntryAttributeString(id, a, ...) throws: DB unavailable, missing/corrupt attribute rows for the stored variable count (argnr), or invalid id_jobentry.
Common situations: Repository rows partially deleted after a failed save; argnr (nr of variables) stored larger than actual attribute rows; repository migration lost data; DB connectivity blips.
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
- AccessInputMeta.Exception.ErrorSavingToRepository
- CloneRowMeta.Exception.UnexpectedErrorReadingStepInfo
- ColumnExistsMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/49a3163e07dd0248.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/setvariables/JobEntrySetVariables.java:191
List<SlaveServer> slaveServers ) throws KettleException {
try {
replaceVars = rep.getJobEntryAttributeBoolean( id_jobentry, "replacevars" );
filename = rep.getJobEntryAttributeString( id_jobentry, "filename" );
fileVariableType = getVariableType( rep.getJobEntryAttributeString( id_jobentry, "file_variable_type" ) );
// How many variableName?
int argnr = rep.countNrJobEntryAttributes( id_jobentry, "variable_name" );
allocate( argnr );
// Read them all...
for ( int a = 0; a < argnr; a++ ) {
variableName[a] = rep.getJobEntryAttributeString( id_jobentry, a, "variable_name" );
variableValue[a] = rep.getJobEntryAttributeString( id_jobentry, a, "variable_value" );
variableType[a] = getVariableType( rep.getJobEntryAttributeString( id_jobentry, a, "variable_type" ) );
}
} catch ( KettleException dbe ) {
throw new KettleException( BaseMessages.getString( PKG, "JobEntrySetVariables.Meta.UnableLoadRep", String
.valueOf( id_jobentry ), dbe.getMessage() ), dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "replacevars", replaceVars );
rep.saveJobEntryAttribute( id_job, getObjectId(), "filename", filename );
rep.saveJobEntryAttribute(
id_job, getObjectId(), "file_variable_type", getVariableTypeCode( fileVariableType ) );
// save the variableName...
if ( variableName != null ) {
for ( int i = 0; i < variableName.length; i++ ) {
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "variable_name", variableName[i] );
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "variable_value", variableValue[i] );
rep.saveJobEntryAttribute(View on GitHub (pinned to f3058517a1)