{"record":{"id":"21dfd96f20a68b0a","repo":"pentaho/pentaho-kettle","slug":"jobxmlwellformed-error-exception-unablesaverep-id-job","errorCode":null,"errorMessage":"JobXMLWellFormed.Error.Exception.UnableSaveRep + id_job","messagePattern":"JobXMLWellFormed\\.Error\\.Exception\\.UnableSaveRep \\+ id_job","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/xml/core/src/main/java/org/pentaho/di/job/entries/xmlwellformed/JobEntryXMLWellFormed.java","lineNumber":222,"sourceCode":"\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    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        }\n      }\n    } catch ( KettleDatabaseException dbe ) {\n\n      throw new KettleException( BaseMessages.getString( PKG, \"JobXMLWellFormed.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 = result.getRows();\n    RowMetaAndData resultRow = null;\n\n    NrErrors = 0;\n    NrWellFormed = 0;\n    NrBadFormed = 0;\n    limitFiles = Const.toInt( environmentSubstitute( getNrErrorsLessThan() ), 10 );\n    successConditionBroken = false;\n    successConditionBrokenExit = false;","sourceCodeStart":204,"sourceCodeEnd":240,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/xml/core/src/main/java/org/pentaho/di/job/entries/xmlwellformed/JobEntryXMLWellFormed.java#L204-L240","documentation":"JobEntryXMLWellFormed.saveRep() failed while writing the entry's attributes (indexed source_filefolder/wildcard entries) to the repository for id_job. The wrapped KettleDatabaseException indicates the repository write failed at the database level.","triggerScenarios":"saveRep() loops over source_filefolder/wildcard arrays calling rep.saveJobEntryAttribute(id_job, objectId, i, ...) and the repository throws KettleDatabaseException — DB down, constraint violation, permissions, or too many rows.","commonSituations":"Repository database offline or dropped connection during save; write permissions missing on repository tables; storage limits exceeded by many attribute rows; lock contention from concurrent saves.","solutions":["Check repository database connectivity and the wrapped KettleDatabaseException for the root cause","Verify the repository user can INSERT/UPDATE r_jobentry_attribute","Retry after resolving locks or concurrent-edit conflicts","Free repository DB space or archive old jobs if storage limits are hit"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if ( rep.getSecurityProvider().isReadOnly() ) {\n  throw new KettleException( \"Repository is read-only; cannot save job entry\" );\n}","typeGuard":null,"tryCatchPattern":"try {\n  saveJobToRepository( rep, metaStore, jobId );\n} catch ( KettleException e ) {\n  if ( e.getMessage().contains( \"UnableSaveRep\" ) ) {\n    logError( \"Repository save of XMLWellFormed entry failed: \" + e.getCause() );\n  } else { throw e; }\n}","preventionTips":["Ensure repository DB is up and writable before long save operations","Confirm write privileges on r_jobentry_attribute for the repository user","Prevent concurrent edits of the same job","Monitor repository storage growth from indexed attribute rows"],"tags":["kettle","repository","job-entry","database-write","persistence"],"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"}