pentaho/pentaho-kettle · error · KettleXMLException
DelayMeta.Exception.UnableToReadStepInfo
DelayMeta.Exception.UnableToReadStepInfo
Error message
DelayMeta.Exception.UnableToReadStepInfo
What it means
DelayMeta.readData reads the Delay step's XML (timeout, scaletime tags) during loadXML. Any exception is wrapped in a KettleXMLException with 'DelayMeta.Exception.UnableToReadStepInfo'. It means the Delay step's XML definition could not be parsed; note transformations before 3.1.1 may lack scaletime, which is normalized for compatibility.
Solutions
- Inspect the Delay step XML in the .ktr and ensure <timeout> and <scaletime> tags exist inside a well-formed step node.
- Re-add the Delay step in Spoon and re-save the transformation.
- Restore the transformation file from backup/version control.
- If migrating from pre-3.1.1 PDI, re-save the transformation once with a compatible PDI version.
Example fix
// before: missing tags <step><name>Delay</name><type>Delay</type></step> // after <step><name>Delay</name><type>Delay</type> <timeout>1000</timeout> <scaletime>milliseconds</scaletime> </step>
Defensive patterns
Strategy: validation
Validate before calling
// Check the Delay step XML before load
String timeout = XMLHandler.getTagValue(stepNode, "timeout");
String scaletime = XMLHandler.getTagValue(stepNode, "scaletime");
if (timeout == null || scaletime == null) {
throw new KettleException("Delay step XML missing timeout/scaletime tags");
} Try / catch
try { transMeta = new TransMeta(ktrPath); } catch (KettleXMLException e) { logError("Delay step unreadable: " + e.getMessage(), e); // re-create or restore the transformation
transMeta = restoreOrRebuild(ktrPath); } Prevention
- Edit transformations only in Spoon, never by hand.
- Migrate pre-3.1.1 transformations by re-saving them in a supported PDI version.
- Verify transferred .ktr files are complete before loading.
- Keep transformations in version control.
When it happens
Trigger: loadXML on a step node where XMLHandler.getTagValue throws due to malformed XML, or where a required tag structure is absent so parsing fails.
Common situations: Corrupted or hand-edited .ktr files; transformations exported by very old PDI versions (pre-3.1.1) with unexpected tag layout; truncated file transfers; XML generated by third-party tools missing Delay tags.
Understand the failure class
Background: JSON parse error: "Unexpected token" / "not valid JSON" / "failed to parse" — what JSON parsers are really complaining about — this error's family across 45 libraries.
Related errors
- CubeOutputMeta.Exception.UnableToLoadStepInfo
- PGPDecryptStreamMeta.Exception.UnableToReadStepInfo
- RulesMeta.Error.LoadFromXML
- RulesMeta.Error.LoadFromXML
- Unable to read step information from XML
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/365e6de5e377d34d.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/core/impl/src/main/java/org/pentaho/di/trans/steps/delay/DelayMeta.java:133
} else if ( scaletime.equals( ScaleTimeCode[2] ) ) {
retval = 2;
} else if ( scaletime.equals( ScaleTimeCode[3] ) ) {
retval = 3;
}
return retval;
}
private void readData( Node stepnode ) throws KettleXMLException {
try {
timeout = XMLHandler.getTagValue( stepnode, "timeout" );
scaletime = XMLHandler.getTagValue( stepnode, "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 KettleXMLException( BaseMessages.getString( PKG, "DelayMeta.Exception.UnableToReadStepInfo" ), e );
}
}
public void setDefault() {
timeout = "1"; // default one second
scaletime = DEFAULT_SCALE_TIME; // defaults to "seconds"
}
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 {View on GitHub (pinned to f3058517a1)