{"record":{"id":"61d5d9c85b1e1261","repo":"pentaho/pentaho-kettle","slug":"nullifmeta-exception-unabletosavestepinfotorepository","errorCode":null,"errorMessage":"NullIfMeta.Exception.UnableToSaveStepInfoToRepository","messagePattern":"NullIfMeta\\.Exception\\.UnableToSaveStepInfoToRepository","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/trans/steps/nullif/NullIfMeta.java","lineNumber":226,"sourceCode":"      for ( int i = 0; i < nrfields; i++ ) {\n        fields[i].setFieldName( rep.getStepAttributeString( id_step, i, \"field_name\" ) );\n        fields[i].setFieldValue( rep.getStepAttributeString( id_step, i, \"field_value\" ) );\n      }\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString( PKG,\n          \"NullIfMeta.Exception.UnexpectedErrorReadingStepInfoFromRepository\" ), e );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step )\n    throws KettleException {\n    try {\n      for ( int i = 0; i < fields.length; i++ ) {\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_name\", fields[i].getFieldName() );\n        rep.saveStepAttribute( id_transformation, id_step, i, \"field_value\", fields[i].getFieldValue() );\n      }\n    } catch ( Exception e ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"NullIfMeta.Exception.UnableToSaveStepInfoToRepository\" )\n          + id_step, e );\n    }\n\n  }\n\n  public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta, RowMetaInterface prev,\n      String[] input, String[] output, RowMetaInterface info, VariableSpace space, Repository repository,\n      IMetaStore metaStore ) {\n    CheckResult cr;\n    if ( prev == null || prev.size() == 0 ) {\n      cr =\n          new CheckResult( CheckResultInterface.TYPE_RESULT_WARNING, BaseMessages.getString( PKG,\n              \"NullIfMeta.CheckResult.NoReceivingFieldsError\" ), stepMeta );\n      remarks.add( cr );\n    } else {\n      cr =\n          new CheckResult( CheckResultInterface.TYPE_RESULT_OK, BaseMessages.getString( PKG,\n              \"NullIfMeta.CheckResult.StepReceivingFieldsOK\", prev.size() + \"\" ), stepMeta );","sourceCodeStart":208,"sourceCodeEnd":244,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/trans/steps/nullif/NullIfMeta.java#L208-L244","documentation":"NullIfMeta.saveRep() writes the step's field_name/field_value attributes to the repository. Any failure in rep.saveStepAttribute(...) is wrapped in a KettleException with this message plus id_step, chaining the original cause.","triggerScenarios":"Calling saveRep(rep, metaStore, id_transformation, id_step) when a repository write fails — DB offline, permissions, constraint violation, or connection drop mid-save.","commonSituations":"Read-only repository account; network outage while saving a transformation; repository DB at capacity; schema mismatch after Pentaho upgrade.","solutions":["Inspect getCause() for the concrete database error.","Confirm the repository user has write access and the DB is healthy.","Retry saving the transformation after restoring connectivity.","Run repository upgrade scripts if schema versions differ."],"exampleFix":"null","handlingStrategy":"retry","validationCode":"// Check repository user permissions / connectivity before save","typeGuard":null,"tryCatchPattern":"try { meta.saveRep(rep, metaStore, transId, stepId); } catch (KettleException e) { log.error(\"Failed saving Null If step \" + stepId + \": \" + e.getCause(), e); /* retry or alert */ }","preventionTips":["Ensure repository DB is writable and healthy before bulk saves.","Use dedicated service accounts with correct grants.","Retry saves with backoff on transient connection failures.","Keep repository schema current."],"tags":["kettle","repository","database","metadata-save"],"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"}