{"record":{"id":"6d0db76072e467e9","repo":"pentaho/pentaho-kettle","slug":"aggregaterowsmeta-exception-unabletoloadstepinfo","errorCode":"AggregateRowsMeta.Exception.UnableToLoadStepInfo","errorMessage":"AggregateRowsMeta.Exception.UnableToLoadStepInfo","messagePattern":"AggregateRowsMeta\\.Exception\\.UnableToLoadStepInfo","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"plugins/aggregate-rows/core/src/main/java/org/pentaho/di/trans/steps/aggregaterows/AggregateRowsMeta.java","lineNumber":197,"sourceCode":"  private void readData( Node stepnode ) throws KettleXMLException {\n    try {\n      int i, nrfields;\n      String type;\n\n      Node fields = XMLHandler.getSubNode( stepnode, \"fields\" );\n      nrfields = XMLHandler.countNodes( fields, \"field\" );\n\n      allocate( nrfields );\n\n      for ( i = 0; i < nrfields; i++ ) {\n        Node fnode = XMLHandler.getSubNodeByNr( fields, \"field\", i );\n        fieldName[i] = XMLHandler.getTagValue( fnode, \"name\" );\n        fieldNewName[i] = XMLHandler.getTagValue( fnode, \"rename\" );\n        type = XMLHandler.getTagValue( fnode, \"type\" );\n        aggregateType[i] = getType( type );\n      }\n    } catch ( Exception e ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"AggregateRowsMeta.Exception.UnableToLoadStepInfo\" ), e );\n    }\n  }\n\n  @Override\n  public void setDefault() {\n    int i, nrfields;\n\n    nrfields = 0;\n\n    allocate( nrfields );\n\n    for ( i = 0; i < nrfields; i++ ) {\n      fieldName[i] = BaseMessages.getString( PKG, \"AggregateRowsMeta.Fieldname.Label\" );\n      fieldNewName[i] = BaseMessages.getString( PKG, \"AggregateRowsMeta.NewName.Label\" );\n      aggregateType[i] = TYPE_AGGREGATE_SUM;\n    }\n  }","sourceCodeStart":179,"sourceCodeEnd":215,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/aggregate-rows/core/src/main/java/org/pentaho/di/trans/steps/aggregaterows/AggregateRowsMeta.java#L179-L215","documentation":"AggregateRowsMeta.readData parses the step's XML definition (fields, names, renames, aggregate types) and throws KettleXMLException with this localized message when XML parsing fails. It signals that the step's metadata could not be loaded from a transformation file (.ktr).","triggerScenarios":"loadXml is called on a malformed or hand-edited <fields> block in the step XML; getType receives an unrecognized aggregate type string; XMLHandler.getTagValue hits malformed XML causing a parse exception.","commonSituations":"A .ktr file edited by hand or by an external tool corrupting the step definition; opening a transformation saved by a newer/older PDI version with a changed XML schema; an invalid <type> value in the aggregate-rows step XML.","solutions":["Open the .ktr in Spoon and fix or re-create the Aggregate Rows step; re-save to regenerate valid XML.","Check the <type> elements under the step's <fields> — they must be valid aggregate type names (sum, average, etc.).","Compare the step XML against a known-good transformation saved with the same PDI version.","Read the wrapped cause (getCause()) to distinguish XML parse errors from bad type values."],"exampleFix":"<!-- before -->\n<field><name>amount</name><rename>total</rename><type>summ</type></field>\n<!-- after -->\n<field><name>amount</name><rename>total</rename><type>sum</type></field>","handlingStrategy":"try-catch","validationCode":"// Before loading a .ktr, sanity-check the step XML block\nif (xml == null || !xml.contains(\"<fields>\")) throw new IllegalArgumentException(\"AggregateRows step XML missing <fields> block\");","typeGuard":null,"tryCatchPattern":"try {\n  meta.loadXML(stepNode, ...);\n} catch (KettleXMLException e) {\n  logger.error(\"AggregateRows XML invalid: \" + e.getCause(), e);\n  // fall back to re-creating the step or loading a backup .ktr\n}","preventionTips":["Do not hand-edit .ktr files; edit steps through Spoon.","Keep transformations in version control and validate after edits.","Use valid aggregate type names (sum, average, number of values, etc.) in step config."],"tags":["kettle","xml","step-metadata","transformation"],"backgroundTag":"json-parse-error","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}