{"record":{"id":"a569bfabd19c82f0","repo":"pentaho/pentaho-kettle","slug":"jobdostounix-error-exception-unablesaverep","errorCode":null,"errorMessage":"JobDosToUnix.Error.Exception.UnableSaveRep","messagePattern":"JobDosToUnix\\.Error\\.Exception\\.UnableSaveRep","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/dostounix/JobEntryDosToUnix.java","lineNumber":296,"sourceCode":"    try {\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"arg_from_previous\", arg_from_previous );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"include_subfolders\", include_subfolders );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"nr_errors_less_than\", nr_errors_less_than );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"success_condition\", success_condition );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"resultfilenames\", resultfilenames );\n\n      // save the arguments...\n      if ( source_filefolder != null ) {\n        for ( int i = 0; i < source_filefolder.length; i++ ) {\n          rep.saveJobEntryAttribute( id_job, getObjectId(), i, \"source_filefolder\", source_filefolder[i] );\n          rep.saveJobEntryAttribute( id_job, getObjectId(), i, \"wildcard\", wildcard[i] );\n          rep.saveJobEntryAttribute(\n            id_job, getObjectId(), \"ConversionType\", getConversionTypeCode( conversionTypes[i] ) );\n        }\n      }\n    } catch ( KettleDatabaseException dbe ) {\n\n      throw new KettleException( BaseMessages.getString( PKG, \"JobDosToUnix.Error.Exception.UnableSaveRep\" )\n        + id_job, dbe );\n    }\n  }\n\n  public Result execute( Result previousResult, int nr ) throws KettleException {\n    Result result = previousResult;\n    result.setNrErrors( 1 );\n    result.setResult( false );\n\n    List<RowMetaAndData> rows = previousResult.getRows();\n    RowMetaAndData resultRow = null;\n\n    nrErrors = 0;\n    nrProcessedFiles = 0;\n    nrErrorFiles = 0;\n    limitFiles = Const.toInt( environmentSubstitute( getNrErrorsLessThan() ), 10 );\n    successConditionBroken = false;\n    successConditionBrokenExit = false;","sourceCodeStart":278,"sourceCodeEnd":314,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/dostounix/JobEntryDosToUnix.java#L278-L314","documentation":"Thrown when saving a 'DOS to Unix' job entry's attributes (including ConversionType codes) to the repository fails. saveRep() wraps the KettleDatabaseException in a KettleException with this message plus the job id and the cause chained. The entry's metadata was not persisted.","triggerScenarios":"Calling saveRep() (via JobMeta.save) when rep.saveJobEntryAttribute() throws: DB down, table locked/missing, write permission denied, or value overflow mid-loop.","commonSituations":"Repository database outage during save; schema not installed/upgraded; DB user lacking INSERT/UPDATE grants; concurrent saves causing lock timeouts.","solutions":["Read the chained KettleDatabaseException cause for the concrete SQL error","Confirm repository tables exist and are up to date (run upgrade scripts)","Grant the repository user write privileges on repository tables","Retry the save after resolving DB connectivity/locks"],"exampleFix":"// before\nentry.saveRep(rep, metaStore, idJob); // throws with message + id only\n// after\ntry {\n  entry.saveRep(rep, metaStore, idJob);\n} catch (KettleException e) {\n  logError(\"UnableSaveRep job \" + idJob + \" cause: \" + e.getCause());\n  throw e;\n}","handlingStrategy":"try-catch","validationCode":"if (rep instanceof KettleDatabaseRepository\n    && !((KettleDatabaseRepository) rep).isConnected()) {\n  throw new IllegalStateException(\"Repository not connected; save aborted\");\n}","typeGuard":null,"tryCatchPattern":"try {\n  entry.saveRep(rep, metaStore, idJob);\n} catch (KettleException e) {\n  logError(\"UnableSaveRep job=\" + idJob + \" cause=\" + e.getCause());\n  throw e;\n}","preventionTips":["Check repository connectivity before save operations","Keep the repository schema at the correct Pentaho version","Grant write privileges on repository tables to the runtime user","Avoid concurrent saves of the same job entry"],"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"}