{"record":{"id":"f2b1dd7e7db7b4b2","repo":"pentaho/pentaho-kettle","slug":"error-0001-cannot-load-job-entry-from-xml-node-f2b1dd","errorCode":"ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node","errorMessage":"JobEntryFilesExist.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node","messagePattern":"JobEntryFilesExist\\.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/filesexist/JobEntryFilesExist.java","lineNumber":124,"sourceCode":"    try {\n      super.loadXML( entrynode, databases, slaveServers );\n      filename = XMLHandler.getTagValue( entrynode, \"filename\" );\n\n      Node fields = XMLHandler.getSubNode( entrynode, \"fields\" );\n\n      // How many field arguments?\n      int nrFields = XMLHandler.countNodes( fields, \"field\" );\n      allocate( nrFields );\n\n      // Read them all...\n      for ( int i = 0; i < nrFields; i++ ) {\n        Node fnode = XMLHandler.getSubNodeByNr( fields, \"field\", i );\n\n        arguments[i] = XMLHandler.getTagValue( fnode, \"name\" );\n\n      }\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"JobEntryFilesExist.ERROR_0001_Cannot_Load_Job_Entry_From_Xml_Node\", xe.getMessage() ) );\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\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 ) {","sourceCodeStart":106,"sourceCodeEnd":142,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/filesexist/JobEntryFilesExist.java#L106-L142","documentation":"Thrown by JobEntryFilesExist.loadXML when the 'files exist' job entry cannot be deserialized from its XML node. Unlike some siblings it appends xe.getMessage() to the localized message but does NOT chain the cause, so the original stack is lost. It indicates the entry's field list XML could not be parsed.","triggerScenarios":"Loading a .kjb whose <entry type='filesexist'> node has a malformed or missing <fields> section with <field><name> children, or whose base attributes fail to parse.","commonSituations":"Hand-edited .kjb with wrong field structure; XML truncated mid-fields; version drift changing the entry's XML layout.","solutions":["Re-create the entry in Spoon to regenerate correct fields XML","Ensure the node has <fields><field><name>...</name></field>...</fields> structure","Note the message contains xe.getMessage() — use it to locate the parse problem","Restore the .kjb from a known-good copy"],"exampleFix":"// before (missing fields wrapper)\n<entry name='FilesExist'><name>a.txt</name></entry>\n// after\n<entry name='FilesExist'><fields><field><name>a.txt</name></field></fields></entry>","handlingStrategy":"validation","validationCode":"// Java: check fields structure before loading\nNode fields = XMLHandler.getSubNode(entrynode, \"fields\");\nif (fields == null || XMLHandler.countNodes(fields, \"field\") == 0) {\n    throw new IllegalArgumentException(\"filesexist entry missing <fields>/<field><name>\");\n}","typeGuard":null,"tryCatchPattern":"try {\n    jobEntry.loadXML(entrynode, databases, slaveServers, rep, metaStore);\n} catch (KettleXMLException e) {\n    logError(\"Corrupt filesexist entry XML: \" + e.getMessage());\n    // note: cause is not chained here; rely on getMessage()\n}","preventionTips":["Never generate entry XML without the <fields> wrapper","Keep each argument in its own <field><name> element","Diff .kjb changes in VCS to catch structural edits","Test-load generated jobs before deploying"],"tags":["xml","deserialization","job-entry"],"backgroundTag":"xml-parse-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"}