pentaho/pentaho-kettle · error · KettleException
ERROR_0003_Cannot_Save_Job_Entry
ERROR_0003_Cannot_Save_Job_Entry
Error message
JobEntryFilesExist.ERROR_0003_Cannot_Save_Job_Entry
What it means
Thrown by JobEntryFilesExist.saveRep when persisting the entry's argument list ('name' attribute per index) to the repository fails. The KettleDatabaseException is wrapped with a localized message containing the job id and dbe.getMessage(), without chaining the cause. The entry's file list was not saved.
Solutions
- Check repository DB health and retry the save
- Verify write privileges on r_jobentry_attribute
- Read dbe.getMessage() (embedded in the thrown message) for the SQL failure
- Reduce/verify the argument list and resolve any concurrent sessions
Defensive patterns
Strategy: try-catch
Validate before calling
// Pre-save checks
if (arguments == null || arguments.length == 0) { throw new IllegalStateException("no files configured"); }
if (rep.isReadOnly()) { throw new IllegalStateException("repository read-only"); } Try / catch
try {
jobMeta.saveRep(rep, metaStore, id_job);
} catch (KettleException e) {
logError("Save failed: " + e.getMessage());
// message embeds dbe.getMessage(); retry or export to XML
} Prevention
- Grant write privileges on r_jobentry_attribute
- Watch for DB limits on per-row attribute counts with long file lists
- Resolve concurrent Spoon sessions before saving
- Keep repository connections validated
When it happens
Trigger: Calling saveRep during a job save when any rep.saveJobEntryAttribute(id_job, objectId, i, "name", arguments[i]) call throws KettleDatabaseException — connection loss, constraint violation, permissions.
Common situations: Repository DB unavailable during save; too many arguments causing a DB limit/constraint failure; read-only repository credentials; concurrent edit conflict.
Related errors
- ERROR_0003_Cannot_Save_Job_Entry
- ERROR_0003_Cannot_Save_Job_Entry
- ERROR_0003_Unable_To_Save_Job
- Error saving database connection or one of its attributes…
- FileExistsMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/2ba3f206e02c8b66.
Report an issue: GitHub.
Appendix: source
Thrown at engine/src/main/java/org/pentaho/di/job/entries/filesexist/JobEntryFilesExist.java:160
} catch ( KettleException dbe ) {
throw new KettleException( BaseMessages
.getString( PKG, "JobEntryFilesExist.ERROR_0002_Cannot_Load_Job_From_Repository", "" + id_jobentry, dbe
.getMessage() ) );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveJobEntryAttribute( id_job, getObjectId(), "filename", filename );
// save the arguments...
if ( arguments != null ) {
for ( int i = 0; i < arguments.length; i++ ) {
rep.saveJobEntryAttribute( id_job, getObjectId(), i, "name", arguments[i] );
}
}
} catch ( KettleDatabaseException dbe ) {
throw new KettleException( BaseMessages.getString(
PKG, "JobEntryFilesExist.ERROR_0003_Cannot_Save_Job_Entry", "" + id_job, dbe.getMessage() ) );
}
}
public void setFilename( String filename ) {
this.filename = filename;
}
public String getFilename() {
return filename;
}
public String[] getArguments() {
return arguments;
}
public void setArguments( String[] arguments ) {
this.arguments = arguments;View on GitHub (pinned to f3058517a1)