pentaho/pentaho-kettle · error · KettleException

FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo

Error message

FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo

What it means

FileExistsMeta.readRep() reads the step's attributes from the Kettle repository (filenamefield, resultfieldname, includefiletype, etc.) and wraps any repository exception in a KettleException with 'UnexpectedErrorReadingStepInfo'. It means the step's stored metadata could not be loaded from the repository database.

Solutions

  1. Check the repository database connectivity and retry loading the transformation.
  2. Verify the repository schema is upgraded to match the Pentaho version (repository upgrade tools).
  3. Inspect r_step_attribute rows for the step; re-save the step to regenerate them.
  4. Fall back to loading the transformation from a file export instead of the repository.

Example fix

// before
// load with stale repository connection -> readRep throws
// after
// reconnect/validate repository before loading
if (!rep.connect()) { rep.connect(); }
TransMeta tm = new TransMeta(rep, "MyTrans");
Defensive patterns

Strategy: retry

Validate before calling

if (!rep.getConnection().isValid(5)) {
  throw new IllegalStateException("Repository connection is not healthy before load");
}

Try / catch

try {
  TransMeta tm = new TransMeta(rep, "MyTrans");
} catch (KettleException e) {
  if (e.getMessage().contains("FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo")) {
    // reconnect / check repository schema, then retry once
  } else { throw e; }
}

Prevention

When it happens

Trigger: Loading a transformation from a repository when the underlying r_step_attribute query fails: DB connection dropped, schema mismatch, corrupted or missing rows for id_step.

Common situations: Repository database outage mid-load; repository schema version mismatch after Pentaho upgrade; deleted attributes rows; repository connection timeout.

Understand the failure class

Background: Database query failed: Internal Server Error 500s wrapping SQL, Prisma, and connection failures — what to check first — this error's family across 16 libraries.

Related errors


AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13). Data as JSON: /api/errors/228636cb7c9f1ae0. Report an issue: GitHub.

Appendix: source

Thrown at engine/src/main/java/org/pentaho/di/trans/steps/fileexists/FileExistsMeta.java:200

      resultfieldname = XMLHandler.getTagValue( stepnode, "resultfieldname" );
      includefiletype = "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "includefiletype" ) );
      filetypefieldname = XMLHandler.getTagValue( stepnode, "filetypefieldname" );
      addresultfilenames = "Y".equalsIgnoreCase( XMLHandler.getTagValue( stepnode, "addresultfilenames" ) );
    } catch ( Exception e ) {
      throw new KettleXMLException(
        BaseMessages.getString( PKG, "FileExistsMeta.Exception.UnableToReadStepInfo" ), e );
    }
  }

  public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {
    try {
      filenamefield = rep.getStepAttributeString( id_step, "filenamefield" );
      resultfieldname = rep.getStepAttributeString( id_step, "resultfieldname" );
      includefiletype = rep.getStepAttributeBoolean( id_step, "includefiletype" );
      filetypefieldname = rep.getStepAttributeString( id_step, "filetypefieldname" );
      addresultfilenames = rep.getStepAttributeBoolean( id_step, "addresultfilenames" );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString(
        PKG, "FileExistsMeta.Exception.UnexpectedErrorReadingStepInfo" ), e );
    }
  }

  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
    try {
      rep.saveStepAttribute( id_transformation, id_step, "filenamefield", filenamefield );
      rep.saveStepAttribute( id_transformation, id_step, "resultfieldname", resultfieldname );
      rep.saveStepAttribute( id_transformation, id_step, "includefiletype", includefiletype );
      rep.saveStepAttribute( id_transformation, id_step, "filetypefieldname", filetypefieldname );
      rep.saveStepAttribute( id_transformation, id_step, "addresultfilenames", addresultfilenames );
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages.getString( PKG, "FileExistsMeta.Exception.UnableToSaveStepInfo" )
        + id_step, e );
    }
  }

  public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta,

View on GitHub (pinned to f3058517a1)