pentaho/pentaho-kettle · error · KettleException
FieldSplitterMeta.Exception.UnexpectedErrorInReadingStepInfo
Error message
FieldSplitterMeta.Exception.UnexpectedErrorInReadingStepInfo
What it means
FieldSplitterMeta.readRep loads the step's configuration (split field, delimiters, per-field type/length/precision/nullif/ifnull/trimtype) from the repository. Any exception is wrapped in this KettleException.
Solutions
- Check KettleException.getCause() for the underlying error
- Re-save the step from Spoon to rewrite its repository attributes
- Verify repository schema/version compatibility with the installed PDI
- Restore affected rows from a repository backup
Defensive patterns
Strategy: try-catch
Validate before calling
if (!repository.isConnected()) { throw new IllegalStateException("Repository not connected"); } Try / catch
try { meta.readRep(rep, metaStore, idStep, databases); }
catch (KettleException e) {
log.error("Read from repository failed: {}", e.getCause(), e);
meta.setDefault(); // degrade to defaults
} Prevention
- Keep PDI version compatible with repository schema
- Log full cause chains when loading from repository
- Back up repository before upgrades
When it happens
Trigger: Loading the step from a repository when rep.getStepAttributeString/getStepAttributeInteger throws, or attribute values fail conversion (e.g. getTrimTypeByCode on a bad code) inside the per-field loop.
Common situations: Repository rows saved by an incompatible PDI version; corrupt or partially deleted step attributes; repository connection failure during transformation 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
- FieldSplitterMeta.Exception.UnalbeToSaveStepInfoToRepository
- GroupByMeta.Exception.UnexpectedErrorInReadingStepInfoFromRepository
- GroupByMeta.Exception.UnableToSaveStepInfoToRepository
- ProcessFilesMeta.Exception.UnexpectedErrorReadingStepInfo
- SETVARIABLE0005
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/19943df4c5f0f731.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/fieldsplitter/FieldSplitterMeta.java:519
for ( int i = 0; i < nrfields; i++ ) {
fieldName[i] = rep.getStepAttributeString( id_step, i, "field_name" );
fieldID[i] = rep.getStepAttributeString( id_step, i, "field_id" );
fieldRemoveID[i] = rep.getStepAttributeBoolean( id_step, i, "field_idrem" );
fieldType[i] = ValueMetaFactory.getIdForValueMeta( rep.getStepAttributeString( id_step, i, "field_type" ) );
fieldFormat[i] = rep.getStepAttributeString( id_step, i, "field_format" );
fieldGroup[i] = rep.getStepAttributeString( id_step, i, "field_group" );
fieldDecimal[i] = rep.getStepAttributeString( id_step, i, "field_decimal" );
fieldCurrency[i] = rep.getStepAttributeString( id_step, i, "field_currency" );
fieldLength[i] = (int) rep.getStepAttributeInteger( id_step, i, "field_length" );
fieldPrecision[i] = (int) rep.getStepAttributeInteger( id_step, i, "field_precision" );
fieldNullIf[i] = rep.getStepAttributeString( id_step, i, "field_nullif" );
fieldIfNull[i] = rep.getStepAttributeString( id_step, i, "field_ifnull" );
fieldTrimType[i] =
ValueMetaString.getTrimTypeByCode( rep.getStepAttributeString( id_step, i, "field_trimtype" ) );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "FieldSplitterMeta.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, "enclosure", enclosure );
for ( int i = 0; i < fieldName.length; i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, "field_name", fieldName[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "field_id", fieldID[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "field_idrem", fieldRemoveID[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "field_type",
ValueMetaFactory.getValueMetaName( fieldType[i] ) );
rep.saveStepAttribute( id_transformation, id_step, i, "field_format", fieldFormat[i] );
rep.saveStepAttribute( id_transformation, id_step, i, "field_group", fieldGroup[i] );View on GitHub (pinned to f3058517a1)