{"record":{"id":"62b7f8e6dbc831ff","repo":"pentaho/pentaho-kettle","slug":"fieldsplittermeta-exception-unalbetosavestepinfotorepository","errorCode":null,"errorMessage":"FieldSplitterMeta.Exception.UnalbeToSaveStepInfoToRepository","messagePattern":"FieldSplitterMeta\\.Exception\\.UnalbeToSaveStepInfoToRepository","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/fieldsplitter/FieldSplitterMeta.java","lineNumber":548,"sourceCode":"      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] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_decimal\", fieldDecimal[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_currency\", fieldCurrency[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_length\", fieldLength[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_precision\", fieldPrecision[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_nullif\", fieldNullIf[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_ifnull\", fieldIfNull[i] );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_trimtype\", ValueMetaString\n          .getTrimTypeCode( fieldTrimType[i] ) );\n      }\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"FieldSplitterMeta.Exception.UnalbeToSaveStepInfoToRepository\" )\n        + id_step, e );\n    }\n  }\n\n  public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta,\n    RowMetaInterface prev, String[] input, String[] output, RowMetaInterface info, VariableSpace space,\n    Repository repository, IMetaStore metaStore ) {\n    String error_message = \"\";\n    CheckResult cr;\n\n    // Look up fields in the input stream <prev>\n    if ( prev != null && prev.size() > 0 ) {\n      cr =\n        new CheckResult( CheckResult.TYPE_RESULT_OK, BaseMessages.getString(\n          PKG, \"FieldSplitterMeta.CheckResult.StepReceivingFields\", prev.size() + \"\" ), stepMeta );\n      remarks.add( cr );\n","sourceCodeStart":530,"sourceCodeEnd":566,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/fieldsplitter/FieldSplitterMeta.java#L530-L566","documentation":"FieldSplitterMeta.saveRep writes the step's per-field attributes to the repository. Any exception from rep.saveStepAttribute is wrapped in this KettleException with id_step appended. (The message key contains a long-standing 'Unalbe' typo.)","triggerScenarios":"Saving a transformation with a FieldSplitter step when the Repository throws while writing delimiter, nullif, ifnull, or trimtype attributes for the field rows.","commonSituations":"Repository database read-only, quota exceeded, or connection dropped mid-save; insufficient permissions on the shared transformation folder.","solutions":["Examine the cause exception for the repository/DB-level failure","Confirm write permissions and available storage on the repository","Retry the save after restoring connectivity","Export the transformation as XML to preserve work while the repository is fixed"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if (!repository.isConnected()) { throw new IllegalStateException(\"Repository not connected\"); }\nif (fields == null || fields.length == 0) { throw new IllegalStateException(\"Nothing to save\"); }","typeGuard":null,"tryCatchPattern":"try { meta.saveRep(rep, metaStore, idTransformation, idStep); }\ncatch (KettleException e) {\n  log.error(\"Save failed for id_step={}: {}\", idStep, e.getCause(), e);\n  // retry after reconnect or fall back to XML export\n}","preventionTips":["Check repository disk space and permissions before large saves","Batch saves when connectivity is unstable","Maintain XML exports as recovery artifacts"],"tags":["pdi","repository","metadata"],"backgroundTag":"database-write-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"}