pentaho/pentaho-kettle · error · KettleException
JobEntryColumnsExist.Meta.UnableLoadRep
Error message
JobEntryColumnsExist.Meta.UnableLoadRep
What it means
JobEntryColumnsExist.loadRep wraps any KettleDatabaseException from the repository while reading the entry's stored field names (row count plus per-row 'name' attributes) into this KettleException, identifying the entry by id_jobentry.
Solutions
- Inspect the chained KettleDatabaseException for the SQL cause
- Confirm r_jobentry_attribute rows exist for the given id_jobentry
- Re-open and re-save the entry in Spoon to rebuild its attributes
- Repair repository connectivity/permissions, then reload
Example fix
// before
entry.loadRep(rep, metaStore, ObjectId.parseString("bad-id"), databases, slaveServers);
// after
ObjectId id = rep.getJobEntryId(jobMeta, "columns-exist");
if (id != null) entry.loadRep(rep, metaStore, id, databases, slaveServers); Defensive patterns
Strategy: try-catch
Validate before calling
if (id_jobentry == null) throw new IllegalStateException("Entry has no repository id"); Try / catch
try {
entry.loadRep(rep, metaStore, id_jobentry, databases, slaveServers);
} catch (KettleException e) {
log.error("Repo load failed for entry " + id_jobentry + ": " + e.getCause(), e);
} Prevention
- Verify r_jobentry_attribute integrity after DB restores
- Use one consistent repository for authoring and execution
- Check DB connectivity before batch-loading job metadata
When it happens
Trigger: Calling loadRep when rep.getJobEntryAttributeString / count reads fail against the repository database for this entry's id.
Common situations: Repository rows missing after restore/migration; DB connection or permission failure; schema mismatch after upgrade; corrupted r_jobentry_attribute data.
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
- JobEntryCheckFilesLocked.UnableToLoadFromRepo
- JobEntryCheckFilesLocked.UnableToSaveToRepo
- JobEntryColumnsExist.Meta.UnableSaveRep
- JobEntryEval.UnableToLoadFromRepo
- JobEntryEvalTableContent.UnableLoadRep
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/f16be5093df7e081.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/columnsexist/JobEntryColumnsExist.java:154
public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
List<SlaveServer> slaveServers ) throws KettleException {
try {
tablename = rep.getJobEntryAttributeString( id_jobentry, "tablename" );
schemaname = rep.getJobEntryAttributeString( id_jobentry, "schemaname" );
connection = rep.loadDatabaseMetaFromJobEntryAttribute( id_jobentry, "connection", "id_database", databases );
// How many arguments?
int argnr = rep.countNrJobEntryAttributes( id_jobentry, "name" );
arguments = new String[argnr];
// Read them all...
for ( int a = 0; a < argnr; a++ ) {
arguments[a] = rep.getJobEntryAttributeString( id_jobentry, a, "name" );
}
} catch ( KettleDatabaseException dbe ) {
throw new KettleException( BaseMessages.getString( PKG, "JobEntryColumnsExist.Meta.UnableLoadRep", ""
+ id_jobentry ), dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "tablename", tablename );
rep.saveJobEntryAttribute( id_job, getObjectId(), "schemaname", schemaname );
rep.saveDatabaseMetaJobEntryAttribute( id_job, getObjectId(), "connection", "id_database", connection );
// save the arguments...
if ( arguments != null ) {
for ( int i = 0; i < arguments.length; i++ ) {
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "name", arguments[i] );
}
}
} catch ( KettleDatabaseException dbe ) {View on GitHub (pinned to f3058517a1)