pentaho/pentaho-kettle · error · KettleXMLException
Unable to load step info from XML
Error message
Unable to load step info from XML
What it means
ElasticSearchBulkMeta.loadXML() parses the step's XML node (settings, servers, etc.) with XMLHandler; any exception during parsing is wrapped in a KettleXMLException with the literal message 'Unable to load step info from XML'. It indicates the saved transformation XML for this step is malformed or missing expected tags.
Solutions
- Open the .ktr in a text editor and validate the XML well-formedness and the step's <settings> block
- Recreate the step in Spoon and re-save the transformation
- Align plugin versions — open with the same or newer Pentaho/plugin version that wrote the file
Defensive patterns
Strategy: validation
Validate before calling
// validate the .ktr XML before loading it in Pentaho xmllint --noout transformation.ktr && echo OK // check the step node contains a <settings> element: grep -c '<settings>' transformation.ktr
Try / catch
try { transMeta = TransMetaFactory.create(path, rep); } catch (KettleXMLException e) {
log.error("Corrupt step XML: " + e.getMessage(), e);
throw new IOException("Fix or regenerate the .ktr file", e);
} Prevention
- Never hand-edit .ktr/.kjb files without validating XML afterwards
- Keep Pentaho and plugin versions consistent across environments
- Keep transformations under version control so corrupted files are recoverable
When it happens
Trigger: loadXML (public StepMetaInterface method) called while opening/loading a .ktr: XMLHandler.getTagValue returns unexpected structure or throws because a required node is absent or the XML is corrupted.
Common situations: Hand-edited or truncated .ktr file, transformation saved by a newer plugin version then opened with an older one, copy-pasted step XML missing <settings> child nodes.
Related errors
- InsertUpdateMeta.Exception.UnableToReadStepInfoFromXML
- LoadFileInputMeta.Exception.ErrorLoadingXML
- Unable to load step info from XML
- Unable to load step info from XML
- Unable to load step info from XML
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/6ae276f132908556.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/elasticsearch-bulk-insert/core/src/main/java/org/pentaho/di/trans/steps/elasticsearchbulk/ElasticSearchBulkMeta.java:461
}
this.addServer( addr, port );
}
// Settings
Node settings = XMLHandler.getSubNode( stepnode, Dom.TAG_SETTINGS );
int nrSettings = XMLHandler.countNodes( settings, Dom.TAG_SETTING );
this.clearSettings();
for ( int i = 0; i < nrSettings; i++ ) {
Node sNode = XMLHandler.getSubNodeByNr( settings, Dom.TAG_SETTING, i );
String name = XMLHandler.getTagValue( sNode, Dom.TAG_SETTING_NAME );
String value = XMLHandler.getTagValue( sNode, Dom.TAG_SETTING_VALUE );
this.addSetting( name, value );
}
} catch ( Exception e ) {
throw new KettleXMLException( "Unable to load step info from XML", e );
}
}
private static boolean parseBool( String val ) {
return "Y".equals( val );
}
public String getXML() {
StringBuffer retval = new StringBuffer();
Indentation indent = new Indentation();
indent.incr().incr();
// General
retval.append( indent.toString() ).append( XMLHandler.openTag( Dom.TAG_GENERAL ) ).append( Const.CR );
indent.incr();
retval.append( indent.toString() + XMLHandler.addTagValue( Dom.TAG_INDEX, getIndex() ) );View on GitHub (pinned to f3058517a1)