pentaho/pentaho-kettle · error · KettleXMLException
PentahoReportingOutputMeta.Exception.UnableToLoadStepInfo
Error message
PentahoReportingOutputMeta.Exception.UnableToLoadStepInfo
What it means
PentahoReportingOutputMeta.readRep... actually readData (used by loadXML) wraps any Exception while parsing the step's XML definition into a KettleXMLException with message PentahoReportingOutputMeta.Exception.UnableToLoadStepInfo. Thrown when the transformation .ktr cannot be deserialized for this step, e.g. malformed tags or an unparseable processor type code.
Solutions
- Open the .ktr in a text editor and validate the PentahoReportingOutput step XML tags, especially the processor type element
- Restore the transformation from version control or repository history
- Open and re-save the transformation in Spoon of the matching Pentaho/Kettle version
- Upgrade/align plugin and Pentaho Reporting versions so the processor type codes match
Example fix
// before (hand-edited ktr) <processor_type>PDF_DOC</processor_type> // after <processor_type>PDF</processor_type>
Defensive patterns
Strategy: try-catch
Validate before calling
// validate step XML before load
String code = XMLHandler.getTagValue( stepnode, "processor_type" );
if ( code == null || ProcessorType.getProcessorTypeByCode( code ) == null ) {
throw new KettleXMLException( "Unknown processor_type: " + code );
} Try / catch
try {
meta.loadXML( stepnode, databases, metaStore );
} catch ( KettleXMLException e ) {
logError( "Cannot load reporting step metadata: " + e.getMessage(), e );
// restore default metadata or fail the transformation load
} Prevention
- Do not hand-edit .ktr files; edit via Spoon
- Keep transformations under version control for easy rollback
- Use the same Kettle/plugin version to save and load transformations
- Validate .ktr XML after repository import/export
When it happens
Trigger: loadXML calls readData(stepnode); XMLHandler.getTagValue returns unexpected content and ProcessorType.getProcessorTypeByCode or another parser call throws (e.g. null/unknown processor type code in the <processor_type> tag).
Common situations: Hand-edited or truncated .ktr file; transformation saved by a newer/older Pentaho version with a renamed or removed processor type code; XML corruption during repository export/import.
Understand the failure class
Background: Schema validation failed / invalid input schema: payload rejected because its shape doesn't match the expected schema — this error's family across 28 libraries.
Related errors
- GetTableNamesMeta.Exception.UnableToReadStepInfo
- GPBulkLoaderMeta.Exception.UnableToReadStepInfoFromXML
- GPBulkLoaderMeta.Exception.UnableToReadStepInfoFromXML
- GPLoadMeta.Exception.UnableToReadStepInfoFromXML
- GroupByMeta.Exception.UnableToLoadStepInfoFromXML
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/e27c241861eb6546.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/pentaho-reporting/impl/src/main/java/org/pentaho/di/trans/steps/pentahoreporting/PentahoReportingOutputMeta.java:181
outputFile = XMLHandler.getTagValue( stepnode, XML_TAG_OUTPUT_FILE );
useValuesFromFields = "Y".equals( XMLHandler.getTagValue( stepnode, XML_TAG_USE_VALUES_FROM_FIELDS ) )
|| XMLHandler.getTagValue( stepnode, XML_TAG_USE_VALUES_FROM_FIELDS ) == null;
createParentFolder = "Y".equals( XMLHandler.getTagValue( stepnode, XML_TAG_CREATE_PARENT_FOLDER ) );
parameterFieldMap = new HashMap<String, String>();
Node parsNode = XMLHandler.getSubNode( stepnode, XML_TAG_PARAMETERS );
List<Node> nodes = XMLHandler.getNodes( parsNode, XML_TAG_PARAMETER );
for ( Node node : nodes ) {
String parameter = XMLHandler.getTagValue( node, XML_TAG_NAME );
String fieldname = XMLHandler.getTagValue( node, XML_TAG_FIELD );
if ( !Utils.isEmpty( parameter ) && !Utils.isEmpty( fieldname ) ) {
parameterFieldMap.put( parameter, fieldname );
}
}
outputProcessorType =
ProcessorType.getProcessorTypeByCode( XMLHandler.getTagValue( stepnode, XML_TAG_PROCESSOR_TYPE ) );
} catch ( Exception e ) {
throw new KettleXMLException( BaseMessages.getString(
PKG, "PentahoReportingOutputMeta.Exception.UnableToLoadStepInfo" ), e );
}
}
public void setDefault() {
outputProcessorType = ProcessorType.PDF;
createParentFolder = false;
useValuesFromFields = true;
}
public String getXML() {
StringBuilder retval = new StringBuilder();
retval.append( " " + XMLHandler.addTagValue( XML_TAG_INPUT_FILE_FIELD, inputFileField ) );
retval.append( " " + XMLHandler.addTagValue( XML_TAG_OUTPUT_FILE_FIELD, outputFileField ) );
retval.append( " " + XMLHandler.addTagValue( XML_TAG_CREATE_PARENT_FOLDER, createParentFolder ) );
retval.append( " " + XMLHandler.addTagValue( XML_TAG_INPUT_FILE, inputFile ) );
retval.append( " " + XMLHandler.addTagValue( XML_TAG_OUTPUT_FILE, outputFile ) );View on GitHub (pinned to f3058517a1)