{"record":{"id":"7039e1b5238ea6ac","repo":"pentaho/pentaho-kettle","slug":"prioritizestreams-error-notinputsteps","errorCode":null,"errorMessage":"PrioritizeStreams.Error.NotInputSteps","messagePattern":"PrioritizeStreams\\.Error\\.NotInputSteps","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/prioritizestreams/PrioritizeStreams.java","lineNumber":66,"sourceCode":"  public boolean processRow( StepMetaInterface smi, StepDataInterface sdi ) throws KettleException {\n    meta = (PrioritizeStreamsMeta) smi;\n    data = (PrioritizeStreamsData) sdi;\n\n    if ( first ) {\n      if ( meta.getStepName() != null || meta.getStepName().length > 0 ) {\n        data.stepnrs = meta.getStepName().length;\n        data.rowSets = new RowSet[data.stepnrs];\n\n        for ( int i = 0; i < data.stepnrs; i++ ) {\n          data.rowSets[i] = findInputRowSet( meta.getStepName()[i] );\n          if ( i > 0 ) {\n            // Compare layout of first stream with the current stream\n            checkInputLayoutValid( data.rowSets[0].getRowMeta(), data.rowSets[i].getRowMeta() );\n          }\n        }\n      } else {\n        // error\n        throw new KettleException( BaseMessages.getString( PKG, \"PrioritizeStreams.Error.NotInputSteps\" ) );\n      }\n      data.currentRowSet = data.rowSets[0];\n    } // end if first, part 1\n\n    Object[] input = getOneRow();\n\n    while ( input == null && data.stepnr < data.stepnrs - 1 && !isStopped() ) {\n      input = getOneRow();\n    }\n\n    if ( input == null ) {\n      // no more input to be expected...\n      setOutputDone();\n      return false;\n    }\n\n    if ( first ) {\n      // Take the row Meta from the first rowset read","sourceCodeStart":48,"sourceCodeEnd":84,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/prioritizestreams/PrioritizeStreams.java#L48-L84","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before: single hop into Prioritize Streams\nTable Input -> Prioritize Streams  // throws\n// after: two hops\nTable Input A -> Prioritize Streams\nTable Input B -> Prioritize Streams","handlingStrategy":"validation","validationCode":"// Validate hop structure before running the transformation\nString[] in = stepMeta.getStepMetaInterface() instanceof PrioritizeStreamsMeta ? stepMeta.getMeta() : null;\nlong inputHops = transMeta.findNumberPrevSteps(stepMeta); // must be >= 2\nif (inputHops < 2) throw new IllegalStateException(\"Prioritize Streams needs at least 2 input steps\");","typeGuard":null,"tryCatchPattern":"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; }","preventionTips":["Validate transformation graph before headless runs (Kitchen)","Avoid disabling/deleting upstream steps without rewiring hops","Use the transformation checker in Spoon before executing"],"tags":["kettle","transformation-design","input-validation"],"backgroundTag":"missing-required-argument","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"}