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

  1. 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.
  2. Fix the tag string passed to findInfoRowSet to exactly match a registered tag.
  3. 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

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


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)