pentaho/pentaho-kettle · error · KettleException
JobDosToUnix.Error.Exception.UnableLoadRep
Error message
JobDosToUnix.Error.Exception.UnableLoadRep
What it means
Thrown when reading a 'DOS to Unix' job entry's attributes from the repository fails in loadRep(). The KettleException from rep.getJobEntryAttributeString() is rethrown with this message plus the entry id and the cause chained. The metadata could not be loaded from the database repository.
Solutions
- Inspect the chained KettleDatabaseException cause for the actual SQL error
- Restore DB connectivity and retry loading the job
- Run repository upgrade scripts to match your Kettle version
- Re-save the entry from Spoon to repopulate its attributes
Example fix
// before
entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
// after
try {
entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
logError("UnableLoadRep for id " + idJobEntry + ": " + e.getCause());
throw e;
} Defensive patterns
Strategy: try-catch
Validate before calling
if (rep instanceof KettleDatabaseRepository
&& !((KettleDatabaseRepository) rep).isConnected()) {
throw new IllegalStateException("Repository must be connected before loadRep");
} Try / catch
try {
entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);
} catch (KettleException e) {
logError("UnableLoadRep id=" + idJobEntry + " cause=" + e.getCause());
throw e;
} Prevention
- Confirm DB reachability before batch-loading jobs
- Run repository DDL upgrade scripts on version upgrades
- Verify SELECT permissions on repository tables
- Log chained causes (dbe) not just the wrapper message
When it happens
Trigger: Calling loadRep() during job load from a DB repository when the ConversionType/name attribute SELECTs throw KettleException: connection lost, missing table, or repository error.
Common situations: Repository schema drift after Pentaho upgrade; DB connection reset; missing attribute rows for the entry id; insufficient SELECT privileges.
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
- JobDosToUnix.Error.Exception.UnableSaveRep
- JobEntryDeleteFiles.UnableToSaveToRepo
- JobEntryDeleteFolders.UnableToLoadFromRepo
- JobEntryDeleteFolders.UnableToSaveToRepo
- JobEntryDeleteResultFilenames.CanNotLoadFromRep
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/d466a78798d094e1.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/dostounix/JobEntryDosToUnix.java:272
nr_errors_less_than = rep.getJobEntryAttributeString( id_jobentry, "nr_errors_less_than" );
success_condition = rep.getJobEntryAttributeString( id_jobentry, "success_condition" );
resultfilenames = rep.getJobEntryAttributeString( id_jobentry, "resultfilenames" );
// How many arguments?
int argnr = rep.countNrJobEntryAttributes( id_jobentry, "source_filefolder" );
allocate( argnr );
// Read them all...
for ( int a = 0; a < argnr; a++ ) {
source_filefolder[a] = rep.getJobEntryAttributeString( id_jobentry, a, "source_filefolder" );
wildcard[a] = rep.getJobEntryAttributeString( id_jobentry, a, "wildcard" );
conversionTypes[a] =
getConversionTypeByCode( Const.NVL(
rep.getJobEntryAttributeString( id_jobentry, "ConversionType" ), "" ) );
}
} catch ( KettleException dbe ) {
throw new KettleException( BaseMessages.getString( PKG, "JobDosToUnix.Error.Exception.UnableLoadRep" )
+ id_jobentry, dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "arg_from_previous", arg_from_previous );
rep.saveJobEntryAttribute( id_job, getObjectId(), "include_subfolders", include_subfolders );
rep.saveJobEntryAttribute( id_job, getObjectId(), "nr_errors_less_than", nr_errors_less_than );
rep.saveJobEntryAttribute( id_job, getObjectId(), "success_condition", success_condition );
rep.saveJobEntryAttribute( id_job, getObjectId(), "resultfilenames", resultfilenames );
// save the arguments...
if ( source_filefolder != null ) {
for ( int i = 0; i < source_filefolder.length; i++ ) {
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "source_filefolder", source_filefolder[i] );
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "wildcard", wildcard[i] );
rep.saveJobEntryAttribute(View on GitHub (pinned to f3058517a1)