{"record":{"id":"9254bdd86a650349","repo":"pentaho/pentaho-kettle","slug":"jobxmlwellformed-error-exception-unableloadrep-id-jobentry","errorCode":null,"errorMessage":"JobXMLWellFormed.Error.Exception.UnableLoadRep + id_jobentry","messagePattern":"JobXMLWellFormed\\.Error\\.Exception\\.UnableLoadRep \\+ id_jobentry","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/xml/core/src/main/java/org/pentaho/di/job/entries/xmlwellformed/JobEntryXMLWellFormed.java","lineNumber":200,"sourceCode":"      include_subfolders = rep.getJobEntryAttributeBoolean( id_jobentry, \"include_subfolders\" );\n\n      nr_errors_less_than = rep.getJobEntryAttributeString( id_jobentry, \"nr_errors_less_than\" );\n      success_condition = rep.getJobEntryAttributeString( id_jobentry, \"success_condition\" );\n      resultfilenames = rep.getJobEntryAttributeString( id_jobentry, \"resultfilenames\" );\n\n      // How many arguments?\n      int argnr = rep.countNrJobEntryAttributes( id_jobentry, \"source_filefolder\" );\n      source_filefolder = new String[argnr];\n      wildcard = new String[argnr];\n\n      // Read them all...\n      for ( int a = 0; a < argnr; a++ ) {\n        source_filefolder[a] = rep.getJobEntryAttributeString( id_jobentry, a, \"source_filefolder\" );\n        wildcard[a] = rep.getJobEntryAttributeString( id_jobentry, a, \"wildcard\" );\n      }\n    } catch ( KettleException dbe ) {\n\n      throw new KettleException( BaseMessages.getString( PKG, \"JobXMLWellFormed.Error.Exception.UnableLoadRep\" )\n          + id_jobentry, dbe );\n    }\n  }\n\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        }","sourceCodeStart":182,"sourceCodeEnd":218,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/xml/core/src/main/java/org/pentaho/di/job/entries/xmlwellformed/JobEntryXMLWellFormed.java#L182-L218","documentation":"JobEntryXMLWellFormed.loadRep() failed while reading the entry's attributes (including indexed source_filefolder/wildcard values) from the repository for the given id_jobentry. The underlying KettleException from the repository is wrapped with the localized 'UnableLoadRep' message.","triggerScenarios":"loadRep() loops argnr times calling rep.getJobEntryAttributeString(id_jobentry, a, ...) and the repository throws KettleException — missing attribute rows, DB failure, or schema mismatch.","commonSituations":"Repository rows for the entry partially deleted; repository database connectivity issue; entry saved by an incompatible PDI version with a different attribute layout; nr/argnr mismatch between saved and expected attribute indices.","solutions":["Check repository database connectivity and inspect the wrapped exception","Verify r_jobentry_attribute rows exist for id_jobentry with the expected attribute indices","Re-save the job entry from Spoon to rewrite its attributes consistently","Upgrade/migrate the repository schema to the PDI version in use"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// verify attribute rows for id_jobentry exist with contiguous nr indices\n// SELECT nr, COUNT(*) FROM r_jobentry_attribute WHERE id_jobentry = ? GROUP BY nr;","typeGuard":null,"tryCatchPattern":"try {\n  jobMeta.loadRep( rep, metaStore, jobId, null, null );\n} catch ( KettleException e ) {\n  if ( e.getMessage().contains( \"UnableLoadRep\" ) ) {\n    logError( \"Missing repository attributes for XMLWellFormed entry: \" + e.getCause() );\n  } else { throw e; }\n}","preventionTips":["Verify repository integrity after failed or interrupted saves","Keep PDI versions consistent across save/load environments","Avoid manual manipulation of r_jobentry_attribute rows","Re-save entries whose attribute rows look inconsistent"],"tags":["kettle","repository","job-entry","database","deserialization"],"backgroundTag":"database-query-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"}