{"record":{"id":"835b50af49b0135c","repo":"pentaho/pentaho-kettle","slug":"jobentrymailvalidator-meta-unabletoloadfromxml","errorCode":null,"errorMessage":"JobEntryMailValidator.Meta.UnableToLoadFromXML","messagePattern":"JobEntryMailValidator\\.Meta\\.UnableToLoadFromXML","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"plugins/mail-validator/impl/src/main/java/org/pentaho/di/job/entries/mailvalidator/JobEntryMailValidator.java","lineNumber":169,"sourceCode":"    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"emailAddress\", emailAddress ) );\n\n    retval.append( super.getXML() );\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      smtpCheck = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"smtpCheck\" ) );\n      timeout = XMLHandler.getTagValue( entrynode, \"timeout\" );\n      defaultSMTP = XMLHandler.getTagValue( entrynode, \"defaultSMTP\" );\n      emailSender = XMLHandler.getTagValue( entrynode, \"emailSender\" );\n      emailAddress = XMLHandler.getTagValue( entrynode, \"emailAddress\" );\n\n    } catch ( Exception e ) {\n      throw new KettleXMLException(\n        BaseMessages.getString( PKG, \"JobEntryMailValidator.Meta.UnableToLoadFromXML\" ), 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      smtpCheck = rep.getJobEntryAttributeBoolean( id_jobentry, \"smtpCheck\" );\n      timeout = rep.getJobEntryAttributeString( id_jobentry, \"timeout\" );\n      defaultSMTP = rep.getJobEntryAttributeString( id_jobentry, \"defaultSMTP\" );\n      emailSender = rep.getJobEntryAttributeString( id_jobentry, \"emailSender\" );\n      emailAddress = rep.getJobEntryAttributeString( id_jobentry, \"emailAddress\" );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"JobEntryMailValidator.Meta.UnableToLoadFromRep\" )\n        + id_jobentry, dbe );\n    }\n  }\n","sourceCodeStart":151,"sourceCodeEnd":187,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/mail-validator/impl/src/main/java/org/pentaho/di/job/entries/mailvalidator/JobEntryMailValidator.java#L151-L187","documentation":"JobEntryMailValidator.loadXML catches any Exception while reading the entry's tags (timeout, defaultSMTP, emailSender, emailAddress) and wraps it in KettleXMLException with message key JobEntryMailValidator.Meta.UnableToLoadFromXML. The mail validator job entry could not be deserialized from XML.","triggerScenarios":"loadXML encounters a malformed or unexpected XML structure for the entrynode, or XMLHandler throws while resolving tags in the .kjb.","commonSituations":"Hand-edited job XML with missing/malformed tags; files saved by a different PDI version; corrupted/truncated .kjb from a bad merge or transfer.","solutions":["Inspect the chained cause in KettleXMLException to identify the failing tag.","Open the job in Spoon and re-save the Mail Validator entry to regenerate valid XML.","Restore the .kjb from version control if hand-edited or truncated.","Align PDI versions if the file originated from a different release."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"Document doc = XMLHandler.loadXMLFile(new File(jobFile));\nNode entry = doc == null ? null : XMLHandler.getSubNode(doc, \"entry\");\nif (entry == null) {\n  throw new KettleException(\"Job XML does not contain a valid entry node for Mail Validator.\");\n}","typeGuard":null,"tryCatchPattern":"try { loadXML(entrynode, ...); } catch (KettleXMLException e) {\n  logError(\"Mail Validator entry XML unreadable; re-save the job in Spoon: \" + e.getMessage(), e);\n}","preventionTips":["Edit job entries via Spoon rather than editing .kjb XML by hand.","Validate job files after VCS merges by loading them in Spoon before deployment.","Standardize PDI versions across teams producing and consuming job files."],"tags":["xml","deserialization","job-entry","metadata"],"backgroundTag":"schema-validation-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"}