pentaho/pentaho-kettle · error · KettleXMLException
Unable to load step info from XML
Error message
Unable to load step info from XML
What it means
Thrown by PaloCellInputMeta.readData (invoked by loadXML) when parsing the step's XML representation fails for any reason. readData wraps any exception from XMLHandler tag extraction or field-list construction into a KettleXMLException.
Solutions
- Inspect the chained cause exception to find the exact parse failure.
- Open the .ktr in a text editor and verify the PALO cell input step's XML block is complete and well-formed.
- Reopen and re-save the transformation in Spoon to regenerate valid XML.
- Upgrade the PALO plugin so the XML schema matches the reader's expectations.
Example fix
null
Defensive patterns
Strategy: validation
Validate before calling
Document doc = XMLHandler.loadXMLFile(xmlFile); /* check expected tags exist before loadXML: cube, fields nodes */
Try / catch
try { stepMeta.loadXML(...) } catch (KettleXMLException e) { log.error("step XML invalid", e.getCause()); /* repair or regenerate .ktr */ } Prevention
- Never hand-edit .ktr XML without validating structure
- Keep plugin version in sync with saved transformation files
- Keep backups of transformations before edits
When it happens
Trigger: loadXML called on XML whose expected tags (cube name, database meta, field dimensionname/fieldname/fieldtype nodes) are missing, malformed, or of unexpected structure.
Common situations: Hand-edited or truncated .ktr files; transformation XML produced by an older plugin version with a different schema; copy-paste corruption of step XML between files.
Understand the failure class
Background: "failed to unmarshal" / json.Unmarshal errors: why parsing a response into a Go struct fails and how to fix it — this error's family across 23 libraries.
Related errors
- OraBulkLoaderMeta.Exception.UnableToReadStepInfoFromXML
- AnalyticQueryMeta.Exception.UnableToLoadStepInfoFromXML
- Error_0001
- ERROR_0001
- Error loading transformation executor details from XML
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/c33d24439e8dd084.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/cellinput/PaloCellInputMeta.java:121
String cubeMeasureName = XMLHandler.getTagValue( stepnode, "cubemeasurename" );
String cubeMeasureType = XMLHandler.getTagValue( stepnode, "cubemeasuretype" );
this.cubeMeasure = new DimensionField( "Measure", cubeMeasureName, cubeMeasureType );
this.fields = new ArrayList<DimensionField>();
Node levels = XMLHandler.getSubNode( stepnode, "fields" );
int nrLevels = XMLHandler.countNodes( levels, "field" );
for ( int i = 0; i < nrLevels; i++ ) {
Node fnode = XMLHandler.getSubNodeByNr( levels, "field", i );
String dimensionName = XMLHandler.getTagValue( fnode, "dimensionname" );
String fieldName = XMLHandler.getTagValue( fnode, "fieldname" );
String fieldType = XMLHandler.getTagValue( fnode, "fieldtype" );
this.fields.add( new DimensionField( dimensionName, fieldName, fieldType ) );
}
} catch ( Exception e ) {
throw new KettleXMLException( "Unable to load step info from XML", e );
}
}
@Override
public void setDefault() {
}
@Override
public void getFields( Bowl bowl, final RowMetaInterface row, final String origin, final RowMetaInterface[] info,
final StepMeta nextStep, final VariableSpace space, Repository repository, IMetaStore metaStore )
throws KettleStepException {
if ( databaseMeta == null ) {
throw new KettleStepException( "There is no Palo database server connection defined" );
}
final PaloHelper helper = new PaloHelper( databaseMeta, DefaultLogLevel.getLogLevel() );
try {
helper.connect();
try {View on GitHub (pinned to f3058517a1)