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
- Reconnect to the repository and reopen the transformation.
- Inspect the wrapped cause for the underlying repository error and fix it.
- Grant the repository user read access to the transformation.
- 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
- Verify repository read permissions for all consuming users.
- Reconnect repositories after long idle periods.
- Keep client/repository schema versions aligned.
- Back up the repository database regularly.
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
- CubeInputMeta.Exception.UnableToSaveStepInfo
- CubeOutputMeta.Exception.UnableToSaveStepInfo
- CubeOutputMeta.Exception.UnexpectedErrorInReadingStepInfo
- DelayMeta.Exception.UnexpectedErrorSavingStepInfo
- DenormaliserMeta.Exception.UnableToSaveStepInfo
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)