{"record":{"id":"6b579bb2c487d488","repo":"pentaho/pentaho-kettle","slug":"splitfieldtorowsmeta-exception-6b579b","errorCode":"SplitFieldToRowsMeta.Exception.UnableToSaveStepInfoToRepository","errorMessage":"SplitFieldToRowsMeta.Exception.UnableToSaveStepInfoToRepository\" + id_step","messagePattern":"SplitFieldToRowsMeta\\.Exception\\.UnableToSaveStepInfoToRepository\" \\+ id_step","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/splitfieldtorows/SplitFieldToRowsMeta.java","lineNumber":208,"sourceCode":"      resetRowNumber = rep.getStepAttributeBoolean( id_step, \"reset_rownumber\" );\n      isDelimiterRegex = rep.getStepAttributeBoolean( id_step, 0, \"delimiter_is_regex\", false );\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"SplitFieldToRowsMeta.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, \"newfield\", newFieldname );\n      rep.saveStepAttribute( id_transformation, id_step, \"rownum\", includeRowNumber );\n      rep.saveStepAttribute( id_transformation, id_step, \"reset_rownumber\", resetRowNumber );\n      rep.saveStepAttribute( id_transformation, id_step, \"rownum_field\", rowNumberField );\n      rep.saveStepAttribute( id_transformation, id_step, \"delimiter_is_regex\", isDelimiterRegex );\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString(\n        PKG, \"SplitFieldToRowsMeta.Exception.UnableToSaveStepInfoToRepository\" )\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, \"SplitFieldToRowsMeta.CheckResult.StepReceivingFields\", prev.size() + \"\" ), stepMeta );\n      remarks.add( cr );\n","sourceCodeStart":190,"sourceCodeEnd":226,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/splitfieldtorows/SplitFieldToRowsMeta.java#L190-L226","documentation":"Thrown by SplitFieldToRowsMeta.saveRep when writing this step's attributes to the repository fails. Each saveStepAttribute call (newfield, rownum, reset_rownumber, rownum_field, delimiter_is_regex) is wrapped in a KettleException with the message key plus the id_step. Saving the transformation aborts with this error.","triggerScenarios":"Calling saveRep (directly or via TransMeta save) when the repository insert/update of step attributes fails: DB connection lost, R_STEP_ATTRIBUTE table locked or read-only, constraint violation on saved values.","commonSituations":"Read-only repository account or missing write grants; repository DB maintenance window; transformation saved concurrently by another user causing lock contention; repository quota/full tablespace errors.","solutions":["Inspect the wrapped cause for the underlying repository DB error","Verify the repository user has INSERT/UPDATE rights on step attribute tables","Reconnect the repository and retry the save","Check tablespace/disk space on the repository database","Save locally to a .ktr file as a fallback while repository issues are fixed"],"exampleFix":"// before\ntransMeta.saveRep(rep, metaStore, id_transformation);\n// after\ntry {\n  transMeta.saveRep(rep, metaStore, id_transformation);\n} catch (KettleException e) {\n  logError(\"Save to repository failed for step: \" + e.getCause());\n  transMeta.saveXml(\"local-backup.ktr\"); // preserve work\n}","handlingStrategy":"try-catch","validationCode":"// before saving\nif (!rep.isConnected()) rep.connect();\n// ensure repository user has write access: run a cheap write test if supported","typeGuard":null,"tryCatchPattern":"try { transMeta.saveRep(rep, metaStore, idTransformation); } catch (KettleException e) { logError(\"Save failed for id_step: \" + e.getCause()); transMeta.saveXml(\"backup.ktr\"); }","preventionTips":["Ensure the repository account has INSERT/UPDATE grants","Avoid simultaneous saves by multiple users","Monitor repository DB tablespace/disk space","Snapshot work to a local file before saving"],"tags":["repository","persistence","kettle"],"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"}