pentaho/pentaho-kettle · error · KettleException

DelayMeta.Exception.UnexpectedErrorReadingStepInfo

DelayMeta.Exception.UnexpectedErrorReadingStepInfo

Error message

DelayMeta.Exception.UnexpectedErrorReadingStepInfo

What it means

DelayMeta.readRep loads the Delay step's attributes (timeout, scaletime) from the repository via rep.getStepAttributeString. Any exception is wrapped in a KettleException with 'DelayMeta.Exception.UnexpectedErrorReadingStepInfo'. It means reading the step's stored attributes from the repository failed.

Solutions

  1. Reconnect to the repository and reopen the transformation.
  2. Inspect the wrapped cause for the underlying repository error and fix it.
  3. Grant the repository user read access to the transformation.
  4. If attributes are missing/corrupted, open and re-save the step in Spoon to repopulate defaults (timeout=1s, seconds scale).

Example fix

// before
TransMeta tm = new TransMeta(rep, transId, metaStore);
// after: guard connection and log the cause
if (!rep.isConnected()) { rep.connect(); }
try {
  TransMeta tm = new TransMeta(rep, transId, metaStore);
} catch (KettleException e) {
  logError("readRep failed: " + e.getCause().getMessage(), e);
}
Defensive patterns

Strategy: try-catch

Validate before calling

if (rep == null || !rep.isConnected()) { throw new KettleException("Repository not connected; cannot read Delay step attributes"); }

Try / catch

try { transMeta = new TransMeta(rep, transId, metaStore); } catch (KettleException e) { Throwable c = e.getCause(); logError("Delay readRep failed: " + (c != null ? c.getMessage() : e.getMessage()), e); if (!rep.isConnected()) { rep.connect(); } }

Prevention

When it happens

Trigger: readRep while repository getStepAttributeString calls throw: repository DB unreachable, corrupted attribute rows, insufficient read permission, or schema mismatch between PDI client and repository.

Common situations: Opening a repository-stored transformation after the DB connection dropped; read-only or restricted repository user; repository upgraded by a newer PDI; missing attribute rows for legacy transformations (pre-3.1.1).

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/0dcfa21612c3ca86. Report an issue: GitHub.

Appendix: source

Thrown at plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/delay/DelayMeta.java:158

  }

  public String getTimeOut() {
    return timeout;
  }

  public void setTimeOut( String timeout ) {
    this.timeout = timeout;
  }

  public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {
    try {
      timeout = rep.getStepAttributeString( id_step, "timeout" );
      scaletime = rep.getStepAttributeString( id_step, "scaletime" );
      // set all unknown values to seconds
      setScaleTimeCode( getScaleTimeCode() ); // compatibility reasons for transformations before 3.1.1, see PDI-1850,
                                              // PDI-1532
    } catch ( Exception e ) {
      throw new KettleException( BaseMessages
        .getString( PKG, "DelayMeta.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, "timeout", timeout );
      rep.saveStepAttribute( id_transformation, id_step, "scaletime", scaletime );

    } catch ( Exception e ) {
      throw new KettleException(
        BaseMessages.getString( PKG, "DelayMeta.Exception.UnexpectedErrorSavingStepInfo" ), e );
    }
  }

  @Override
  public void getFields( Bowl bowl, RowMetaInterface rowMeta, String origin, RowMetaInterface[] info, StepMeta nextStep,
    VariableSpace space, Repository repository, IMetaStore metaStore ) throws KettleStepException {

View on GitHub (pinned to f3058517a1)