pentaho/pentaho-kettle · error · KettleXMLException
Unable to load file exists job entry from XML node
Error message
Unable to load file exists job entry from XML node
What it means
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.
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
Example fix
// before (corrupt node) // <connection/> missing entirely // after: restore node // <connection>oracleLocal</connection><cubeName>SALES</cubeName>
Defensive patterns
Strategy: try-catch
Validate before calling
org.w3c.dom.Node entry = XMLHandler.getSubNode( jobnode, "entry" );
if ( entry == null || XMLHandler.getTagValue( entry, "connection" ) == null ) {
throw new IllegalStateException( "PaloCubeDelete entry XML missing connection" );
} Try / catch
try { entry.loadXML( node, databases, slaveServers ); } catch ( KettleXMLException e ) { log.error( "Corrupt XML for PaloCubeDelete: " + e.getMessage(), e ); throw e; } Prevention
- Avoid manual edits to .kjb files
- Validate job files after version migrations
- Restore from VCS/backup instead of patching XML by hand
When it happens
Trigger: loadXML given a node whose <connection>, <cubeName>, or other expected tags are missing/malformed so super.loadXML or XMLHandler.getTagValue handling throws.
Common situations: Corrupted or hand-edited .kjb files; XML from a different/newer PDI version; truncated file transfer; merge conflicts in job XML.
Related errors
- Unable to load file exists job entry from XML node
- Unable to load job entry for type file exists from the…
- Unable to load job entry for type file exists from the…
- Unable to load job entry of type 'Msgbox Info' from XML node
- ColumnExistsMeta.Exception.UnableToReadStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/d60d76708f9388a2.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/palo/core/src/main/java/org/pentaho/di/job/entries/palo/JobEntryCubeDelete/PaloCubeDelete.java:92
retval.append( super.getXML() );
retval.append( " " ).append(
XMLHandler.addTagValue( "connection", getDatabaseMeta() == null ? "" : getDatabaseMeta().getName() ) );
retval.append( " " ).append( XMLHandler.addTagValue( "cubeName", getCubeName() ) );
return retval.toString();
}
public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers, Repository rep,
IMetaStore metaStore ) throws KettleXMLException {
try {
super.loadXML( entrynode, databases, slaveServers );
this.setDatabaseMeta( DatabaseMeta.findDatabase( databases, XMLHandler.getTagValue( entrynode, "connection" ) ) );
this.setCubeName( XMLHandler.getTagValue( entrynode, "cubeName" ) );
} catch ( KettleXMLException xe ) {
throw new KettleXMLException( "Unable to load file exists job entry from XML node", xe );
}
}
public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,
List<SlaveServer> slaveServers ) throws KettleException {
try {
this.databaseMeta =
rep.loadDatabaseMetaFromJobEntryAttribute( id_jobentry, "connection", "id_database", databases );
this.setCubeName( rep.getStepAttributeString( id_jobentry, "cubeName" ) );
} catch ( KettleException dbe ) {
throw new KettleException( "Unable to load job entry for type file exists from the repository for id_jobentry="
+ id_jobentry, dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {View on GitHub (pinned to f3058517a1)