{"record":{"id":"2f1d31dcab807ded","repo":"pentaho/pentaho-kettle","slug":"mergerowsmeta-exception-unabletoloadstepinfo","errorCode":"MergeRowsMeta.Exception.UnableToLoadStepInfo","errorMessage":"MergeRowsMeta.Exception.UnableToLoadStepInfo","messagePattern":"MergeRowsMeta\\.Exception\\.UnableToLoadStepInfo","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/mergerows/MergeRowsMeta.java","lineNumber":198,"sourceCode":"        Node keynode = XMLHandler.getSubNodeByNr( keysnode, \"key\", i );\n        keyFields[i] = XMLHandler.getNodeValue( keynode );\n      }\n\n      for ( int i = 0; i < nrValues; i++ ) {\n        Node valuenode = XMLHandler.getSubNodeByNr( valuesnode, \"value\", i );\n        valueFields[i] = XMLHandler.getNodeValue( valuenode );\n      }\n\n      flagField = XMLHandler.getTagValue( stepnode, \"flag_field\" );\n\n      List<StreamInterface> infoStreams = getStepIOMeta().getInfoStreams();\n      StreamInterface referenceStream = infoStreams.get( 0 );\n      StreamInterface compareStream = infoStreams.get( 1 );\n\n      compareStream.setSubject( XMLHandler.getTagValue( stepnode, \"compare\" ) );\n      referenceStream.setSubject( XMLHandler.getTagValue( stepnode, \"reference\" ) );\n    } catch ( Exception e ) {\n      throw new KettleXMLException(\n        BaseMessages.getString( PKG, \"MergeRowsMeta.Exception.UnableToLoadStepInfo\" ), e );\n    }\n  }\n\n  @Override\n  public void setDefault() {\n    flagField = \"flagfield\";\n    allocate( 0, 0 );\n  }\n\n  @Override\n  public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {\n    try {\n      int nrKeys = rep.countNrStepAttributes( id_step, \"key_field\" );\n      int nrValues = rep.countNrStepAttributes( id_step, \"value_field\" );\n\n      allocate( nrKeys, nrValues );\n","sourceCodeStart":180,"sourceCodeEnd":216,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/mergerows/MergeRowsMeta.java#L180-L216","documentation":"Thrown by MergeRowsMeta.readData (called from loadXML) when parsing the Merge Rows step's XML node fails. It reads the 'reference' and 'compare' stream subjects from the stepnode and wraps any Exception in a KettleXMLException.","triggerScenarios":"loadXML on a .ktr whose <merge_rows> node is malformed or triggers an exception while reading tags or resolving info streams — corrupted XML, hand-edited files, or incompatible-version step XML.","commonSituations":"Hand-edited or merge-conflicted .ktr breaking <reference>/<compare> tags; opening a transformation saved by a newer Kettle version; truncated file transfer.","solutions":["Inspect KettleXMLException.getCause() for the precise parsing failure.","Open the .ktr in Spoon and re-save the Merge Rows step to regenerate clean XML.","Verify the step node contains well-formed <reference> and <compare> elements.","Restore the file from version control or backup if corrupted."],"exampleFix":"// before (missing closing tag)\n<reference>Ref step\n// after\n<reference>Ref step</reference>","handlingStrategy":"try-catch","validationCode":"// Validate the transformation XML is well-formed before loading\nDocument doc = XMLHandler.loadXMLFile(ktrFile);\nif (doc == null) throw new IllegalArgumentException(\"Unreadable transformation XML\");","typeGuard":null,"tryCatchPattern":"try {\n  TransMeta tm = new TransMeta(ktrFile);\n} catch (KettleXMLException e) {\n  log.error(\"Merge rows step XML load failed: \" + e.getCause(), e);\n}","preventionTips":["Edit .ktr files only through Spoon; avoid manual XML edits.","Fix merge conflicts by re-generating the file in Spoon, not by hand.","Use matching Kettle versions for authoring and execution.","Checksum/verify files after transfer to catch truncation."],"tags":["kettle","xml-parsing","step-metadata","merge-rows"],"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"}