pentaho/pentaho-kettle · error · KettleException
unable to save jobentry of type 'file exists' to the…
Error message
unable to save jobentry of type 'file exists' to the repository for id_job=
What it means
Thrown by PaloCubeDelete.saveRep when persisting the job entry's settings (database connection and cube name) to the Kettle repository fails with a KettleDatabaseException. The message text ('file exists') is a copy-paste bug — the actual entry type is a Palo cube delete job entry. The underlying KettleDatabaseException is chained as the cause.
Solutions
- Check the chained KettleDatabaseException cause for the real repository failure (connectivity, schema, permissions).
- Verify the Kettle repository is reachable and the user has write permissions on job entry attribute tables.
- Re-save or recreate the job entry; verify getObjectId() is valid before saving.
- Fix the copy-pasted message text to reference the Palo cube delete type for accurate diagnostics.
Example fix
// before throw new KettleException( "unable to save jobentry of type 'file exists' to the repository for id_job=" + id_job, dbe ); // after throw new KettleException( "unable to save jobentry of type 'palo cube delete' to the repository for id_job=" + id_job, dbe );
Defensive patterns
Strategy: try-catch
Validate before calling
if (jobEntry.getObjectId() == null || id_job < 0) { throw new IllegalStateException("job entry not initialized before save"); } Try / catch
try { jobMeta.saveRep(...) } catch (KettleException e) { log.error("repository save failed", e.getCause()); /* retry or surface to user */ } Prevention
- Keep the repository database healthy and reachable before saving jobs
- Always check the chained cause of KettleException for the true repository error
- Initialize job entries (valid ObjectId) before saving
When it happens
Trigger: Calling saveRep (during job save) when rep.saveDatabaseMetaJobEntryAttribute or rep.saveStepAttribute for 'cubeName' throws KettleDatabaseException, e.g. repository DB down, schema mismatch, or missing id_job/object id.
Common situations: Repository database unavailable or connection dropped mid-save; corrupt repository metadata tables; saving a job whose entry was never fully initialized (null ObjectId); repository permission problems.
Related errors
- Unexpected error reading step information from the…
- AddSequenceMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnableToSaveStepInfo
- ColumnExistsMeta.Exception.UnexpectedErrorReadingStepInfo
- CreditCardValidatorMeta.Exception.UnableToSaveStepInfo
AI-assisted analysis of pentaho/pentaho-kettle@f3058517a1 (2026-09-13).
Data as JSON: /api/errors/04bd5e92e525e72e.
Report an issue: GitHub.
Appendix: source
Thrown at plugins/palo/core/src/main/java/org/pentaho/di/job/entries/palo/JobEntryCubeDelete/PaloCubeDelete.java:116
try {
this.databaseMeta =
rep.loadDatabaseMetaFromJobEntryAttribute( id_jobentry, "connection", "id_database", databases );
this.setCubeName( rep.getStepAttributeString( id_jobentry, "cubeName" ) );
} catch ( KettleException dbe ) {
throw new KettleException( "Unable to load job entry for type file exists from the repository for id_jobentry="
+ id_jobentry, dbe );
}
}
public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {
try {
rep.saveDatabaseMetaJobEntryAttribute( id_job, getObjectId(), "connection", "id_database", databaseMeta );
rep.saveStepAttribute( id_job, getObjectId(), "cubeName", this.getCubeName() );
} catch ( KettleDatabaseException dbe ) {
throw new KettleException(
"unable to save jobentry of type 'file exists' to the repository for id_job=" + id_job, dbe );
}
}
public Result execute( Result prevResult, int nr ) throws KettleException {
Result result = new Result( nr );
result.setResult( false );
logDetailed( toString(), "Start of processing" );
// String substitution..
String realCubeName = environmentSubstitute( getCubeName() );
PaloHelper database = new PaloHelper( this.getDatabaseMeta(), getLogLevel() );
try {
database.connect();
int cubesremoved = database.removeCube( realCubeName );View on GitHub (pinned to f3058517a1)