{"record":{"id":"f854a779923f632c","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-job-entry-of-type-dtdvalidator-from-the","errorCode":null,"errorMessage":"Unable to load job entry of type 'DTDvalidator' from the repository for id_jobentry=${id_jobentry}","messagePattern":"Unable to load job entry of type 'DTDvalidator' from the repository for id_jobentry=(.+?)","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/xml/core/src/main/java/org/pentaho/di/job/entries/dtdvalidator/JobEntryDTDValidator.java","lineNumber":113,"sourceCode":"      super.loadXML( entrynode, databases, slaveServers );\n      xmlfilename = XMLHandler.getTagValue( entrynode, \"xmlfilename\" );\n      dtdfilename = XMLHandler.getTagValue( entrynode, \"dtdfilename\" );\n      dtdintern = \"Y\".equalsIgnoreCase( XMLHandler.getTagValue( entrynode, \"dtdintern\" ) );\n\n    } catch ( KettleXMLException xe ) {\n      throw new KettleXMLException( \"Unable to load job entry of type 'DTDvalidator' from XML node\", xe );\n    }\n  }\n\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,\n      List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      xmlfilename = rep.getJobEntryAttributeString( id_jobentry, \"xmlfilename\" );\n      dtdfilename = rep.getJobEntryAttributeString( id_jobentry, \"dtdfilename\" );\n      dtdintern = rep.getJobEntryAttributeBoolean( id_jobentry, \"dtdintern\" );\n\n    } catch ( KettleException dbe ) {\n      throw new KettleException( \"Unable to load job entry of type 'DTDvalidator' from the repository for id_jobentry=\"\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(), \"xmlfilename\", xmlfilename );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"dtdfilename\", dtdfilename );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"dtdintern\", dtdintern );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( \"Unable to save job entry of type 'DTDvalidator' to the repository for id_job=\"\n          + id_job, dbe );\n    }\n  }\n\n  public String getRealxmlfilename() {\n    return environmentSubstitute( xmlfilename );\n  }","sourceCodeStart":95,"sourceCodeEnd":131,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/xml/core/src/main/java/org/pentaho/di/job/entries/dtdvalidator/JobEntryDTDValidator.java#L95-L131","documentation":"JobEntryDTDValidator.loadRep() failed while reading the entry's attributes (xmlfilename, dtdfilename, dtdintern) from a repository by id_jobentry. The underlying KettleException from the repository access layer is wrapped and rethrown with this message.","triggerScenarios":"loadRep() calls rep.getJobEntryAttributeString/Boolean for id_jobentry and the repository throws KettleException — DB connectivity issues, missing rows in repository tables, or repository schema mismatch.","commonSituations":"Repository database down or network problem; job entry rows deleted/corrupted in the repository; loading a repository object created by an incompatible PDI version; stale repository cache.","solutions":["Check repository database connectivity and credentials","Verify the job entry rows exist (r_jobentry / r_jobentry_attribute) for the given id_jobentry","Clear the repository cache (clear repository object cache) and retry","Migrate/upgrade the repository schema to match the PDI version"],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"// check the entry rows exist before load\n// SELECT COUNT(*) FROM r_jobentry_attribute WHERE id_jobentry = ?;\n// must return the expected attribute rows","typeGuard":null,"tryCatchPattern":"try {\n  jobMeta.loadRep( rep, metaStore, jobId, null, null );\n} catch ( KettleException e ) {\n  if ( e.getMessage().contains( \"DTDvalidator\" ) && e.getMessage().contains( \"id_jobentry\" ) ) {\n    logError( \"Repository rows for DTDvalidator entry are missing/corrupt: \" + e.getCause() );\n  } else { throw e; }\n}","preventionTips":["Keep the repository database reachable and monitored","Avoid direct deletes on repository tables; use Spoon/PDI tooling","Run repository integrity checks after version migrations","Clear the repository cache after out-of-band repository changes"],"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"}