{"record":{"id":"a4cf7ac5be6772b6","repo":"pentaho/pentaho-kettle","slug":"transformclassbase-exception-unabletofindinforowsetforstep","errorCode":null,"errorMessage":"TransformClassBase.Exception.UnableToFindInfoRowSetForStep","messagePattern":"TransformClassBase\\.Exception\\.UnableToFindInfoRowSetForStep","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/userdefinedjavaclass/TransformClassBase.java","lineNumber":580,"sourceCode":"  public String getParameter( String tag ) {\n    if ( tag == null ) {\n      return null;\n    }\n    return parent.environmentSubstitute( data.parameterMap.get( tag ) );\n  }\n\n  public RowSet findInfoRowSet( String tag ) throws KettleException {\n    if ( tag == null ) {\n      return null;\n    }\n    String stepname = data.infoMap.get( tag );\n    if ( Utils.isEmpty( stepname ) ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"TransformClassBase.Exception.UnableToFindInfoStepNameForTag\", tag ) );\n    }\n    RowSet rowSet = findInputRowSet( stepname );\n    if ( rowSet == null ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"TransformClassBase.Exception.UnableToFindInfoRowSetForStep\", stepname ) );\n    }\n    return rowSet;\n  }\n\n  public RowSet findTargetRowSet( String tag ) throws KettleException {\n    if ( tag == null ) {\n      return null;\n    }\n    String stepname = data.targetMap.get( tag );\n    if ( Utils.isEmpty( stepname ) ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"TransformClassBase.Exception.UnableToFindTargetStepNameForTag\", tag ) );\n    }\n    RowSet rowSet = findOutputRowSet( stepname );\n    if ( rowSet == null ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"TransformClassBase.Exception.UnableToFindTargetRowSetForStep\", stepname ) );","sourceCodeStart":562,"sourceCodeEnd":598,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/userdefinedjavaclass/TransformClassBase.java#L562-L598","documentation":"Thrown by TransformClassBase.findInfoRowSet(tag) when the tag resolved to a step name but findInputRowSet(stepname) returned null, i.e. no info RowSet exists for that step at runtime. The mapping exists but the corresponding input rowset is not available in the running transformation.","triggerScenarios":"findInfoRowSet(\"tag\") where data.infoMap maps the tag to a step name that has no active input rowset — e.g. the info step is not actually connected, is not running, or its name changed after the mapping was stored.","commonSituations":"Step name mismatch after renaming a step in Spoon while the stored mapping kept the old name; the info step is disabled or fails to start; running the transformation standalone without the info step's transformation scope.","solutions":["Verify the mapped step name still exists and is spelled exactly the same in the transformation.","Reconnect the info step hop so an input RowSet is created for this step.","Re-open the UDJC step dialog and re-select the info step to refresh the stored mapping."],"exampleFix":"// before: mapping points to a renamed step\nfindInfoRowSet(\"lookupStream\"); // step renamed to 'Lookup Stream'\n// after: update the info mapping to the new step name\naddInfoSource(\"lookupStream\", \"Lookup Stream\");","handlingStrategy":"validation","validationCode":"// after resolving stepname from the tag, confirm the hop exists in the transformation metadata\nString stepname = data.infoMap.get(tag); if (stepname == null || transMeta.findStep(stepname) == null) { /* fix mapping */ }","typeGuard":"boolean infoStepExists(String stepname) { return stepname != null && getTransMeta().findStep(stepname) != null; }","tryCatchPattern":"try { RowSet rs = findInfoRowSet(tag); ... } catch (KettleException e) { logError(\"Info RowSet unavailable for step mapped by tag \" + tag, e); throw e; }","preventionTips":["Re-save the UDJC step after renaming connected steps","Verify hops are enabled and connected in Spoon","Preview the info step before running the transformation"],"tags":["kettle","udjc","rowset","info-stream"],"backgroundTag":"entity-not-found","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"}