{"record":{"id":"19943df4c5f0f731","repo":"pentaho/pentaho-kettle","slug":"fieldsplittermeta-exception-unexpectederrorinreadingstepinfo","errorCode":null,"errorMessage":"FieldSplitterMeta.Exception.UnexpectedErrorInReadingStepInfo","messagePattern":"FieldSplitterMeta\\.Exception\\.UnexpectedErrorInReadingStepInfo","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/fieldsplitter/FieldSplitterMeta.java","lineNumber":519,"sourceCode":"\n      for ( int i = 0; i < nrfields; i++ ) {\n        fieldName[i] = rep.getStepAttributeString( id_step, i, \"field_name\" );\n        fieldID[i] = rep.getStepAttributeString( id_step, i, \"field_id\" );\n        fieldRemoveID[i] = rep.getStepAttributeBoolean( id_step, i, \"field_idrem\" );\n        fieldType[i] = ValueMetaFactory.getIdForValueMeta( rep.getStepAttributeString( id_step, i, \"field_type\" ) );\n        fieldFormat[i] = rep.getStepAttributeString( id_step, i, \"field_format\" );\n        fieldGroup[i] = rep.getStepAttributeString( id_step, i, \"field_group\" );\n        fieldDecimal[i] = rep.getStepAttributeString( id_step, i, \"field_decimal\" );\n        fieldCurrency[i] = rep.getStepAttributeString( id_step, i, \"field_currency\" );\n        fieldLength[i] = (int) rep.getStepAttributeInteger( id_step, i, \"field_length\" );\n        fieldPrecision[i] = (int) rep.getStepAttributeInteger( id_step, i, \"field_precision\" );\n        fieldNullIf[i] = rep.getStepAttributeString( id_step, i, \"field_nullif\" );\n        fieldIfNull[i] = rep.getStepAttributeString( id_step, i, \"field_ifnull\" );\n        fieldTrimType[i] =\n          ValueMetaString.getTrimTypeByCode( rep.getStepAttributeString( id_step, i, \"field_trimtype\" ) );\n      }\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"FieldSplitterMeta.Exception.UnexpectedErrorInReadingStepInfo\" ), e );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {\n    try {\n      rep.saveStepAttribute( id_transformation, id_step, \"splitfield\", splitField );\n      rep.saveStepAttribute( id_transformation, id_step, \"delimiter\", delimiter );\n      rep.saveStepAttribute( id_transformation, id_step, \"enclosure\", enclosure );\n\n      for ( int i = 0; i < fieldName.length; i++ ) {\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_name\", fieldName[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_id\", fieldID[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_idrem\", fieldRemoveID[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_type\",\n          ValueMetaFactory.getValueMetaName( fieldType[i] ) );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_format\", fieldFormat[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_group\", fieldGroup[i] );","sourceCodeStart":501,"sourceCodeEnd":537,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/fieldsplitter/FieldSplitterMeta.java#L501-L537","documentation":"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.","triggerScenarios":"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.","commonSituations":"Repository rows saved by an incompatible PDI version; corrupt or partially deleted step attributes; repository connection failure during transformation load.","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"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if (!repository.isConnected()) { throw new IllegalStateException(\"Repository not connected\"); }","typeGuard":null,"tryCatchPattern":"try { meta.readRep(rep, metaStore, idStep, databases); }\ncatch (KettleException e) {\n  log.error(\"Read from repository failed: {}\", e.getCause(), e);\n  meta.setDefault(); // degrade to defaults\n}","preventionTips":["Keep PDI version compatible with repository schema","Log full cause chains when loading from repository","Back up repository before upgrades"],"tags":["pdi","repository","metadata"],"backgroundTag":"database-query-failed","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}