pentaho/pentaho-kettle · error · KettleException
SyslogMessageMeta.Exception.UnableToSaveStepInfo
Error message
SyslogMessageMeta.Exception.UnableToSaveStepInfo
What it means
Outer catch-all in SyslogMessageMeta.saveRep: saving the step's attributes to the repository failed (repository I/O or serialization error). The original exception is attached as the cause for diagnosis.
Solutions
- Check the repository DB is writable and has space, and inspect e.getCause() for the SQL error
- Reconnect to the repository and retry saving
- Upgrade/repair the repository schema (e.g. run repository upgrade scripts) to match your Kettle version
- Save to file (.ktr) as a fallback while fixing repository access
Example fix
// before
transMeta.save(rep, transMeta.getName(), null, true); // fails silently on cause
// after
try { transMeta.save(rep, transMeta.getName(), null, true); } catch (KettleException e) { log.error("Save failed for step " + e.getCause(), e); } Defensive patterns
Strategy: try-catch
Validate before calling
if (rep == null || !rep.isConnected() || rep.isReadOnly()) { throw new KettleException("Repository not writable before saveRep"); } Try / catch
try { meta.saveRep(rep, metaStore, id_trans, id_step); } catch (KettleException e) { logError("Repository save failed for step " + id_step + ": " + (e.getCause()!=null?e.getCause().getMessage():e.getMessage()), e); } Prevention
- Ensure the repository DB is writable and has free space
- Avoid concurrent edits of the same transformation
- Run repository upgrade scripts after Pentaho version changes
When it happens
Trigger: saveRep failing due to repository write errors, constraint violations, lock contention, or a closed/invalid repository connection during transformation save.
Common situations: Repository database read-only or out of space; concurrent edits by two users; repository schema outdated relative to the Kettle client version; session timeout.
Related errors
- AddSequenceMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
- CubeInputMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/63127b3c8b8a0a72.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/trans/steps/syslog/SyslogMessageMeta.java:273
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString(
PKG, "SyslogMessageMeta.Exception.UnexpectedErrorReadingStepInfo" ), e );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_transformation, ObjectId id_step ) throws KettleException {
try {
rep.saveStepAttribute( id_transformation, id_step, "messagefieldname", messagefieldname );
rep.saveJobEntryAttribute( id_transformation, id_step, "port", port );
rep.saveJobEntryAttribute( id_transformation, id_step, "servername", serverName );
rep.saveJobEntryAttribute( id_transformation, id_step, "facility", facility );
rep.saveJobEntryAttribute( id_transformation, id_step, "priority", priority );
rep.saveJobEntryAttribute( id_transformation, id_step, "datePattern", datePattern );
rep.saveJobEntryAttribute( id_transformation, id_step, "addTimestamp", addTimestamp );
rep.saveJobEntryAttribute( id_transformation, id_step, "addHostName", addHostName );
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG, "SyslogMessageMeta.Exception.UnableToSaveStepInfo" )
+ id_step, e );
}
}
public void check( List<CheckResultInterface> remarks, TransMeta transMeta, StepMeta stepMeta,
RowMetaInterface prev, String[] input, String[] output, RowMetaInterface info, VariableSpace space,
Repository repository, IMetaStore metaStore ) {
CheckResult cr;
String error_message = "";
// source filename
if ( Utils.isEmpty( messagefieldname ) ) {
error_message = BaseMessages.getString( PKG, "SyslogMessageMeta.CheckResult.MessageFieldMissing" );
cr = new CheckResult( CheckResult.TYPE_RESULT_ERROR, error_message, stepMeta );
remarks.add( cr );
} else {
error_message = BaseMessages.getString( PKG, "SyslogMessageMeta.CheckResult.MessageFieldOK" );
cr = new CheckResult( CheckResult.TYPE_RESULT_OK, error_message, stepMeta );View on GitHub (pinned to f3058517a1)