{"record":{"id":"b58b981504b4febe","repo":"pentaho/pentaho-kettle","slug":"step-stepname-of-type-stepid-is-not-yet-supported-in-a","errorCode":null,"errorMessage":"Step '${stepname}' of type '${stepID}' is not yet supported in a Single Threaded transformation engine.","messagePattern":"Step '(.+?)' of type '(.+?)' is not yet supported in a Single Threaded transformation engine\\.","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/SingleThreadedTransExecutor.java","lineNumber":275,"sourceCode":"      log.logDetailed( tLogString.toString() );\n    }\n  }\n\n  public boolean init() throws KettleException {\n\n    // See if the steps support the SingleThreaded transformation type...\n    //\n    log.logBasic( \"Single Threaded Executor initializing Trans: [\" + trans.getName( ) + \"]\" );\n    for ( StepMetaDataCombi combi : steps ) {\n      TransformationType[] types = combi.stepMeta.getStepMetaInterface().getSupportedTransformationTypes();\n      boolean ok = false;\n      for ( TransformationType type : types ) {\n        if ( type == TransformationType.SingleThreaded ) {\n          ok = true;\n        }\n      }\n      if ( !ok ) {\n        throw new KettleException( \"Step '\"\n          + combi.stepname + \"' of type '\" + combi.stepMeta.getStepID()\n          + \"' is not yet supported in a Single Threaded transformation engine.\" );\n      }\n    }\n    // Initialize all the steps...\n    //\n    for ( StepMetaDataCombi combi : steps ) {\n      boolean ok = combi.step.init( combi.meta, combi.data );\n      if ( !ok ) {\n        return false;\n      }\n    }\n    return true;\n\n  }\n\n  /**\n   * Give all steps in the transformation the chance to process all rows on input...","sourceCodeStart":257,"sourceCodeEnd":293,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/SingleThreadedTransExecutor.java#L257-L293","documentation":"The Single Threaded execution engine can only run steps explicitly marked as supporting TransformationType.SingleThreaded. During init(), every step meta's supported transformation types are scanned; if a step does not declare SingleThreaded support, this KettleException is thrown before execution starts.","triggerScenarios":"Calling SingleThreadedTransExecutor.init() on a transformation containing any step (per its stepmeta.getSupportedTransformationTypes()) that does not include SingleThreaded in its supported types list.","commonSituations":"Using the single-threaded engine (e.g. via transformation type setting or testSingleThreadedTrans) with plugins or standard steps that only support Normal mode; converting an existing transformation to SingleThreaded without auditing each step's support.","solutions":["Replace the unsupported step with an equivalent step that supports the SingleThreaded transformation type","Switch the transformation's execution engine back to the standard (threaded) engine","Implement SingleThreaded support in the custom step plugin and add TransformationType.SingleThreaded to its supported types"],"exampleFix":"// before\ntransMeta.setTransformationType(TransformationType.SingleThreaded); // step X unsupported\n// after\ntransMeta.setTransformationType(TransformationType.Normal); // or use a single-threaded-capable step","handlingStrategy":"validation","validationCode":"for (StepMeta sm : transMeta.getSteps()) {\n  if (!Arrays.asList(sm.getStepMetaInterface().getSupportedTransformationTypes()).contains(TransformationType.SingleThreaded)) {\n    throw new IllegalStateException(\"Step \" + sm.getName() + \" unsupported in single-threaded mode\");\n  }\n}","typeGuard":null,"tryCatchPattern":"try { executor.init(); } catch (KettleException e) { log.error(\"Single-threaded init failed: \" + e.getMessage()); }","preventionTips":["Audit all steps for SingleThreaded support before switching engine type","Keep single-threaded transformations minimal with known-supported steps","Test with SingleThreadedTransExecutor in CI"],"tags":["kettle","single-threaded","unsupported-step"],"backgroundTag":"unsupported-operation","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"}