{"record":{"id":"0f421cd5f7fe9fb7","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-job-entry-of-type-create-folder-from-the","errorCode":null,"errorMessage":"Unable to load job entry of type 'create Folder' from the repository for id_jobentry=${id_jobentry}","messagePattern":"Unable to load job entry of type 'create Folder' from the repository for id_jobentry=(.+?)","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/createfolder/JobEntryCreateFolder.java","lineNumber":105,"sourceCode":"\n  public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers,\n    Repository rep, IMetaStore metaStore ) throws KettleXMLException {\n    try {\n      super.loadXML( entrynode, databases, slaveServers );\n      foldername = XMLHandler.getTagValue( entrynode, \"foldername\" );\n      failOfFolderExists = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"fail_of_folder_exists\" ) );\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( \"Unable to load job entry of type 'create folder' from XML node\", xe );\n    }\n  }\n\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,\n    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      foldername = rep.getJobEntryAttributeString( id_jobentry, \"foldername\" );\n      failOfFolderExists = rep.getJobEntryAttributeBoolean( id_jobentry, \"fail_of_folder_exists\" );\n    } catch ( KettleException dbe ) {\n      throw new KettleException(\n        \"Unable to load job entry of type 'create Folder' from the repository for id_jobentry=\" + id_jobentry,\n        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(), \"foldername\", foldername );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"fail_of_folder_exists\", failOfFolderExists );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( \"Unable to save job entry of type 'create Folder' to the repository for id_job=\"\n        + id_job, dbe );\n    }\n  }\n\n  public void setFoldername( String foldername ) {\n    this.foldername = foldername;\n  }","sourceCodeStart":87,"sourceCodeEnd":123,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/createfolder/JobEntryCreateFolder.java#L87-L123","documentation":"Kettle wraps any KettleDatabaseException thrown while reading a 'create Folder' job entry's attributes (foldername, fail_of_folder_exists) from the repository in this KettleException. It preserves the underlying cause, so the real repository/database error is chained as the cause. It is a load-path failure in JobEntryCreateFolder.loadRep.","triggerScenarios":"Calling JobEntryCreateFolder.loadRep with a repository that throws KettleDatabaseException on getJobEntryAttributeString/getJobEntryAttributeBoolean for the given id_jobentry — e.g. the row for that job entry id no longer exists, the repository connection is broken, or the r_jobentry_attribute table is missing/corrupt.","commonSituations":"Repository database was restored/migrated and job entry rows were lost; network drop to the repository DB mid-load; opening a job saved by a newer Pentaho version whose schema changed; shared repository metadata (metastore) is inaccessible.","solutions":["Check the chained cause (KettleException.getCause()) for the actual database error","Verify repository connectivity and that id_jobentry exists in r_jobentry / r_jobentry_attribute","Recreate the job entry in the repository (re-save the job) to regenerate its attributes","If upgrading, run the repository upgrade scripts so the attribute table matches your Pentaho version"],"exampleFix":"// before\njobEntry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n// after\ntry {\n  jobEntry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  logError(\"Repo load failed for id_jobentry=\" + idJobEntry + \": \" + (e.getCause() != null ? e.getCause().getMessage() : e.getMessage()));\n  throw e;\n}","handlingStrategy":"try-catch","validationCode":"// before loadRep\nif (rep == null || id_jobentry == null) throw new IllegalArgumentException(\"Repository and id_jobentry required\");\nif (!rep.isConnected()) throw new IllegalStateException(\"Repository not connected\");","typeGuard":"boolean isLoadFailure(KettleException e) {\n  return e.getMessage() != null && e.getMessage().contains(\"Unable to load job entry\");\n}","tryCatchPattern":"try {\n  jobEntry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  Throwable cause = e.getCause();\n  log.error(\"JobEntryCreateFolder load failed for id_jobentry=\" + idJobEntry, cause);\n  if (cause instanceof KettleDatabaseException) {\n    // check repository connectivity / row existence, then retry or recreate entry\n  }\n  throw e;\n}","preventionTips":["Always verify repository connectivity before loading jobs","Keep repository schema upgraded to your Pentaho version","Back up r_jobentry_attribute before repository maintenance","Log getCause() so the real database error is visible"],"tags":["kettle","repository","persistence"],"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"}