{"record":{"id":"0e7efb0c463d6606","repo":"pentaho/pentaho-kettle","slug":"mappingmeta-exception-unabletofindmetadatainfo","errorCode":"MappingMeta.Exception.UnableToFindMetadataInfo","errorMessage":"Unable to find step '{0}' to determine the row metadata for the mapping input.","messagePattern":"Unable to find step '(.+?)' to determine the row metadata for the mapping input\\.","errorType":"exception","errorClass":"KettleStepException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/mapping/MappingMeta.java","lineNumber":472,"sourceCode":"          for ( MappingValueRename valueRename : definition.getValueRenames() ) {\n            ValueMetaInterface valueMeta = inputRowMeta.searchValueMeta( valueRename.getSourceValueName() );\n            if ( valueMeta == null ) {\n              throw new KettleStepException( BaseMessages.getString(\n                PKG, \"MappingMeta.Exception.UnableToFindField\", valueRename.getSourceValueName() ) );\n            }\n            valueMeta.setName( valueRename.getTargetValueName() );\n          }\n        }\n      } else {\n        // The row metadata that goes to the info mapping input comes from the\n        // specified step\n        // In fact, it's one of the info steps that is going to contain this\n        // information...\n        //\n        String[] infoSteps = getInfoSteps();\n        int infoStepIndex = Const.indexOfString( definition.getInputStepname(), infoSteps );\n        if ( infoStepIndex < 0 ) {\n          throw new KettleStepException( BaseMessages.getString(\n            PKG, \"MappingMeta.Exception.UnableToFindMetadataInfo\", definition.getInputStepname() ) );\n        }\n        if ( info[infoStepIndex] != null ) {\n          inputRowMeta = info[infoStepIndex].clone();\n        } else {\n          inputRowMeta = null;\n        }\n      }\n\n      // What is this mapping input step?\n      //\n      StepMeta mappingInputStep = mappingTransMeta.findMappingInputStep( definition.getOutputStepname() );\n\n      // We're certain it's a MappingInput step...\n      //\n      MappingInputMeta mappingInputMeta = (MappingInputMeta) mappingInputStep.getStepMetaInterface();\n\n      // Inform the mapping input step about what it's going to receive...","sourceCodeStart":454,"sourceCodeEnd":490,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/mapping/MappingMeta.java#L454-L490","documentation":"Thrown in MappingMeta.getFields when the mapping definition's inputStepname is not present in the step's configured info steps (getInfoSteps), so the row metadata for the mapping input cannot be located. The named step must be registered as an info step for metadata lookup.","triggerScenarios":"getFields -> Const.indexOfString(definition.getInputStepname(), getInfoSteps()) returns -1, i.e. the input step name in the mapping definition is not among the info-step names passed to the step.","commonSituations":"The step feeding the mapping was removed from the Info hop; the mapping definition references a step that is not wired as an info stream; step renamed after the definition was saved.","solutions":["Reconnect the source step via an Info hop so it appears in the step's info steps","Update the mapping definition's input step name to one of the current info steps","Check getInfoSteps() configuration in the Mapping step dialog (Input Source tab)"],"exampleFix":"// before\nmappingDefinition.setInputStepname(\"Detached Step\"); // not in info steps\n// after\nmappingDefinition.setInputStepname(\"Mapping Input\"); // present in getInfoSteps()","handlingStrategy":"validation","validationCode":"// before getFields\nString[] infoSteps = meta.getInfoSteps();\nif (Const.indexOfString(definition.getInputStepname(), infoSteps) < 0) {\n  logError(\"Input step '\" + definition.getInputStepname() + \"' is not an info step\");\n}","typeGuard":"boolean isRegisteredInfoStep(MappingMeta meta, String stepName) { return Const.indexOfString(stepName, meta.getInfoSteps()) >= 0; }","tryCatchPattern":"try {\n  meta.getFields(...);\n} catch (KettleStepException e) {\n  logError(\"Mapping input step not among info steps: \" + e.getMessage());\n  // reconnect the hop / fix the Input Source tab\n}","preventionTips":["Ensure the source step connects via an Info hop to the Mapping step","Re-save the Mapping definition after re-wiring hops","Verify the Input Source tab lists the expected step"],"tags":["kettle","mapping","step-not-found","hop-wiring"],"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"}