pentaho/pentaho-kettle · error · KettleException
TransformClassBase.Exception.UnableToFindInfoStepNameForTag
Error message
TransformClassBase.Exception.UnableToFindInfoStepNameForTag
What it means
Thrown by TransformClassBase.findInfoRowSet(tag) in the User Defined Java Class (UDJC) step when the given info tag is not mapped to any step name in data.infoMap. The tag must have been declared via addInfoSource or defined in the step's info mappings; Kettle throws because it cannot resolve which step supplies the info stream.
Solutions
- Add the tag as an info source in the UDJC step dialog (or call addInfoSource/addStepInfoFields) so the tag maps to an actual step name.
- Fix the tag string passed to findInfoRowSet to exactly match a registered tag.
- Check the step's 'Info step' mappings in the transformation to confirm the hop from the info step still exists.
Example fix
// before
RowSet rs = findInfoRowSet("lookupStream"); // tag never declared
// after (in step meta setup / dialog)
addInfoSource("lookupStream", "Lookup Step");
RowSet rs = findInfoRowSet("lookupStream"); Defensive patterns
Strategy: validation
Validate before calling
// in UDJC script, before lookup
if (tag != null) { Object o = data.infoMap.get(tag); if (o == null || o.toString().isEmpty()) throw new KettleException("Tag not mapped: " + tag); } Type guard
boolean isMapped(String tag) { return tag != null && data.infoMap.get(tag) != null && !data.infoMap.get(tag).toString().isEmpty(); } Try / catch
try { RowSet rs = findInfoRowSet(tag); ... } catch (KettleException e) { logError("Info tag not mapped: " + tag, e); throw e; } Prevention
- Define all info tags in the UDJC dialog before scripting against them
- Keep tag constants in one place to avoid typos
- Re-verify info mappings after renaming steps in Spoon
When it happens
Trigger: Calling findInfoRowSet("myTag") in UDJC script code with a tag that was never registered via Info step mapping (addInfoSource/addStepInfoFields or the step dialog), or after the mapping was renamed/removed.
Common situations: Typo in the tag string; user removed the info hop in Spoon but the script still references the old tag; copying a UDJC step without re-adding the info step mapping; upgrading transformations where info tags were renamed.
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
- TransformClassBase.Exception.UnableToFindInfoRowSetForStep
- TransformClassBase.Exception.UnableToFindTargetStepNameForTa…
- TransformClassBase.Exception.UnableToFindTargetRowSetForStep
- A deadlock was detected between steps
- BaseStep.Exception.SourceStepToReadFromCantRunInMultipleCopies
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/126e1e833206190e.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/userdefinedjavaclass/TransformClassBase.java:575
}
return ioMeta;
}
public String getParameter( String tag ) {
if ( tag == null ) {
return null;
}
return parent.environmentSubstitute( data.parameterMap.get( tag ) );
}
public RowSet findInfoRowSet( String tag ) throws KettleException {
if ( tag == null ) {
return null;
}
String stepname = data.infoMap.get( tag );
if ( Utils.isEmpty( stepname ) ) {
throw new KettleException( BaseMessages.getString(
PKG, "TransformClassBase.Exception.UnableToFindInfoStepNameForTag", tag ) );
}
RowSet rowSet = findInputRowSet( stepname );
if ( rowSet == null ) {
throw new KettleException( BaseMessages.getString(
PKG, "TransformClassBase.Exception.UnableToFindInfoRowSetForStep", stepname ) );
}
return rowSet;
}
public RowSet findTargetRowSet( String tag ) throws KettleException {
if ( tag == null ) {
return null;
}
String stepname = data.targetMap.get( tag );
if ( Utils.isEmpty( stepname ) ) {
throw new KettleException( BaseMessages.getString(
PKG, "TransformClassBase.Exception.UnableToFindTargetStepNameForTag", tag ) );View on GitHub (pinned to f3058517a1)