{"record":{"id":"715c29b0bf234dd1","repo":"pentaho/pentaho-kettle","slug":"streamlookupmeta-exception-unabletoloadstepinfofromxml","errorCode":null,"errorMessage":"StreamLookupMeta.Exception.UnableToLoadStepInfoFromXML","messagePattern":"StreamLookupMeta\\.Exception\\.UnableToLoadStepInfoFromXML","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/streamlookup/StreamLookupMeta.java","lineNumber":190,"sourceCode":"        // CHECKSTYLE:Indentation:ON\n      }\n\n      for ( int i = 0; i < nrvalues; i++ ) {\n        Node vnode = XMLHandler.getSubNodeByNr( lookup, \"value\", i );\n        // CHECKSTYLE:Indentation:OFF\n        getValue()[i] = XMLHandler.getTagValue( vnode, \"name\" );\n        getValueName()[i] = XMLHandler.getTagValue( vnode, \"rename\" );\n        if ( getValueName()[i] == null ) {\n          getValueName()[i] = getValue()[i]; // default: same name to return!\n        }\n\n        getValueDefault()[i] = XMLHandler.getTagValue( vnode, \"default\" );\n        dtype = XMLHandler.getTagValue( vnode, \"type\" );\n        getValueDefaultType()[i] = ValueMetaFactory.getIdForValueMeta( dtype );\n        // CHECKSTYLE:Indentation:ON\n      }\n    } catch ( Exception e ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"StreamLookupMeta.Exception.UnableToLoadStepInfoFromXML\" ), e );\n    }\n  }\n\n  @Override\n  public void searchInfoAndTargetSteps( List<StepMeta> steps ) {\n    List<StreamInterface> infoStreams = getStepIOMeta().getInfoStreams();\n    for ( StreamInterface stream : infoStreams ) {\n      stream.setStepMeta( StepMeta.findStep( steps, (String) stream.getSubject() ) );\n    }\n  }\n\n  @Override\n  public void setDefault() {\n    setMemoryPreservationActive( true );\n    setUsingSortedList( false );\n    setUsingIntegerPair( false );\n","sourceCodeStart":172,"sourceCodeEnd":208,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/streamlookup/StreamLookupMeta.java#L172-L208","documentation":"StreamLookupMeta.readData parses the step's XML node and, if any exception occurs while reading key/value/default configuration, wraps it in KettleXMLException 'Unable to load step info from XML'. This is a deserialization failure for the step's saved metadata in a .ktr file.","triggerScenarios":"loadXML -> readData throws when XMLHandler.getTagValue returns unexpected content or ValueMetaFactory.getIdForValueMeta(dtype) fails for an unknown/missing <type> tag value.","commonSituations":"Hand-edited or truncated .ktr files; transformations exported from newer PDI versions using value types unknown to an older version; corrupted XML after a bad merge or version-control conflict.","solutions":["Open the .ktr in a text editor and verify each <field> node has well-formed <name>, <key_lookup>/<stream_name1>, <value>, <default> and valid <type> tags","Correct or remove the malformed field entry causing the parse failure","Re-export the transformation from a PDI version compatible with the one loading it","Restore the .ktr from version control if it was corrupted by a merge"],"exampleFix":"// before\n<type>NUMBRE</type>  <!-- typo -->\n// after\n<type>Number</type>","handlingStrategy":"try-catch","validationCode":"// Validate ktr XML against expected tags before loading\nString type = XMLHandler.getTagValue(fieldNode, \"type\");\nif (type == null || ValueMetaFactory.getIdForValueMeta(type) < 0)\n  throw new IllegalArgumentException(\"Invalid <type> in StreamLookup field XML: \" + type);","typeGuard":"boolean isParsableFieldType(String dtype) {\n  try { ValueMetaFactory.getIdForValueMeta(dtype); return true; } catch (Exception e) { return false; }\n}","tryCatchPattern":"try { meta.loadXML(node, databases, metaStore); }\ncatch (KettleXMLException e) {\n  log.error(\"Corrupt StreamLookup step XML: \" + e.getMessage(), e);\n  throw new IllegalStateException(\"Fix the .ktr step definition\", e);\n}","preventionTips":["Do not hand-edit .ktr files without validating XML afterwards","Keep PDI versions consistent between designers and runtime (Kitchen/Carte)","Commit .ktr files as text and resolve merge conflicts carefully","Back up transformations before migrating between PDI versions"],"tags":["kettle","pdi","xml","deserialization"],"backgroundTag":"xml-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"}