pentaho/pentaho-kettle · error · KettleException
Unable to save step information to the repository for…
Error message
Unable to save step information to the repository for id_step=
What it means
JsonOutputMeta.saveRep persists the step's settings to the Kettle repository via rep.saveStepAttribute; any exception is wrapped as 'Unable to save step information to the repository for id_step=<id>'. It means saving this step's metadata (including its output field grid) failed at the repository layer.
Solutions
- Check repository database connectivity, disk space, and write permissions for your repository user.
- Retry the save after reconnecting; check for locks or stale sessions in the repository.
- Verify the repository schema matches your PDI version (run the repository upgrade/repair SQL).
- As a workaround, save the transformation as a local .ktr file, fix the repository, then re-save.
Defensive patterns
Strategy: try-catch
Try / catch
try { repository.save(transMeta, "desc", null, true); } catch (KettleException e) {
if (e.getMessage().startsWith("Unable to save step information to the repository")) {
log.error("Repository save failed; export to .ktr as backup and check DB", e);
}
throw e;
} Prevention
- Save a local .ktr copy before saving to the repository.
- Ensure repository users have write permissions and DB has free space.
- Keep PDI client and repository schema versions aligned.
When it happens
Trigger: Saving a transformation to a database/enterprise repository where saveStepAttribute throws — connection loss, transaction failure, read-only repository, or constraint violations in the attribute tables.
Common situations: Repository DB read-only or out of space; connection dropped mid-save; insufficient user permissions on the repository; repository schema mismatch after a PDI version upgrade.
Related errors
- GPLoadMeta.Exception.UnableToSaveStepInfoToRepository
- GroupByMeta.Exception.UnexpectedErrorInReadingStepInfoFromRepository
- GroupByMeta.Exception.UnableToSaveStepInfoToRepository
- JobCopyFiles.Error.Exception.UnableSaveRep
- JobEntryCopyMoveResultFilenames.CanNotSaveToRep
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/6770acb06ff68aae.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/json/core/src/main/java/org/pentaho/di/trans/steps/jsonoutput/JsonOutputMeta.java:445
rep.saveStepAttribute( id_transformation, id_step, "file_name", fileName );
rep.saveStepAttribute( id_transformation, id_step, "file_extention", extension );
rep.saveStepAttribute( id_transformation, id_step, "file_append", fileAppended );
rep.saveStepAttribute( id_transformation, id_step, "file_add_stepnr", stepNrInFilename );
rep.saveStepAttribute( id_transformation, id_step, "file_add_partnr", partNrInFilename );
rep.saveStepAttribute( id_transformation, id_step, "file_add_date", dateInFilename );
rep.saveStepAttribute( id_transformation, id_step, "file_add_time", timeInFilename );
rep.saveStepAttribute( id_transformation, id_step, "create_parent_folder", createparentfolder );
rep.saveStepAttribute( id_transformation, id_step, "DoNotOpenNewFileInit", DoNotOpenNewFileInit );
rep.saveStepAttribute( id_transformation, id_step, "file_servlet_output", servletOutput );
for ( int i = 0; i < outputFields.length; i++ ) {
JsonOutputField field = outputFields[i];
rep.saveStepAttribute( id_transformation, id_step, i, "field_name", field.getFieldName() );
rep.saveStepAttribute( id_transformation, id_step, i, "field_element", field.getElementName() );
}
} catch ( Exception e ) {
throw new KettleException( "Unable to save step information to the repository for id_step=" + id_step, e );
}
}
public String buildFilename( String filename, Date date ) {
SimpleDateFormat daf = new SimpleDateFormat();
// Replace possible environment variables...
StringBuilder filenameOutput = new StringBuilder( filename );
if ( dateInFilename ) {
daf.applyPattern( BaseFileOutputMeta.DEFAULT_DATE_FORMAT );
String d = daf.format( date );
filenameOutput.append( '_' ).append( d );
}
if ( timeInFilename ) {
daf.applyPattern( BaseFileOutputMeta.DEFAULT_TIME_FORMAT );
String t = daf.format( date );
filenameOutput.append( '_' ).append( t );View on GitHub (pinned to f3058517a1)