pentaho/pentaho-kettle · error · KettleException
ElasticSearchBulkMeta.Exception.ErrorSavingToRepository
ElasticSearchBulkMeta.Exception.ErrorSavingToRepository
Error message
ElasticSearchBulkMeta.Exception.ErrorSavingToRepository
What it means
ElasticSearchBulkMeta.saveRep() persists each setting as a numbered step attribute; any failure is wrapped in a KettleException keyed 'ElasticSearchBulkMeta.Exception.ErrorSavingToRepository' with the id_step appended. It means the step's configuration could not be written to the repository.
Solutions
- Verify repository DB is writable and the connection is alive, then retry the save
- Check r_step_attribute for constraint/data issues (e.g. column length) blocking the write
- As a workaround, save the transformation as XML instead of the repository
Defensive patterns
Strategy: retry
Validate before calling
// before saving: confirm repository is writable SELECT 1; -- connectivity probe // ensure user has INSERT/UPDATE rights on r_step_attribute
Try / catch
try { saveRep(rep, metaStore, idTrans, idStep); } catch (KettleException e) {
log.error("Repository save failed for id_step=" + idStep + ": " + e.getMessage(), e);
// retry once after reconnect, else export to XML
} Prevention
- Verify repository user has write permissions before saving
- Watch for database disk-space and connection-pool exhaustion
- Keep XML exports as a fallback save format
When it happens
Trigger: saveRep (public) called when saving a transformation: rep.saveStepAttribute throws due to repository connection loss, transaction failure, or constraint violation on the attribute rows.
Common situations: Repository DB read-only or out of space, connection dropped mid-save, saving a very large settings list into r_step_attribute.
Related errors
- ElasticSearchBulkMeta.Exception.ErrorReadingRepository
- GPLoadMeta.Exception.UnexpectedErrorReadingStepInfoFromRepos…
- JobEntryMSAccessBulkLoad.Meta.UnableLoadRep
- JsonInputMeta.Exception.ErrorReadingRepository
- LDIFInputMeta.Exception.ErrorReadingRepository
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/4ec9331a7d4baef7.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/elasticsearch-bulk-insert/core/src/main/java/org/pentaho/di/trans/steps/elasticsearchbulk/ElasticSearchBulkMeta.java:698
// Servers
for ( int i = 0; i < servers.size(); i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, joinRepAttr( Dom.TAG_SERVER, Dom.TAG_SERVER_ADDRESS ),
servers.get( i ).address );
rep.saveStepAttribute( id_transformation, id_step, i, joinRepAttr( Dom.TAG_SERVER, Dom.TAG_SERVER_PORT ),
servers.get( i ).port );
}
// Settings
for ( int i = 0; i < settings.size(); i++ ) {
rep.saveStepAttribute( id_transformation, id_step, i, joinRepAttr( Dom.TAG_SETTING, Dom.TAG_SETTING_NAME ),
settings.get( i ).setting );
rep.saveStepAttribute( id_transformation, id_step, i, joinRepAttr( Dom.TAG_SETTING, Dom.TAG_SETTING_VALUE ),
settings.get( i ).value );
}
} catch ( Exception e ) {
throw new KettleException( BaseMessages.getString( PKG,
"ElasticSearchBulkMeta.Exception.ErrorSavingToRepository", "" + 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 ) {
checkBasicRequiredFields( remarks, stepMeta );
checkInputFields( remarks, prev, stepMeta );
}
private void checkBasicRequiredFields( List<CheckResultInterface> remarks, StepMeta stepMeta ) {
checkRequiredString( remarks, stepMeta, getIndex(), BaseMessages.getString( PKG,
"ElasticSearchBulkDialog.Index.Label" ) );
checkRequiredString( remarks, stepMeta, getType(), BaseMessages.getString( PKG,View on GitHub (pinned to f3058517a1)