{"record":{"id":"3797aabf2266a094","repo":"pentaho/pentaho-kettle","slug":"jobentrysetvariables-meta-unableloadxml","errorCode":null,"errorMessage":"JobEntrySetVariables.Meta.UnableLoadXML","messagePattern":"JobEntrySetVariables\\.Meta\\.UnableLoadXML","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/setvariables/JobEntrySetVariables.java","lineNumber":167,"sourceCode":"      filename = XMLHandler.getTagValue( entrynode, \"filename\" );\n      fileVariableType = getVariableType( XMLHandler.getTagValue( entrynode, \"file_variable_type\" ) );\n\n      Node fields = XMLHandler.getSubNode( entrynode, \"fields\" );\n      // How many field variableName?\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        variableName[i] = XMLHandler.getTagValue( fnode, \"variable_name\" );\n        variableValue[i] = XMLHandler.getTagValue( fnode, \"variable_value\" );\n        variableType[i] = getVariableType( XMLHandler.getTagValue( fnode, \"variable_type\" ) );\n\n      }\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( BaseMessages.getString( PKG, \"JobEntrySetVariables.Meta.UnableLoadXML\", xe\n        .getMessage() ), 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      replaceVars = rep.getJobEntryAttributeBoolean( id_jobentry, \"replacevars\" );\n\n      filename = rep.getJobEntryAttributeString( id_jobentry, \"filename\" );\n      fileVariableType = getVariableType( rep.getJobEntryAttributeString( id_jobentry, \"file_variable_type\" ) );\n\n      // How many variableName?\n      int argnr = rep.countNrJobEntryAttributes( id_jobentry, \"variable_name\" );\n      allocate( argnr );\n\n      // Read them all...\n      for ( int a = 0; a < argnr; a++ ) {","sourceCodeStart":149,"sourceCodeEnd":185,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/setvariables/JobEntrySetVariables.java#L149-L185","documentation":"This KettleXMLException is thrown in loadXML when parsing the Set Variables job entry's XML node fails with a KettleXMLException. It wraps the parse error and prefixes the localized message JobEntrySetVariables.Meta.UnableLoadXML, preserving the original exception as the cause. It signals malformed or unexpected XML for this entry.","triggerScenarios":"Loading a .kjb job file whose <fields> block for the Set Variables entry contains malformed XML (unclosed tags, unexpected structure) that XMLHandler chokes on while reading variable_name/variable_value/variable_type.","commonSituations":"Job file hand-edited or truncated; file corrupted by version control merge conflicts; file written by a newer Pentaho version with elements an older parser rejects; wrong encoding/BOM issues.","solutions":["Open the .kjb in an XML editor and fix the malformed section near the Set Variables entry (the cause message pinpoints it)","Restore the job file from version control or backup","Recreate the Set Variables entry in Spoon and re-save the job","If the file is from a newer PDI version, open it with a matching or newer Pentaho version"],"exampleFix":"// before (hand-edited kjb)\n<variable_name>VAR1<variable_name>\n// after\n<variable_name>VAR1</variable_name>","handlingStrategy":"try-catch","validationCode":"// before loading the kjb\nFile f = new File(jobPath);\nif (!f.isFile() || f.length() == 0) throw new IllegalStateException(\"Job file missing or empty: \" + jobPath);\n// quick well-formedness probe\nnew XMLReaderImpl().parse(new InputSource(new FileInputStream(f)));","typeGuard":null,"tryCatchPattern":"try {\n  JobMeta jobMeta = new JobMeta(log, jobPath, metaStore, provider);\n} catch (KettleXMLException e) {\n  logError(\"Malformed job XML: \" + e.getMessage(), e);\n  // restore from VCS/backup or repair the XML\n}","preventionTips":["Never hand-edit .kjb files without validating XML afterwards","Commit job files to VCS so corrupted edits are revertible","Open files with the same or newer PDI version that wrote them","Watch for merge-conflict markers left in .kjb files"],"tags":["pdi","xml","parsing"],"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"}