pentaho/pentaho-kettle · error · KettleStepException
BaseStep.Exception.SourceStepToReadFromDoesntExist
BaseStep.Exception.SourceStepToReadFromDoesntExist
Error message
BaseStep.Exception.SourceStepToReadFromDoesntExist
What it means
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).
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.
Example fix
// before
RowSet rs = findInputRowSet("Staging 1"); // renamed to 'Staging 2'
// after
RowSet rs = findInputRowSet(environmentSubstitute("${SOURCE_STEP}")); Defensive patterns
Strategy: validation
Validate before calling
if (transMeta.findStep(sourceStepName) == null) throw new IllegalArgumentException("Step '" + sourceStepName + "' not found in transformation"); Try / catch
try { RowSet rs = findInputRowSet(sourceStepName); } catch (KettleStepException e) { if (e.getMessage().contains("exist")) { logError("Source step name invalid: " + sourceStepName); } throw e; } Prevention
- 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()
When it happens
Trigger: 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.
Common situations: 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.
Understand the failure class
Background: 'Could not be found', 'does not exist', 'not found in database': the resource-not-found family when an ID, slug, key, or URI lookup comes back empty — this error's family across 20 libraries.
Related errors
- BaseStep.Exception.TargetStepToWriteToDoesntExist
- BaseStep.Exception.SourceStepToReadFromCantRunInMultipleCopies
- BaseStep.Exception.TargetStepToWriteToCantRunInMultipleCopies
- A deadlock was detected between steps
- AddSequence.Exception.NoSpecifiedMethod
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/7d88ade7eafac4ac.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/step/BaseStep.java:2397
}
}
}
}
/**
* Find input row set.
*
* @param sourceStep the source step
* @return the row set
* @throws KettleStepException the kettle step exception
*/
public RowSet findInputRowSet( String sourceStep ) throws KettleStepException {
// Check to see that "sourceStep" only runs in a single copy
// Otherwise you'll see problems during execution.
//
StepMeta sourceStepMeta = transMeta.findStep( sourceStep );
if ( sourceStepMeta == null ) {
throw new KettleStepException( BaseMessages.getString(
PKG, "BaseStep.Exception.SourceStepToReadFromDoesntExist", sourceStep ) );
}
if ( sourceStepMeta.getCopies() > 1 ) {
throw new KettleStepException( BaseMessages.getString(
PKG, "BaseStep.Exception.SourceStepToReadFromCantRunInMultipleCopies", sourceStep, Integer
.toString( sourceStepMeta.getCopies() ) ) );
}
return findInputRowSet( sourceStep, 0, getStepname(), getCopy() );
}
/**
* Find input row set.
*
* @param from the from
* @param fromcopy the fromcopy
* @param to the toView on GitHub (pinned to f3058517a1)