{"record":{"id":"771a280dd1aed60c","repo":"pentaho/pentaho-kettle","slug":"error-0001","errorCode":"Error_0001","errorMessage":"JobEntryDeleteFile.Error_0001_Unable_To_Load_Job_From_Xml_Node","messagePattern":"JobEntryDeleteFile\\.Error_0001_Unable_To_Load_Job_From_Xml_Node","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/deletefile/JobEntryDeleteFile.java","lineNumber":100,"sourceCode":"\n    retval.append( super.getXML() );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"filename\", filename ) );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"fail_if_file_not_exists\", failIfFileNotExists ) );\n    if ( parentJobMeta != null ) {\n      parentJobMeta.getNamedClusterEmbedManager().registerUrl( filename );\n    }\n\n    return retval.toString();\n  }\n\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      filename = XMLHandler.getTagValue( entrynode, \"filename\" );\n      failIfFileNotExists = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"fail_if_file_not_exists\" ) );\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"JobEntryDeleteFile.Error_0001_Unable_To_Load_Job_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      filename = rep.getJobEntryAttributeString( id_jobentry, \"filename\" );\n      failIfFileNotExists = rep.getJobEntryAttributeBoolean( id_jobentry, \"fail_if_file_not_exists\" );\n    } catch ( KettleException dbe ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"JobEntryDeleteFile.ERROR_0002_Unable_To_Load_From_Repository\", 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(), \"filename\", filename );","sourceCodeStart":82,"sourceCodeEnd":118,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/deletefile/JobEntryDeleteFile.java#L82-L118","documentation":"JobEntryDeleteFile.loadXML throws this KettleXMLException (code Error_0001) when reading the delete-file entry's XML node fails — super.loadXML, the 'filename' tag, or the 'fail_if_file_not_exists' tag. It indicates the entry could not be deserialized from the .kjb document.","triggerScenarios":"loadXML with a malformed or missing entrynode, an XMLHandler error while fetching tags, or a KettleXMLException from super.loadXML.","commonSituations":"Truncated or hand-edited .kjb file; XML generated by a different Pentaho version missing expected tags; copy-paste of an incomplete <entry> block; file encoding corruption.","solutions":["Validate the .kjb XML parses and the <entry> block contains <filename> and <fail_if_file_not_exists> tags","Recreate the Delete file entry in Spoon and re-save","Use xmllint or similar to find the malformed section","Check the chained cause (xe) to see whether failure came from super.loadXML or a missing tag"],"exampleFix":"// before\n<entry>\n  <name>Delete file</name>\n</entry>\n// after\n<entry>\n  <name>Delete file</name>\n  <filename>/tmp/old.log</filename>\n  <fail_if_file_not_exists>N</fail_if_file_not_exists>\n</entry>","handlingStrategy":"validation","validationCode":"// before loadXML\nNode entrynode = XMLHandler.getSubNode(jobnode, \"entry\");\nif (entrynode == null) throw new KettleXMLException(\"Missing <entry> node\");\nif (XMLHandler.getTagValue(entrynode, \"filename\") == null) {\n  throw new KettleXMLException(\"Missing <filename> in Delete file entry\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  entry.loadXML(entrynode, databases, slaveServers, rep, metaStore);\n} catch (KettleXMLException e) {\n  log.error(\"DeleteFile entry XML invalid (code Error_0001)\", e.getCause());\n  // repair the <entry> node in the .kjb or recreate in Spoon\n  throw e;\n}","preventionTips":["Validate .kjb XML structure before import","Include <filename> and <fail_if_file_not_exists> in generated entry templates","Avoid manual edits to job XML; use Spoon","Keep job files under version control"],"tags":["kettle","xml","parsing"],"backgroundTag":"xml-parse-error","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"}