{"record":{"id":"bba04ec23cf5b6d4","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-job-from-path-abspath","errorCode":null,"errorMessage":"Unable to load job from path [\" + absPath + \"]","messagePattern":"Unable to load job from path \\[\" \\+ absPath \\+ \"\\]","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java","lineNumber":2610,"sourceCode":"      ObjectRevision revision = null;\n      try {\n        file = pur.getFile( absPath );\n        if ( versionId != null ) {\n          // need to go back to server to get versioned info\n          file = pur.getFileAtVersion( file.getId(), versionId );\n        }\n\n        data = pur.getDataAtVersionForRead( file.getId(), versionId, NodeRepositoryFileData.class );\n      } finally {\n        readWriteLock.readLock().unlock();\n      }\n\n      revision = getObjectRevision( new StringObjectId( file.getId().toString() ), versionId );\n      JobMeta jobMeta = buildJobMeta( file, parentDir, data, revision, parent );\n      ExtensionPointHandler.callExtensionPoint( log, KettleExtensionPoint.JobMetaLoaded.id, jobMeta );\n      return jobMeta;\n    } catch ( Exception e ) {\n      throw new KettleException( \"Unable to load job from path [\" + absPath + \"]\", e );\n    }\n  }\n\n  private JobMeta buildJobMeta( final RepositoryFile file, final RepositoryDirectoryInterface parentDir,\n                                final NodeRepositoryFileData data, final ObjectRevision revision,\n                                final VariableSpace parent )\n    throws KettleException {\n    JobMeta jobMeta = new JobMeta( parent );\n    jobMeta.setName( file.getTitle() );\n    jobMeta.setFilename( file.getPath() );\n    jobMeta.setDescription( file.getDescription() );\n    jobMeta.setObjectId( new StringObjectId( file.getId().toString() ) );\n    jobMeta.setObjectRevision( revision );\n    jobMeta.setRepository( this );\n    jobMeta.setRepositoryDirectory( parentDir );\n    jobMeta.setMetaStore( MetaStoreConst.getDefaultMetastore() );\n    ExtensionPointHandler.callExtensionPoint( log, KettleExtensionPoint.JobSharedObjectsLoaded.id, jobMeta );\n    jobDelegate.dataNodeToElement( data.getNode(), jobMeta );","sourceCodeStart":2592,"sourceCodeEnd":2628,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java#L2592-L2628","documentation":"Catch-all wrapper in PurRepository.loadJob(jobname, ...): any non-KettleException during job load (path lookup, file/version read, JobMeta build, JobMetaLoaded extension point) is re-thrown as a KettleException with the absPath in the message and the original exception as cause.","triggerScenarios":"Repository connection failure, getDataAtVersionForRead error, buildJobMeta failure on corrupt content, or a JobMetaLoaded extension point throwing during loadJob(String path,...).","commonSituations":"BI server unreachable mid-load; corrupt job XML; plugin extension point throwing; ACL errors surfaced as generic exceptions; null revision data for the requested version.","solutions":["Check e.getCause() to identify the underlying failure","Verify repository connectivity and re-authenticate","Open the job in Spoon to validate the stored content is not corrupt","Fix or disable JobMetaLoaded extension-point plugins"],"exampleFix":"// before\n} catch ( Exception e ) {\n  throw new KettleException( \"Unable to load job from path [\" + absPath + \"]\", e );\n}\n// after\n} catch ( Exception e ) {\n  log.error(\"Job load failed: \" + absPath + \", root cause: \" + e.getCause(), e);\n  throw new KettleException( \"Unable to load job from path [\" + absPath + \"]\", e );\n}","handlingStrategy":"try-catch","validationCode":"if (!repo.isConnected()) repo.connect(\"user\", \"pass\");\nif (!repo.exists(jobPath, RepositoryObjectType.JOB)) {\n  throw new KettleException(\"Missing job: \" + jobPath);\n}","typeGuard":null,"tryCatchPattern":"try {\n  return repo.loadJob(path, dir, null, null);\n} catch (KettleException e) {\n  log.error(\"Job load failed for \" + path + \", cause=\" + e.getCause(), e);\n  throw e;\n}","preventionTips":["Always inspect the wrapped cause exception","Verify connectivity before load operations","Open the job in Spoon to rule out corruption","Audit JobMetaLoaded extension-point plugins"],"tags":["pentaho-kettle","repository","job","wrapped-exception"],"backgroundTag":"file-read-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"}