{"record":{"id":"7d88ade7eafac4ac","repo":"pentaho/pentaho-kettle","slug":"basestep-exception-sourcesteptoreadfromdoesntexist","errorCode":"BaseStep.Exception.SourceStepToReadFromDoesntExist","errorMessage":"BaseStep.Exception.SourceStepToReadFromDoesntExist","messagePattern":"BaseStep\\.Exception\\.SourceStepToReadFromDoesntExist","errorType":"error_code","errorClass":"KettleStepException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/step/BaseStep.java","lineNumber":2397,"sourceCode":"        }\n      }\n    }\n  }\n\n  /**\n   * Find input row set.\n   *\n   * @param sourceStep the source step\n   * @return the row set\n   * @throws KettleStepException the kettle step exception\n   */\n  public RowSet findInputRowSet( String sourceStep ) throws KettleStepException {\n    // Check to see that \"sourceStep\" only runs in a single copy\n    // Otherwise you'll see problems during execution.\n    //\n    StepMeta sourceStepMeta = transMeta.findStep( sourceStep );\n    if ( sourceStepMeta == null ) {\n      throw new KettleStepException( BaseMessages.getString(\n        PKG, \"BaseStep.Exception.SourceStepToReadFromDoesntExist\", sourceStep ) );\n    }\n\n    if ( sourceStepMeta.getCopies() > 1 ) {\n      throw new KettleStepException( BaseMessages.getString(\n        PKG, \"BaseStep.Exception.SourceStepToReadFromCantRunInMultipleCopies\", sourceStep, Integer\n          .toString( sourceStepMeta.getCopies() ) ) );\n    }\n\n    return findInputRowSet( sourceStep, 0, getStepname(), getCopy() );\n  }\n\n  /**\n   * Find input row set.\n   *\n   * @param from     the from\n   * @param fromcopy the fromcopy\n   * @param to       the to","sourceCodeStart":2379,"sourceCodeEnd":2415,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/step/BaseStep.java#L2379-L2415","documentation":"findInputRowSet(String sourceStep) resolves the named step in the transformation metadata via transMeta.findStep and throws KettleStepException when no step with that name exists. This API is used by steps that dynamically read rows from another step's row set (e.g. 'Read all source steps' style plugins).","triggerScenarios":"Calling BaseStep.findInputRowSet(\"SomeStep\") (or a plugin configured with a source step name) where the name does not match any step in the current transformation: typo, renamed step, or step living in a different transformation.","commonSituations":"Step name changed in the canvas after the consuming step's dialog captured the old name; a sub-transformation/mapping where the referenced step isn't visible; hard-coded step name in custom plugin code.","solutions":["Correct the step name in the consuming step's configuration to exactly match a step in this transformation.","Verify with transMeta.findStep(name) or open the transformation and copy-paste the step name to avoid typos.","If the step was renamed, re-open the plugin/mapping dialog and re-select the source step.","In custom code, resolve the step via a variable/parameter set at runtime instead of a hard-coded name."],"exampleFix":"// before\nRowSet rs = findInputRowSet(\"Staging 1\"); // renamed to 'Staging 2'\n// after\nRowSet rs = findInputRowSet(environmentSubstitute(\"${SOURCE_STEP}\"));","handlingStrategy":"validation","validationCode":"if (transMeta.findStep(sourceStepName) == null) throw new IllegalArgumentException(\"Step '\" + sourceStepName + \"' not found in transformation\");","typeGuard":null,"tryCatchPattern":"try { RowSet rs = findInputRowSet(sourceStepName); } catch (KettleStepException e) { if (e.getMessage().contains(\"exist\")) { logError(\"Source step name invalid: \" + sourceStepName); } throw e; }","preventionTips":["Copy-paste step names instead of typing them","Re-select source steps in dialogs after renaming any step","Use environment variables/parameters for step names in plugins","Validate configured step names in the plugin's init()"],"tags":["kettle","pentaho","step-not-found","rowset","configuration"],"backgroundTag":"resource-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"}