{"record":{"id":"72acbb67164d403e","repo":"pentaho/pentaho-kettle","slug":"unable-to-load-transformation-from-path-abspath","errorCode":null,"errorMessage":"Unable to load transformation from path [\" + absPath + \"]","messagePattern":"Unable to load transformation 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":2488,"sourceCode":"        if ( file == null ) {\n          throw new KettleException( BaseMessages.getString( PKG,\n            \"PurRepository.ERROR_0008_TRANSFORMATION_PATH_INVALID\", absPath ) );\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      TransMeta transMeta = buildTransMeta( bowl, file, parentDir, data, revision, parent );\n      ExtensionPointHandler.callExtensionPoint( log, KettleExtensionPoint.TransformationMetaLoaded.id, transMeta );\n      return transMeta;\n    } catch ( final KettleException ke ) {\n      // if we have a KettleException, simply re-throw it\n      throw ke;\n    } catch ( Exception e ) {\n      throw new KettleException( \"Unable to load transformation from path [\" + absPath + \"]\", e );\n    }\n  }\n\n  private TransMeta buildTransMeta( final Bowl bowl, final RepositoryFile file, \n                                    final RepositoryDirectoryInterface parentDir,\n                                    final NodeRepositoryFileData data, final ObjectRevision revision,\n                                    final VariableSpace parent )\n    throws KettleException {\n    TransMeta transMeta = new TransMeta( bowl, this, parent );\n    transMeta.setName( file.getTitle() );\n    transMeta.setFilename( file.getPath() );\n    transMeta.setDescription( file.getDescription() );\n    transMeta.setObjectId( new StringObjectId( file.getId().toString() ) );\n    transMeta.setObjectRevision( revision );\n    transMeta.setRepositoryDirectory( parentDir );\n    transMeta.setMetaStore( MetaStoreConst.getDefaultMetastore() );\n    ExtensionPointHandler.callExtensionPoint( log, KettleExtensionPoint.TransSharedObjectsLoaded.id, transMeta );\n    transDelegate.dataNodeToElement( data.getNode(), transMeta );","sourceCodeStart":2470,"sourceCodeEnd":2506,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/PurRepository.java#L2470-L2506","documentation":"Generic catch-all wrapper in PurRepository.loadTransformationByPath: any Exception that is not already a KettleException while loading a transformation from a path is re-thrown as a KettleException with this message and the original cause attached. It indicates the load pipeline (path lookup, file read at version, or TransMeta build) failed unexpectedly.","triggerScenarios":"Any non-KettleException inside loadTransformation(String,...) — e.g. repository connection failure, getDataAtVersionForRead IO error, or exception thrown by the TransformationMetaLoaded extension point.","commonSituations":"Network outage to the BI server mid-load; corrupt transformation XML in the repository; an ExtensionPoint plugin (TransformationMetaLoaded) throwing; permission-related remote errors surfaced as generic exceptions.","solutions":["Inspect the cause via getCausingExceptions()/e.getCause() to find the real failure","Verify the repository connection is alive and re-login if needed","Test loading the transformation from Pentaho Spoon to check for corrupt content","Disable or fix any TransformationMetaLoaded extension-point plugins"],"exampleFix":"// before\n} catch ( Exception e ) {\n  throw new KettleException( \"Unable to load transformation from path [\" + absPath + \"]\", e );\n}\n// after\n} catch ( Exception e ) {\n  LOG.error(\"Load failed for \" + absPath + \", cause: \" + e.getCause(), e);\n  throw new KettleException( \"Unable to load transformation from path [\" + absPath + \"]\", e );\n}","handlingStrategy":"try-catch","validationCode":"if (!repo.isConnected()) repo.connect(\"user\", \"pass\");\nif (!repo.exists(path, RepositoryObjectType.TRANSFORMATION)) {\n  throw new KettleException(\"Missing: \" + path);\n}","typeGuard":null,"tryCatchPattern":"try {\n  return repo.loadTransformation(path, null);\n} catch (KettleException e) {\n  Throwable cause = e.getCause();\n  log.error(\"Transformation load failed for \" + path + \": \" + cause, e);\n  throw new KettleException(\"Check cause for real failure\", e);\n}","preventionTips":["Check repository connectivity before bulk loads","Log e.getCause() — the message alone hides the real failure","Validate stored content by loading the file in Spoon if corruption is suspected","Audit TransformationMetaLoaded extension-point plugins"],"tags":["pentaho-kettle","repository","transformation","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"}