{"record":{"id":"89b6ef4ad8a8c7ee","repo":"pentaho/pentaho-kettle","slug":"jobentrydelay-unabletoloadfromrepo-label","errorCode":null,"errorMessage":"JobEntryDelay.UnableToLoadFromRepo.Label","messagePattern":"JobEntryDelay\\.UnableToLoadFromRepo\\.Label","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/job/entries/delay/JobEntryDelay.java","lineNumber":100,"sourceCode":"  public void loadXML( Node entrynode, List<DatabaseMeta> databases, List<SlaveServer> slaveServers,\n    Repository rep, IMetaStore metaStore ) throws KettleXMLException {\n    try {\n      super.loadXML( entrynode, databases, slaveServers );\n      maximumTimeout = XMLHandler.getTagValue( entrynode, \"maximumTimeout\" );\n      scaleTime = Integer.parseInt( XMLHandler.getTagValue( entrynode, \"scaletime\" ) );\n    } catch ( Exception e ) {\n      throw new KettleXMLException( BaseMessages.getString( PKG, \"JobEntryDelay.UnableToLoadFromXml.Label\" ), e );\n    }\n  }\n\n  @Override\n  public void loadRep( Repository rep, IMetaStore metaStore, ObjectId id_jobentry, List<DatabaseMeta> databases,\n    List<SlaveServer> slaveServers ) throws KettleException {\n    try {\n      maximumTimeout = rep.getJobEntryAttributeString( id_jobentry, \"maximumTimeout\" );\n      scaleTime = (int) rep.getJobEntryAttributeInteger( id_jobentry, \"scaletime\" );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException( BaseMessages.getString( PKG, \"JobEntryDelay.UnableToLoadFromRepo.Label\" )\n        + id_jobentry, dbe );\n    }\n  }\n\n  //\n  // Save the attributes of this job entry\n  //\n  @Override\n  public void saveRep( Repository rep, IMetaStore metaStore, ObjectId id_job ) throws KettleException {\n    try {\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"maximumTimeout\", maximumTimeout );\n      rep.saveJobEntryAttribute( id_job, getObjectId(), \"scaletime\", scaleTime );\n    } catch ( KettleDatabaseException dbe ) {\n      throw new KettleException(\n        BaseMessages.getString( PKG, \"JobEntryDelay.UnableToSaveToRepo.Label\" ) + id_job, dbe );\n    }\n  }\n","sourceCodeStart":82,"sourceCodeEnd":118,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/job/entries/delay/JobEntryDelay.java#L82-L118","documentation":"JobEntryDelay.loadRep throws this localized KettleException when the repository throws KettleDatabaseException while reading the delay entry's attributes (maximumTimeout, scaletime) for the given id_jobentry. The database error is chained as the cause. It means the delay job entry's repository metadata is unreadable.","triggerScenarios":"loadRep called against a repository whose getJobEntryAttributeString/getJobEntryAttributeInteger throws — missing attribute rows for id_jobentry, broken repository connection, or corrupt/inaccessible r_jobentry_attribute table.","commonSituations":"Repository migration/restoration lost attribute rows; DB connectivity issues; repository schema not upgraded after Pentaho version change.","solutions":["Check the chained KettleDatabaseException for the true SQL error","Confirm the attribute rows exist for the id_jobentry in the repository","Re-save the Delay entry from Spoon to repopulate attributes","Repair/upgrade the repository schema to match your Kettle version"],"exampleFix":"// before\nentry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n// after\ntry {\n  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  logError(\"Delay load failed (cause=\" + e.getCause() + \") for id_jobentry=\" + idJobEntry);\n  throw e;\n}","handlingStrategy":"try-catch","validationCode":"// before loadRep\nif (id_jobentry == null) throw new IllegalArgumentException(\"id_jobentry required\");\nif (!rep.isConnected()) throw new IllegalStateException(\"Repository not connected\");","typeGuard":"boolean isRepoLoadFailure(KettleException e) {\n  return e.getMessage() != null && e.getMessage().startsWith(\"JobEntryDelay.UnableToLoadFromRepo\");\n}","tryCatchPattern":"try {\n  entry.loadRep(rep, metaStore, idJobEntry, databases, slaveServers);\n} catch (KettleException e) {\n  log.error(\"JobEntryDelay load failed (id_jobentry=\" + idJobEntry + \")\", e.getCause());\n  if (e.getCause() instanceof KettleDatabaseException) {\n    // verify repository connectivity and attribute rows, then retry\n  }\n  throw e;\n}","preventionTips":["Check repository health before opening jobs","Resolve the localized message key against messages.properties for diagnostics","Keep repository schema in sync with Pentaho version","Always inspect the chained database cause"],"tags":["kettle","repository","persistence"],"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"}