{"record":{"id":"a024d7c9664a4d9c","repo":"pentaho/pentaho-kettle","slug":"unable-to-save-step-information-to-the-repository-for-idstep-a024d7","errorCode":null,"errorMessage":"Unable to save step information to the repository for idStep=","messagePattern":"Unable to save step information to the repository for idStep=","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/dimoutput/PaloDimOutputMeta.java","lineNumber":236,"sourceCode":"      rep.saveStepAttribute( idTransformation, idStep, \"elementtype\", this.elementType );\n      rep.saveStepAttribute( idTransformation, idStep, \"createdimension\", this.createNewDimension );\n      rep.saveStepAttribute( idTransformation, idStep, \"cleardimension\", this.clearDimension );\n      rep.saveStepAttribute( idTransformation, idStep, \"clearconsolidations\", this.clearConsolidations );\n      rep.saveStepAttribute( idTransformation, idStep, \"recreatedimension\", this.recreateDimension );\n      rep.saveStepAttribute( idTransformation, idStep, \"enableElementCache\", this.enableElementCache );\n      rep.saveStepAttribute( idTransformation, idStep, \"preloadElementCache\", this.preloadElementCache );\n\n      for ( int i = 0; i < levels.size(); i++ ) {\n        rep.saveStepAttribute( idTransformation, idStep, i, \"levelname\", this.levels.get( i ).getLevelName() );\n        rep.saveStepAttribute( idTransformation, idStep, i, \"levelnumber\", this.levels.get( i ).getLevelNumber() );\n        rep.saveStepAttribute( idTransformation, idStep, i, \"fieldname\", this.levels.get( i ).getFieldName() );\n        rep.saveStepAttribute( idTransformation, idStep, i, \"fieldtype\", this.levels.get( i ).getFieldType() );\n        rep.saveStepAttribute( idTransformation, idStep, i, \"consolidationfieldname\", this.levels.get( i )\n            .getConsolidationFieldName() );\n      }\n\n    } catch ( Exception e ) {\n      throw new KettleException( \"Unable to save step information to the repository for idStep=\" + idStep, e );\n    }\n  }\n\n  public final void check( final List<CheckResultInterface> remarks, final TransMeta transMeta,\n      final StepMeta stepMeta, final RowMetaInterface prev, final String[] input, final String[] output,\n      final RowMetaInterface info, VariableSpace space, Repository repository, IMetaStore metaStore ) {\n\n    CheckResult cr;\n\n    if ( databaseMeta != null ) {\n      cr = new CheckResult( CheckResultInterface.TYPE_RESULT_OK, \"Connection exists\", stepMeta );\n      remarks.add( cr );\n\n      final PaloHelper helper = new PaloHelper( databaseMeta, DefaultLogLevel.getLogLevel() );\n      try {\n        helper.connect();\n        cr = new CheckResult( CheckResultInterface.TYPE_RESULT_OK, \"Connection to database OK\", stepMeta );\n        remarks.add( cr );","sourceCodeStart":218,"sourceCodeEnd":254,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/palo/core/src/main/java/org/pentaho/di/trans/steps/palo/dimoutput/PaloDimOutputMeta.java#L218-L254","documentation":"PaloDimOutputMeta.saveRep persists level attributes via rep.saveStepAttribute(...). Any exception is wrapped as 'Unable to save step information to the repository for idStep=' + idStep, so changes to the step cannot be saved to the repository.","triggerScenarios":"Repository write fails while saving step attributes: repository connection dropped, read-only repository/permissions, storage quota, or DB constraint violation on the step attribute table.","commonSituations":"Repository DB restarted mid-save; user lacks write permission on the repository; saving a very large number of levels exceeding a column limit; repository in read-only/maintenance mode.","solutions":["Check the wrapped cause for the underlying SQL/repository error","Verify repository connectivity and that the user has write permissions","Retry saving; if a specific attribute is too large, shorten level/field metadata","Save the transformation locally as a KTR while the repository is unavailable"],"exampleFix":"// before\nrep.saveStepAttribute(id, idStep, i, \"fieldname\", veryLongName); // exceeds column length\n// after\nrep.saveStepAttribute(id, idStep, i, \"fieldname\", shortenedName); // within DB column limit","handlingStrategy":"try-catch","validationCode":"// check write access before saving\nif (!rep.getConnection().isReadOnly()) { saveStep(); }","typeGuard":null,"tryCatchPattern":"try { meta.saveRep(rep, metaStore, transId, stepId); } catch (KettleException e) {\n  logError(\"Repository save failed: \" + e.getCause(), e);\n  saveLocally(); // fallback\n}","preventionTips":["Confirm repository user has write permissions","Avoid saving during repository maintenance/read-only windows","Save a local KTR copy as fallback","Keep level metadata within DB column limits"],"tags":["repository","persistence","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"}