{"record":{"id":"9be8c294e1e264df","repo":"pentaho/pentaho-kettle","slug":"jobentrydeletefolders-unabletoloadfromrepo","errorCode":null,"errorMessage":"JobEntryDeleteFolders.UnableToLoadFromRepo","messagePattern":"JobEntryDeleteFolders\\.UnableToLoadFromRepo","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/deletefolders/JobEntryDeleteFolders.java","lineNumber":172,"sourceCode":"  }\n\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,\n    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      argFromPrevious = rep.getJobEntryAttributeBoolean( id_jobentry, \"arg_from_previous\" );\n      limit_folders = rep.getJobEntryAttributeString( id_jobentry, \"limit_folders\" );\n      success_condition = rep.getJobEntryAttributeString( id_jobentry, \"success_condition\" );\n\n      // How many arguments?\n      int argnr = rep.countNrJobEntryAttributes( id_jobentry, \"name\" );\n      allocate( argnr );\n\n      // Read them all...\n      for ( int a = 0; a < argnr; a++ ) {\n        arguments[a] = rep.getJobEntryAttributeString( id_jobentry, a, \"name\" );\n      }\n    } catch ( KettleException dbe ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"JobEntryDeleteFolders.UnableToLoadFromRepo\", String\n        .valueOf( 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\", argFromPrevious );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"limit_folders\", limit_folders );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"success_condition\", success_condition );\n\n      // save the arguments...\n      if ( arguments != null ) {\n        for ( int i = 0; i < arguments.length; i++ ) {\n          rep.saveJobEntryAttribute( id_job, getObjectId(), i, \"name\", arguments[i] );\n        }\n      }\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"JobEntryDeleteFolders.UnableToSaveToRepo\", String","sourceCodeStart":154,"sourceCodeEnd":190,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/deletefolders/JobEntryDeleteFolders.java#L154-L190","documentation":"Thrown when reading the 'Delete Folders' job entry's stored folder arguments back from the repository fails. loadRep() wraps any KettleException from rep.getJobEntryAttributeString() into this message, including the job entry id. It means the metadata could not be loaded from the database.","triggerScenarios":"Calling loadRep() (during job load from a database repository) when the SELECT of 'name' attributes for the entry fails: connection lost, table missing, or a generic repository error mid-load.","commonSituations":"Repository schema out of date after Pentaho upgrade; DB connection reset during load; orphaned job entry rows whose attributes cannot be resolved; wrong id_jobentry passed manually.","solutions":["Check the chained KettleDatabaseException for the real SQL error and fix connectivity/permissions","Run repository upgrade scripts to align r_jobentry_attribute with your Kettle version","Verify the id_jobentry exists; re-save the job from Spoon to rebuild its attributes","Retry the load once the database is healthy"],"exampleFix":"// before\nentry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers); // throws on repo failure\n// after\ntry {\n  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  logError(\"Load failed for entry id \" + idJobEntry + \": \" + e.getCause());\n  throw e;\n}","handlingStrategy":"try-catch","validationCode":"// before loadRep: check repository reachability\nif (rep instanceof KettleDatabaseRepository\n    && !((KettleDatabaseRepository) rep).isConnected()) {\n  throw new IllegalStateException(\"Repository not connected; cannot load entry \" + idJobEntry);\n}","typeGuard":null,"tryCatchPattern":"try {\n  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  logError(\"Load failed for entry \" + idJobEntry + \", cause: \" + e.getCause());\n  throw e;\n}","preventionTips":["Ping the repository DB before long metadata loads","Run repository upgrade scripts after Pentaho upgrades","Grant repository user SELECT on r_jobentry_attribute","Log chained causes to distinguish connectivity vs schema issues"],"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"}