{"record":{"id":"97acdcb4cd7774ea","repo":"pentaho/pentaho-kettle","slug":"unable-to-get-object-information-for-object-with-id-objectid","errorCode":null,"errorMessage":"Unable to get object information for object with id= + objectId","messagePattern":"Unable to get object information for object with id= \\+ objectId","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/repository/filerep/KettleFileRepository.java","lineNumber":1442,"sourceCode":"      FileName fname = fileObject.getName();\n      String name = fname.getBaseName();\n      if ( !Utils.isEmpty( fname.getExtension() ) && name.length() > fname.getExtension().length() ) {\n        name = name.substring( 0, name.length() - fname.getExtension().length() - 1 );\n      }\n\n      String filePath = fileObject.getParent().getName().getPath();\n      final FileObject baseDirObject = KettleVFS.getInstance( DefaultBowl.getInstance() )\n        .getFileObject( repositoryMeta.getBaseDirectory() );\n      final int baseDirObjectPathLength = baseDirObject.getName().getPath().length();\n      final String dirPath =\n        baseDirObjectPathLength <= filePath.length() ? filePath.substring( baseDirObjectPathLength ) : \"/\";\n      RepositoryDirectoryInterface directory = loadRepositoryDirectoryTree().findDirectory( dirPath );\n      Date lastModified = new Date( fileObject.getContent().getLastModifiedTime() );\n\n      return new RepositoryObject( objectId, name, directory, \"-\", lastModified, objectType, \"\", false );\n\n    } catch ( Exception e ) {\n      throw new KettleException( \"Unable to get object information for object with id=\" + objectId, e );\n    }\n  }\n\n  @Override\n  public JobMeta loadJob( ObjectId idJob, String versionLabel ) throws KettleException {\n    RepositoryObject jobInfo = getObjectInformation( idJob, RepositoryObjectType.JOB );\n    return loadJob( jobInfo.getName(), jobInfo.getRepositoryDirectory(), null, versionLabel );\n  }\n\n  @Override\n  public TransMeta loadTransformation( ObjectId idTransformation, String versionLabel ) throws KettleException {\n    RepositoryObject jobInfo = getObjectInformation( idTransformation, RepositoryObjectType.TRANSFORMATION );\n    return loadTransformation( jobInfo.getName(), jobInfo.getRepositoryDirectory(), null, true, versionLabel );\n  }\n\n  @Override\n  public String getConnectMessage() {\n    return null;","sourceCodeStart":1424,"sourceCodeEnd":1460,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/repository/filerep/KettleFileRepository.java#L1424-L1460","documentation":"KettleFileRepository.getObjectInformation() throws this KettleException when it cannot gather metadata (name, directory, last-modified time, type) for the repository object with the given ObjectId. Typically the underlying VFS FileObject cannot be resolved or read.","triggerScenarios":"Calling getObjectInformation(ObjectId, RepositoryObjectType) when the object's file does not exist under the resolved directory path, the directory id does not resolve, or reading content.lastModifiedTime fails.","commonSituations":"File deleted externally after being listed; typo'd or stale object id; repository base directory misconfigured so relative paths resolve incorrectly; also hit indirectly via loadJob()/loadTransformation() which call getObjectInformation first.","solutions":["Inspect the cause to see which file path failed","Verify the object file exists in the repository base directory","Refresh the repository directory tree and re-resolve the ObjectId","Check base_directory configuration and filesystem permissions"],"exampleFix":"// before\nRepositoryObject info = repo.getObjectInformation(id, RepositoryObjectType.TRANSFORMATION); // throws if missing\n// after\nif (repo.exists(id)) { // or wrap in try-catch for KettleException\n  RepositoryObject info = repo.getObjectInformation(id, RepositoryObjectType.TRANSFORMATION);\n}","handlingStrategy":"try-catch","validationCode":"if (!repo.exists(objectId)) {\n  throw new IllegalStateException(\"Object missing: \" + objectId);\n}","typeGuard":null,"tryCatchPattern":"try {\n  RepositoryObject info = repo.getObjectInformation(id, RepositoryObjectType.JOB);\n} catch (KettleException e) {\n  log.error(\"Object info unavailable for \" + id, e);\n}","preventionTips":["Verify object existence before requesting metadata","Keep base_directory configuration consistent across clients","Refresh directory tree after external file changes"],"tags":["repository","metadata","file-system","not-found"],"backgroundTag":"file-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"}