{"record":{"id":"d60d76708f9388a2","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-file-exists-job-entry-from-xml-node-d60d76","errorCode":null,"errorMessage":"Unable to load file exists job entry from XML node","messagePattern":"Unable to load file exists job entry from XML node","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"plugins/palo/core/src/main/java/org/pentaho/di/job/entries/palo/JobEntryCubeDelete/PaloCubeDelete.java","lineNumber":92,"sourceCode":"\n    retval.append( super.getXML() );\n\n    retval.append( \"      \" ).append(\n        XMLHandler.addTagValue( \"connection\", getDatabaseMeta() == null ? \"\" : getDatabaseMeta().getName() ) );\n    retval.append( \"      \" ).append( XMLHandler.addTagValue( \"cubeName\", getCubeName() ) );\n\n    return retval.toString();\n  }\n\n  public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers, Repository rep,\n      IMetaStore metaStore ) throws KettleXMLException {\n    try {\n      super.loadXML( entrynode, databases, slaveServers );\n\n      this.setDatabaseMeta( DatabaseMeta.findDatabase( databases, XMLHandler.getTagValue( entrynode, \"connection\" ) ) );\n      this.setCubeName( XMLHandler.getTagValue( entrynode, \"cubeName\" ) );\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( \"Unable to load file exists job entry 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      this.databaseMeta =\n          rep.loadDatabaseMetaFromJobEntryAttribute( id_jobentry, \"connection\", \"id_database\", databases );\n      this.setCubeName( rep.getStepAttributeString( id_jobentry, \"cubeName\" ) );\n\n    } catch ( KettleException dbe ) {\n      throw new KettleException( \"Unable to load job entry for type file exists from the repository for id_jobentry=\"\n          + id_jobentry, dbe );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {","sourceCodeStart":74,"sourceCodeEnd":110,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/palo/core/src/main/java/org/pentaho/di/job/entries/palo/JobEntryCubeDelete/PaloCubeDelete.java#L74-L110","documentation":"Thrown by PaloCubeDelete.loadXML() when parsing the job entry's XML node raises a KettleXMLException, wrapped with the message 'Unable to load file exists job entry from XML node'. The wording is a copy-paste error inherited from another entry type; this is the Palo Delete cube entry.","triggerScenarios":"loadXML given a node whose <connection>, <cubeName>, or other expected tags are missing/malformed so super.loadXML or XMLHandler.getTagValue handling throws.","commonSituations":"Corrupted or hand-edited .kjb files; XML from a different/newer PDI version; truncated file transfer; merge conflicts in job XML.","solutions":["Inspect the PaloCubeDelete entry XML in the .kjb file for missing 'connection' or 'cubeName' tags","Re-create the job entry in Spoon, reconfigure, and save","Restore the job file from a backup or version control","Load the job with the PDI version that originally produced the XML"],"exampleFix":"// before (corrupt node)\n// <connection/> missing entirely\n// after: restore node\n// <connection>oracleLocal</connection><cubeName>SALES</cubeName>","handlingStrategy":"try-catch","validationCode":"org.w3c.dom.Node entry = XMLHandler.getSubNode( jobnode, \"entry\" );\nif ( entry == null || XMLHandler.getTagValue( entry, \"connection\" ) == null ) {\n  throw new IllegalStateException( \"PaloCubeDelete entry XML missing connection\" );\n}","typeGuard":null,"tryCatchPattern":"try { entry.loadXML( node, databases, slaveServers ); } catch ( KettleXMLException e ) { log.error( \"Corrupt XML for PaloCubeDelete: \" + e.getMessage(), e ); throw e; }","preventionTips":["Avoid manual edits to .kjb files","Validate job files after version migrations","Restore from VCS/backup instead of patching XML by hand"],"tags":["kettle","pdi","xml","palo","job-entry"],"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"}