{"record":{"id":"10d8e1792101116c","repo":"pentaho/pentaho-kettle","slug":"jobentrydeleteresultfilenames-cannotsavetorep","errorCode":null,"errorMessage":"JobEntryDeleteResultFilenames.CanNotSaveToRep","messagePattern":"JobEntryDeleteResultFilenames\\.CanNotSaveToRep","errorType":"exception","errorClass":"KettleXMLException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/deleteresultfilenames/JobEntryDeleteResultFilenames.java","lineNumber":127,"sourceCode":"    try {\n      foldername = rep.getJobEntryAttributeString( id_jobentry, \"foldername\" );\n      specifywildcard = rep.getJobEntryAttributeBoolean( id_jobentry, \"specify_wildcard\" );\n      wildcard = rep.getJobEntryAttributeString( id_jobentry, \"wildcard\" );\n      wildcardexclude = rep.getJobEntryAttributeString( id_jobentry, \"wildcardexclude\" );\n    } catch ( KettleException dbe ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"JobEntryDeleteResultFilenames.CanNotLoadFromRep\", \"\" + id_jobentry, dbe.getMessage() ) );\n    }\n  }\n\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"foldername\", foldername );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"specify_wildcard\", specifywildcard );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"wildcard\", wildcard );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"wildcardexclude\", wildcardexclude );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleXMLException( BaseMessages.getString(\n        PKG, \"JobEntryDeleteResultFilenames.CanNotSaveToRep\", \"\" + id_job, dbe.getMessage() ) );\n    }\n  }\n\n  public void setSpecifyWildcard( boolean specifywildcard ) {\n    this.specifywildcard = specifywildcard;\n  }\n\n  public boolean isSpecifyWildcard() {\n    return specifywildcard;\n  }\n\n  public void setFoldername( String foldername ) {\n    this.foldername = foldername;\n  }\n\n  public String getFoldername() {\n    return foldername;","sourceCodeStart":109,"sourceCodeEnd":145,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/deleteresultfilenames/JobEntryDeleteResultFilenames.java#L109-L145","documentation":"Thrown when persisting a 'Delete Result Filenames' job entry's attributes to the repository fails. saveRep() catches KettleDatabaseException from rep.saveJobEntryAttribute() and wraps it in a KettleXMLException with the job id and DB message. The repository write failed, so the entry's metadata is not saved.","triggerScenarios":"Calling saveRep() (directly or through JobMeta.save) when any of the four saveJobEntryAttribute calls fails: DB outage, locked table, missing schema, value overflow.","commonSituations":"Repository database down during save; repository tables missing after install; write permissions revoked; too-long foldername/wildcard values for column size; transaction deadlocks from concurrent saves.","solutions":["Read dbe.getMessage() in the thrown KettleXMLException for the SQL-level cause","Verify DB connectivity and that r_jobentry_attribute exists with the correct schema","Ensure the repository user has write grants on repository tables","Retry the save; trim values that exceed column lengths"],"exampleFix":"// before\nentry.saveRep(rep, metaStore, idJob); // fails without clear job id context\n// after\ntry {\n  entry.saveRep(rep, metaStore, idJob);\n} catch (KettleXMLException e) {\n  logError(\"Save to rep failed for job \" + idJob + \": \" + e.getMessage());\n  throw e;\n}","handlingStrategy":"try-catch","validationCode":"// pre-check attribute lengths against typical column limits\nif (foldername != null && foldername.length() > 255) {\n  throw new IllegalArgumentException(\"foldername exceeds repository column size\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  entry.saveRep(rep, metaStore, idJob);\n} catch (KettleXMLException e) {\n  // KettleDatabaseException message is embedded via dbe.getMessage()\n  logError(\"Save failed for job \" + idJob + \": \" + e.getMessage());\n  throw e;\n}","preventionTips":["Verify DB write access before repository saves","Keep attribute values within column size limits","Run one save transaction at a time per job to avoid deadlocks","Upgrade the repository schema after Pentaho version changes"],"tags":["kettle","database","persistence","job-entry"],"backgroundTag":"database-write-failed","analyzedSha":"f3058517a153da500bf4551f46d79b91bf8ec552","analyzedAt":"2026-09-13T14:04:16.340Z","contentChangedAt":"2026-09-13T14:04:16.340Z","schemaVersion":2},"datasetVersion":"2026-09-20T23:17:15.980Z"}