{"record":{"id":"1f49833163061960","repo":"pentaho/pentaho-kettle","slug":"unable-to-get-list-of-transformations-in-folder-with-id","errorCode":null,"errorMessage":"Unable to get list of transformations in folder with id : + idDirectory","messagePattern":"Unable to get list of transformations in folder with id : \\+ idDirectory","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/repository/filerep/KettleFileRepository.java","lineNumber":1040,"sourceCode":"\n            String name = child.getName().getBaseName();\n\n            if ( name.endsWith( EXT_TRANSFORMATION ) ) {\n\n              String transName = name.substring( 0, name.length() - 4 );\n\n              ObjectId id = new StringObjectId( calcObjectId( directory, transName, EXT_TRANSFORMATION ) );\n              Date date = new Date( child.getContent().getLastModifiedTime() );\n              list.add( new RepositoryObject(\n                id, transName, directory, \"-\", date, RepositoryObjectType.TRANSFORMATION, \"\", false ) );\n            }\n          }\n        }\n      }\n\n      return list;\n    } catch ( Exception e ) {\n      throw new KettleException( \"Unable to get list of transformations in folder with id : \" + idDirectory, e );\n    }\n  }\n\n  @Override\n  public List<RepositoryElementMetaInterface> getJobObjects( ObjectId id_directory, boolean includeDeleted ) throws KettleException {\n\n    try {\n      List<RepositoryElementMetaInterface> list = new ArrayList<RepositoryElementMetaInterface>();\n\n      RepositoryDirectoryInterface tree = loadRepositoryDirectoryTree();\n      RepositoryDirectoryInterface directory = tree.findDirectory( id_directory );\n\n      String folderName = calcDirectoryName( directory );\n      FileObject folder = KettleVFS.getInstance( DefaultBowl.getInstance() ).getFileObject( folderName );\n\n      for ( FileObject child : folder.getChildren() ) {\n        if ( child.getType().equals( FileType.FILE ) ) {\n          if ( !child.isHidden() || !repositoryMeta.isHidingHiddenFiles() ) {","sourceCodeStart":1022,"sourceCodeEnd":1058,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/repository/filerep/KettleFileRepository.java#L1022-L1058","documentation":"getTransformationObjects(idDirectory, includeDeleted) returns ObjectRevision listings for transformations in a folder; any exception while reading/collecting those objects is wrapped in this KettleException that includes the folder id. The cause holds the underlying I/O or XML failure.","triggerScenarios":"Calling getTransformationObjects with a stale or nonexistent idDirectory, or when reading the folder's object metadata files throws IOException or XML parsing errors.","commonSituations":"Folder renamed/deleted externally while the client holds the old ObjectId; read-permission issues after deployment to a service account; partially synced repository folders on shared storage.","solutions":["Resolve a fresh directory ObjectId via loadRepositoryDirectoryTree()/findDirectory before listing","Ensure the running user can read the repository folder and its metadata files","Check e.getCause() for the concrete failure and fix storage/sync issues","Refresh repository state after any out-of-band modification of folders"],"exampleFix":"// before\nList<RepositoryElementMetaInterface> objs = repository.getTransformationObjects(dirId, false);\n// after\nRepositoryDirectoryInterface dir = repository.findDirectory(\"/prod/etl\");\nif (dir == null) throw new KettleException(\"/prod/etl missing in repository\");\nList<RepositoryElementMetaInterface> objs = repository.getTransformationObjects(dir.getObjectId(), false);","handlingStrategy":"validation","validationCode":"RepositoryDirectoryInterface dir = repository.findDirectory(folderPath);\nif (dir == null) throw new KettleException(\"Folder \" + folderPath + \" not found in repository\");\nObjectId dirId = dir.getObjectId();","typeGuard":null,"tryCatchPattern":"try {\n  objects = repository.getTransformationObjects(dirId, false);\n} catch (KettleException e) {\n  logger.error(\"getTransformationObjects failed for \" + dirId + \": \" + e.getCause(), e);\n  throw e;\n}","preventionTips":["Always derive folder ObjectIds from a fresh directory tree load","Grant the runtime user read access to repository folders","Coordinate external edits/renames of repository folders with scheduled jobs"],"tags":["file-repository","kettle","directory-listing","io-exception"],"backgroundTag":"directory-not-found","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"}