{"record":{"id":"17dfe08e9699f9c5","repo":"pentaho/pentaho-kettle","slug":"jobentryabort-unabletoloadfromxml-label","errorCode":null,"errorMessage":"JobEntryAbort.UnableToLoadFromXml.Label","messagePattern":"JobEntryAbort\\.UnableToLoadFromXml\\.Label","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"plugins/core/impl/src/main/java/org/pentaho/di/job/entries/abort/JobEntryAbort.java","lineNumber":85,"sourceCode":"    return je;\n  }\n\n  public String getXML() {\n    StringBuilder retval = new StringBuilder();\n\n    retval.append( super.getXML() );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"message\", messageAbort ) );\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      messageAbort = XMLHandler.getTagValue( entrynode, \"message\" );\n    } catch ( Exception e ) {\n      throw new KettleXMLException( BaseMessages.getString( PKG, \"JobEntryAbort.UnableToLoadFromXml.Label\" ), e );\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      messageAbort = rep.getJobEntryAttributeString( id_jobentry, \"message\" );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"JobEntryAbort.UnableToLoadFromRepo.Label\", String\n        .valueOf( id_jobentry ) ), dbe );\n    }\n  }\n\n  // Save the attributes of this job entry\n  //\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"message\", messageAbort );","sourceCodeStart":67,"sourceCodeEnd":103,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/core/impl/src/main/java/org/pentaho/di/job/entries/abort/JobEntryAbort.java#L67-L103","documentation":"JobEntryAbort.loadXML wraps exceptions from parsing the job entry's XML (<message> tag) into a KettleXMLException whose message is the localized key 'JobEntryAbort.UnableToLoadFromXml.Label'. It means the abort job entry could not be deserialized from the job XML.","triggerScenarios":"loadXML called on a corrupt/malformed node for the ABORT entry — XMLHandler.getTagValue fails or super.loadXML throws while reading the entry node.","commonSituations":"Truncated or hand-edited .kjb file; encoding corruption; job produced by a tool that emitted invalid XML for this entry.","solutions":["Inspect and repair the <entry type='ABORT'> node in the .kjb (message tag)","Restore the job file from backup/version control","Recreate the abort entry in Spoon and re-save","Check the cause chain in the log for the exact XML parse error"],"exampleFix":"// before (broken)\n<entry type=\"ABORT\"><message>Stopped</entery> <!-- malformed close tag -->\n// after\n<entry type=\"ABORT\"><message>Stopped</message></entry>","handlingStrategy":"try-catch","validationCode":"// validate ABORT entry node before load\nNode entry = XMLHandler.getSubNode( jobNode, \"entry\" );\nif ( XMLHandler.getTagValue( entry, \"message\" ) == null && !\"ABORT\".equals( XMLHandler.getTagValue( entry, \"type\" ) ) ) {\n  throw new ValidationException( \"Malformed ABORT entry node\" );\n}","typeGuard":null,"tryCatchPattern":"try {\n  entry.loadXML( node, databases, slaveServers, rep, metaStore );\n} catch ( KettleXMLException e ) {\n  logError( \"Cannot load ABORT entry XML: \" + e.getMessage(), e );\n}","preventionTips":["Validate .kjb XML after any manual edit","Restore corrupt files from version control","Keep authoring tooling versions consistent","Check cause chain for exact XML parse errors"],"tags":["xml","job-entry","deserialization","kettle"],"backgroundTag":"json-unmarshal-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"}