pentaho/pentaho-kettle · error · KettleXMLException
CubeInputMeta.Exception.UnableToLoadStepInfo
CubeInputMeta.Exception.UnableToLoadStepInfo
Error message
CubeInputMeta.Exception.UnableToLoadStepInfo
What it means
CubeInputMeta.readData parses the step's XML definition (file name, row limit, add-to-result flag). If any XMLHandler access throws, it wraps the cause in this KettleXMLException indicating the step info could not be loaded from XML.
Solutions
- Fix or regenerate the transformation XML so the CubeInput step node contains <file><name> and <limit> tags.
- Re-save the transformation from Spoon to produce well-formed XML.
- Check the root cause (the wrapped exception) for the exact XML parsing problem.
Example fix
// before <step><type>CubeInput</type></step> // after <step><type>CubeInput</type><file><name>data.cube</name></file><limit>0</limit></step>
Defensive patterns
Strategy: try-catch
Try / catch
try {
meta.loadXML( stepnode, databases, metaStore );
} catch ( KettleXMLException e ) {
logError( "CubeInput step XML invalid, re-save transformation in Spoon: " + e.getMessage(), e );
} Prevention
- Avoid hand-editing .ktr XML; use Spoon.
- Validate XML against the PDI schema when generating it programmatically.
- Keep transformation files complete and untruncated in version control.
When it happens
Trigger: loadXML encounters a malformed stepnode subtree — missing/malformed <file><name> or <limit> tags, or corrupted transformation XML.
Common situations: Hand-edited .ktr files; transformations exported from newer PDI versions parsed by older ones; truncated XML files.
Related errors
- VALUEMAPPER0004
- WebServiceAvailableMeta.Exception.UnableToReadStepInfo
- Error loading transformation step from XML
- Error loading transformation step from XML
- GetSequenceMeta.Exception.ErrorLoadingStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/c62d395a26d7f1ec.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/cubeinput/CubeInputMeta.java:144
* The addfilenameresult to set.
*/
public void setAddResultFile( boolean addfilenameresult ) {
this.addfilenameresult = addfilenameresult;
}
@Override public Object clone() {
CubeInputMeta retval = (CubeInputMeta) super.clone();
return retval;
}
private void readData( Node stepnode ) throws KettleXMLException {
try {
filename = XMLHandler.getTagValue( stepnode, "file", "name" );
rowLimit = XMLHandler.getTagValue( stepnode, "limit" );
addfilenameresult = "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "addfilenameresult" ) );
} catch ( Exception e ) {
throw new KettleXMLException(
BaseMessages.getString( PKG, "CubeInputMeta.Exception.UnableToLoadStepInfo" ), e );
}
}
@Override public void setDefault() {
filename = "file";
rowLimit = "0";
addfilenameresult = false;
}
@Override public void getFields( Bowl bowl, RowMetaInterface r, String name, RowMetaInterface[] info, StepMeta nextStep,
VariableSpace space, Repository repository,
IMetaStore metaStore ) throws KettleStepException {
GZIPInputStream fis = null;
DataInputStream dis = null;
try {
InputStream is = KettleVFS.getInstance( bowl ).getInputStream( space.environmentSubstitute( filename ), space );
fis = new GZIPInputStream( is );View on GitHub (pinned to f3058517a1)