pentaho/pentaho-kettle · error · KettleException
SplitFieldToRowsMeta.Exception.UnexpectedErrorInReadingStepInfo
SplitFieldToRowsMeta.Exception.UnexpectedErrorInReadingStepInfo
Error message
SplitFieldToRowsMeta.Exception.UnexpectedErrorInReadingStepInfo
What it means
Thrown by SplitFieldToRowsMeta.readRep when loading this step's settings from a repository fails. The method reads step attributes (newfield, rownum, rownum_field, reset_rownumber, delimiter_is_regex) via the Repository API; any exception is wrapped in a KettleException with this message key. It means the step configuration could not be reconstructed from the repository.
Solutions
- Check the wrapped cause for the repository/database error
- Verify repository connectivity and reconnect
- Run the repository schema upgrade for your PDI version
- Reload the transformation after the repository is healthy
Example fix
// before
TransMeta tm = new TransMeta();
tm.loadTransMeta(rep, id_transformation, metaStore); // may throw
// after
try {
tm.loadTransMeta(rep, id_transformation, metaStore);
} catch (KettleException e) {
logError("Failed reading step from repository: " + e.getCause());
rep.disconnect(); rep.connect();
tm.loadTransMeta(rep, id_transformation, metaStore);
} Defensive patterns
Strategy: try-catch
Validate before calling
// before loading from repository if (!rep.isConnected()) rep.connect(); ObjectId id = rep.getTransformationID(name, dir); // throws early if missing
Try / catch
try { transMeta.loadTransMeta(rep, id, metaStore); } catch (KettleException e) { logError("Repository read failed: " + e.getCause()); /* reconnect or fall back to file load */ } Prevention
- Verify repository connectivity before bulk loads
- Keep repository schema in sync with the PDI version
- Avoid concurrent modification of the same transformation
- Keep local .ktr exports as fallback
When it happens
Trigger: Calling TransMeta.loadFromRepository where getStepAttributeString/getStepAttributeBoolean throws — repository DB connection failure, missing R_STEP_ATTRIBUTE rows, or a schema mismatch between PDI version and repository tables.
Common situations: Repository database down or network dropped while opening a transformation from the repository; repository schema not upgraded after PDI upgrade; step deleted from repository by another user mid-load.
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
- DatabaseJoinMeta.Exception.UnexpectedErrorReadingStepInfo
- ERROR0002.UnexpectedErrorReadingFromTheRepository
- ExecSQLMeta.Exception.UnexpectedErrorReadingStepInfo
- GetTableNamesMeta.Exception.UnexpectedErrorReadingStepInfo
- JobXMLWellFormed.Error.Exception.UnableLoadRep + id_jobentry
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/7e5f349f7d05de2e.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/splitfieldtorows/SplitFieldToRowsMeta.java:193
retval.append( " " + XMLHandler.addTagValue( "rownum", includeRowNumber ) );
retval.append( " " + XMLHandler.addTagValue( "rownum_field", rowNumberField ) );
retval.append( " " + XMLHandler.addTagValue( "resetrownumber", resetRowNumber ) );
retval.append( " " + XMLHandler.addTagValue( "delimiter_is_regex", isDelimiterRegex ) );
return retval.toString();
}
public void readRep( Repository rep, IMetaStore metaStore, ObjectId id_step, List<DatabaseMeta> databases ) throws KettleException {
try {
splitField = rep.getStepAttributeString( id_step, "splitfield" );
delimiter = rep.getStepAttributeString( id_step, "delimiter" );
newFieldname = rep.getStepAttributeString( id_step, "newfield" );
includeRowNumber = rep.getStepAttributeBoolean( id_step, "rownum" );
rowNumberField = rep.getStepAttributeString( id_step, "rownum_field" );
resetRowNumber = rep.getStepAttributeBoolean( id_step, "reset_rownumber" );
isDelimiterRegex = rep.getStepAttributeBoolean( id_step, 0, "delimiter_is_regex", false );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "SplitFieldToRowsMeta.Exception.UnexpectedErrorInReadingStepInfo" ), e );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
try {
rep.saveStepAttribute( id_transformation, id_step, "splitfield", splitField );
rep.saveStepAttribute( id_transformation, id_step, "delimiter", delimiter );
rep.saveStepAttribute( id_transformation, id_step, "newfield", newFieldname );
rep.saveStepAttribute( id_transformation, id_step, "rownum", includeRowNumber );
rep.saveStepAttribute( id_transformation, id_step, "reset_rownumber", resetRowNumber );
rep.saveStepAttribute( id_transformation, id_step, "rownum_field", rowNumberField );
rep.saveStepAttribute( id_transformation, id_step, "delimiter_is_regex", isDelimiterRegex );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "SplitFieldToRowsMeta.Exception.UnableToSaveStepInfoToRepository" )
+ id_step, e );
}View on GitHub (pinned to f3058517a1)