{"record":{"id":"d466a78798d094e1","repo":"pentaho/pentaho-kettle","slug":"jobdostounix-error-exception-unableloadrep","errorCode":null,"errorMessage":"JobDosToUnix.Error.Exception.UnableLoadRep","messagePattern":"JobDosToUnix\\.Error\\.Exception\\.UnableLoadRep","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/dostounix/JobEntryDosToUnix.java","lineNumber":272,"sourceCode":"      nr_errors_less_than = rep.getJobEntryAttributeString( id_jobentry, \"nr_errors_less_than\" );\n      success_condition = rep.getJobEntryAttributeString( id_jobentry, \"success_condition\" );\n      resultfilenames = rep.getJobEntryAttributeString( id_jobentry, \"resultfilenames\" );\n\n      // How many arguments?\n      int argnr = rep.countNrJobEntryAttributes( id_jobentry, \"source_filefolder\" );\n      allocate( argnr );\n\n      // Read them all...\n      for ( int a = 0; a < argnr; a++ ) {\n        source_filefolder[a] = rep.getJobEntryAttributeString( id_jobentry, a, \"source_filefolder\" );\n        wildcard[a] = rep.getJobEntryAttributeString( id_jobentry, a, \"wildcard\" );\n        conversionTypes[a] =\n          getConversionTypeByCode( Const.NVL(\n            rep.getJobEntryAttributeString( id_jobentry, \"ConversionType\" ), \"\" ) );\n      }\n    } catch ( KettleException dbe ) {\n\n      throw new KettleException( BaseMessages.getString( PKG, \"JobDosToUnix.Error.Exception.UnableLoadRep\" )\n        + id_jobentry, dbe );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"arg_from_previous\", arg_from_previous );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"include_subfolders\", include_subfolders );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"nr_errors_less_than\", nr_errors_less_than );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"success_condition\", success_condition );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"resultfilenames\", resultfilenames );\n\n      // save the arguments...\n      if ( source_filefolder != null ) {\n        for ( int i = 0; i < source_filefolder.length; i++ ) {\n          rep.saveJobEntryAttribute( id_job, getObjectId(), i, \"source_filefolder\", source_filefolder[i] );\n          rep.saveJobEntryAttribute( id_job, getObjectId(), i, \"wildcard\", wildcard[i] );\n          rep.saveJobEntryAttribute(","sourceCodeStart":254,"sourceCodeEnd":290,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/dostounix/JobEntryDosToUnix.java#L254-L290","documentation":"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.","triggerScenarios":"Calling loadRep() during job load from a DB repository when the ConversionType/name attribute SELECTs throw KettleException: connection lost, missing table, or repository error.","commonSituations":"Repository schema drift after Pentaho upgrade; DB connection reset; missing attribute rows for the entry id; insufficient SELECT privileges.","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"],"exampleFix":"// before\nentry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n// after\ntry {\n  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  logError(\"UnableLoadRep for id \" + idJobEntry + \": \" + e.getCause());\n  throw e;\n}","handlingStrategy":"try-catch","validationCode":"if (rep instanceof KettleDatabaseRepository\n    && !((KettleDatabaseRepository) rep).isConnected()) {\n  throw new IllegalStateException(\"Repository must be connected before loadRep\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  logError(\"UnableLoadRep id=\" + idJobEntry + \" cause=\" + e.getCause());\n  throw e;\n}","preventionTips":["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"],"tags":["kettle","database","persistence","job-entry"],"backgroundTag":"database-query-failed","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}