{"record":{"id":"d4e533ca5d3898bf","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-job-entry-of-type-create-folder-from-the-d4e533","errorCode":null,"errorMessage":"Unable to load job entry of type 'create Folder' from the repository for 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/folderisempty/JobEntryFolderIsEmpty.java","lineNumber":121,"sourceCode":"      super.loadXML( entrynode, databases, slaveServers );\n      foldername = XMLHandler.getTagValue( entrynode, \"foldername\" );\n      includeSubfolders = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"include_subfolders\" ) );\n      specifywildcard = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"specify_wildcard\" ) );\n      wildcard = XMLHandler.getTagValue( entrynode, \"wildcard\" );\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      includeSubfolders = rep.getJobEntryAttributeBoolean( id_jobentry, \"include_subfolders\" );\n      specifywildcard = rep.getJobEntryAttributeBoolean( id_jobentry, \"specify_wildcard\" );\n      wildcard = rep.getJobEntryAttributeString( id_jobentry, \"wildcard\" );\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(), \"include_subfolders\", includeSubfolders );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"specify_wildcard\", specifywildcard );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"wildcard\", wildcard );\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 setSpecifyWildcard( boolean specifywildcard ) {","sourceCodeStart":103,"sourceCodeEnd":139,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/folderisempty/JobEntryFolderIsEmpty.java#L103-L139","documentation":"Thrown by JobEntryFolderIsEmpty.loadRep when reading the job entry's attributes (foldername, include_subfolders, specify_wildcard, wildcard) from the repository fails with a KettleException. The original database/repository exception is attached as the cause. It indicates the 'Folder is empty' job entry could not be hydrated from the repository, despite the message text saying 'create Folder' (a copy-paste bug in the message).","triggerScenarios":"Calling loadRep on a JobEntryFolderIsEmpty when the underlying repository call rep.getJobEntryAttributeString/Boolean throws a KettleException — e.g. the r_jobentry_attribute rows are missing/corrupt, the repository connection dropped mid-read, or id_jobentry points to a nonexistent entry.","commonSituations":"Repository database unavailable or network failure while opening a job; a partially saved or corrupted job entry row; an id_jobentry from a different/older repository schema being passed in; repository metadata tables purged or migrated incorrectly.","solutions":["Inspect the cause (KettleException dbe) to find the real repository/database error and fix connectivity or schema issues.","Verify the job entry row with id_jobentry exists in the repository tables (r_jobentry / r_jobentry_attribute).","Re-save or recreate the job entry in Spoon to regenerate missing attribute rows.","If the repository is corrupt, restore from backup or export/re-import the job as XML."],"exampleFix":"// before: attributes missing in repository cause load to fail\nJobEntryFolderIsEmpty entry = new JobEntryFolderIsEmpty();\nentry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n// after: guard against missing/corrupt entry and surface the cause\ntry {\n  if (rep.getJobEntryAttributeString(idJobEntry, \"foldername\") == null) {\n    throw new KettleException(\"Entry \" + idJobEntry + \" has no foldername attribute; re-save the entry\");\n  }\n  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  logError(\"FolderIsEmpty load failed: \" + e.getCause(), e);\n}","handlingStrategy":"try-catch","validationCode":"if (idJobEntry == null || idJobEntry.getId() == null) {\n  throw new KettleException(\"No repository id for FolderIsEmpty entry; entry was never saved\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  Throwable cause = e.getCause();\n  logError(\"Repository read failed for id_jobentry=\" + idJobEntry + \": \" + (cause != null ? cause.getMessage() : e.getMessage()));\n  // recover: re-save entry or fall back to XML load\n}","preventionTips":["Keep the repository database healthy and monitor connectivity before opening jobs.","Avoid hand-editing repository tables; use Spoon to modify job entries.","Back up the repository before migrations or bulk deletes.","Always save job entries through Spoon so all attribute rows are written."],"tags":["kettle","repository","job-entry","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"}