{"record":{"id":"30beb5792ca6be08","repo":"pentaho/pentaho-kettle","slug":"unable-to-save-step-information-to-the-repository-for-id-30beb5","errorCode":null,"errorMessage":"Unable to save step information to the repository for id_step=","messagePattern":"Unable to save step information to the repository for id_step=","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/mondrianinput/impl/src/main/java/org/pentaho/di/trans/steps/mondrianinput/MondrianInputMeta.java","lineNumber":225,"sourceCode":"    } catch ( Exception e ) {\n      throw new KettleException( \"Unexpected error reading step information from the repository\", e );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {\n    try {\n      rep.saveDatabaseMetaStepAttribute( id_transformation, id_step, \"id_connection\", databaseMeta );\n      rep.saveStepAttribute( id_transformation, id_step, \"sql\", sql );\n      rep.saveStepAttribute( id_transformation, id_step, \"catalog\", catalog );\n      rep.saveStepAttribute( id_transformation, id_step, \"role\", role );\n      rep.saveStepAttribute( id_transformation, id_step, \"variables_active\", variableReplacementActive );\n\n      // Also, save the step-database relationship!\n      if ( databaseMeta != null ) {\n        rep.insertStepDatabase( id_transformation, id_step, databaseMeta.getObjectId() );\n      }\n    } catch ( Exception e ) {\n      throw new KettleException( \"Unable to save step information to the repository for id_step=\" + 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    CheckResult cr;\n\n    if ( databaseMeta != null ) {\n      cr = new CheckResult( CheckResultInterface.TYPE_RESULT_OK, \"Connection exists\", stepMeta );\n      remarks.add( cr );\n\n      // TODO: perform lookup to see if it all works fine.\n    } else {\n      cr =\n        new CheckResult(\n          CheckResultInterface.TYPE_RESULT_ERROR, \"Please select or create a connection to use\", stepMeta );\n      remarks.add( cr );","sourceCodeStart":207,"sourceCodeEnd":243,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/mondrianinput/impl/src/main/java/org/pentaho/di/trans/steps/mondrianinput/MondrianInputMeta.java#L207-L243","documentation":"MondrianInputMeta.saveRep persists the step configuration (connection link, sql, catalog, role, variables_active) to the repository. Any exception during the save is wrapped in a KettleException that includes the failing id_step. It means the step's settings could not be written, so the transformation is not fully persisted.","triggerScenarios":"saveRep is called when saving a transformation and the repository rejects a write (connection lost, insertStepDatabase constraint violation on the connection id, read-only repository).","commonSituations":"Repository database read-only or out of space; broken databaseMeta reference with an invalid object id; concurrent save conflicts; repository schema mismatch after upgrade.","solutions":["Check repository connectivity and that the account has write permissions","Verify the referenced databaseMeta connection still exists in the repository (valid object id)","Retry the save after resolving the root cause shown in the wrapped exception","Repair/upgrade the repository schema if tables are missing columns for newer attributes"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// Pre-check write access and connection existence before saving\nif (databaseMeta != null && rep.searchDatabaseMeta(databaseMeta.getName()) == null) {\n  throw new IllegalStateException(\"Connection '\" + databaseMeta.getName() + \"' not in repository; save it first\");\n}","typeGuard":"null","tryCatchPattern":"try {\n  transMeta.saveRep(rep, metaStore, directoryId, transName);\n} catch (KettleException e) {\n  if (e.getMessage().startsWith(\"Unable to save step information to the repository\")) {\n    logError(\"Step save failed (transformation NOT persisted): \" + e.getMessage(), e);\n  }\n}","preventionTips":["Check repository disk space and write status before bulk edits","Save referenced database connections to the repository before referencing them","Avoid concurrent edits to the same transformation","Verify repository schema version matches the PDI release"],"tags":["repository","persistence","pdi","write-failed"],"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"}