pentaho/pentaho-kettle · error · KettleException
PrioritizeStreams.Error.NotInputSteps
Error message
PrioritizeStreams.Error.NotInputSteps
What it means
KettleException thrown by PrioritizeStreams.processRow during initialization when the step does not have at least two input steps. PrioritizeStreams merges and sorts rows coming from multiple stream inputs; with fewer than two (fewer than the number of sorted steps configured) it cannot do its work, so processRow aborts the step with this message.
Solutions
- Connect at least two upstream steps to the Prioritize Streams step and re-run.
- Verify the 'step name' list in the step settings matches the actual connected inputs.
- Check upstream steps are not disabled/skipped at runtime.
Example fix
// before: single hop into Prioritize Streams Table Input -> Prioritize Streams // throws // after: two hops Table Input A -> Prioritize Streams Table Input B -> Prioritize Streams
Defensive patterns
Strategy: validation
Validate before calling
// Validate hop structure before running the transformation
String[] in = stepMeta.getStepMetaInterface() instanceof PrioritizeStreamsMeta ? stepMeta.getMeta() : null;
long inputHops = transMeta.findNumberPrevSteps(stepMeta); // must be >= 2
if (inputHops < 2) throw new IllegalStateException("Prioritize Streams needs at least 2 input steps"); Try / catch
try { trans.execute(null); } catch (KettleException e) { if (e.getMessage().contains("NotInputSteps") || e.getMessage().contains("input")) { log.error("Wire at least two streams into Prioritize Streams", e); } throw e; } Prevention
- Validate transformation graph before headless runs (Kitchen)
- Avoid disabling/deleting upstream steps without rewiring hops
- Use the transformation checker in Spoon before executing
When it happens
Trigger: The step is wired with 0 or 1 input hop at runtime, or the number of connected input streams is fewer than the configured number of steps to prioritize, checked in the 'first' block of processRow when data.rowSets is inspected.
Common situations: Upstream steps disabled or deleted so their hops disappear; a transformation copy where only one stream connects to the prioritize step; misconfigured transformation run headless via Kitchen.
Understand the failure class
Background: "missing required argument" and "the following required arguments were not provided": what required-argument errors mean and how to fix them — this error's family across 20 libraries.
Related errors
- A connection of type PALO is expected
- A connection of type PALO is expected
- A deadlock was detected between steps
- A server socket allocation always has to accompanied by a…
- A server socket allocation always has to accompanied by a…
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/7039e1b5238ea6ac.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/prioritizestreams/PrioritizeStreams.java:66
public boolean processRow( StepMetaInterface smi, StepDataInterface sdi ) throws KettleException {
meta = (PrioritizeStreamsMeta) smi;
data = (PrioritizeStreamsData) sdi;
if ( first ) {
if ( meta.getStepName() != null || meta.getStepName().length > 0 ) {
data.stepnrs = meta.getStepName().length;
data.rowSets = new RowSet[data.stepnrs];
for ( int i = 0; i < data.stepnrs; i++ ) {
data.rowSets[i] = findInputRowSet( meta.getStepName()[i] );
if ( i > 0 ) {
// Compare layout of first stream with the current stream
checkInputLayoutValid( data.rowSets[0].getRowMeta(), data.rowSets[i].getRowMeta() );
}
}
} else {
// error
throw new KettleException( BaseMessages.getString( PKG, "PrioritizeStreams.Error.NotInputSteps" ) );
}
data.currentRowSet = data.rowSets[0];
} // end if first, part 1
Object[] input = getOneRow();
while ( input == null && data.stepnr < data.stepnrs - 1 && !isStopped() ) {
input = getOneRow();
}
if ( input == null ) {
// no more input to be expected...
setOutputDone();
return false;
}
if ( first ) {
// Take the row Meta from the first rowset readView on GitHub (pinned to f3058517a1)