{"record":{"id":"df6069d06f3bee33","repo":"pentaho/pentaho-kettle","slug":"we-can-t-verify-the-existance-of-repository-element-type","errorCode":null,"errorMessage":"We can't verify the existance of repository element type [{objectType}]","messagePattern":"We can't verify the existance of repository element type \\[(.+?)\\]","errorType":"exception","errorClass":"KettleException","httpStatus":null,"severity":"error","filePath":"engine/src/main/java/org/pentaho/di/repository/kdr/KettleDatabaseRepository.java","lineNumber":434,"sourceCode":"  }\n\n  // Common methods...\n  // ////////////////////////////\n\n  public boolean exists( String name, RepositoryDirectoryInterface repositoryDirectory,\n    RepositoryObjectType objectType ) throws KettleException {\n    try {\n      switch ( objectType ) {\n        case JOB:\n          securityProvider.validateAction( RepositoryOperation.READ_JOB );\n          return jobDelegate.existsJobMeta( name, repositoryDirectory, objectType );\n\n        case TRANSFORMATION:\n          securityProvider.validateAction( RepositoryOperation.READ_TRANSFORMATION );\n          return transDelegate.existsTransMeta( name, repositoryDirectory, objectType );\n\n        default:\n          throw new KettleException( \"We can't verify the existance of repository element type [\"\n            + objectType + \"]\" );\n      }\n    } finally {\n      connectionDelegate.closeReadTransaction();\n    }\n  }\n\n  public void save( RepositoryElementInterface repositoryElement, String versionComment ) throws KettleException {\n    save( repositoryElement, versionComment, null );\n  }\n\n  public void save( RepositoryElementInterface repositoryElement, String versionComment,\n    ProgressMonitorListener monitor, boolean overwrite ) throws KettleException {\n    save( repositoryElement, versionComment, monitor, null, false, overwrite );\n  }\n\n  public void save( RepositoryElementInterface repositoryElement, String versionComment,\n    ProgressMonitorListener monitor, ObjectId parentId, boolean used, boolean overwrite ) throws KettleException {","sourceCodeStart":416,"sourceCodeEnd":452,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/engine/src/main/java/org/pentaho/di/repository/kdr/KettleDatabaseRepository.java#L416-L452","documentation":"KettleDatabaseRepository.exists only supports existence checks for JOB, TRANSFORMATION (and similar handled) element types; for any other RepositoryObjectType it throws this KettleException. The repository has no delegate for verifying existence of other element kinds via this API.","triggerScenarios":"Calling KettleDatabaseRepository.exists(name, directory, objectType) with objectType other than JOB or TRANSFORMATION, e.g. a database, slave server or partition schema RepositoryObjectType.","commonSituations":"Generic repository-browser code that passes whatever element type it holds into exists(); plugins assuming exists() is universal; version changes in the supported-type switch.","solutions":["Only call exists() for JOB or TRANSFORMATION object types; branch on objectType first.","For other types, use the type-specific delegate APIs (e.g. databaseDelegate / slaveServerDelegate lookup methods).","Verify the element type before calling and use getObjectInformation as an alternative existence probe where supported."],"exampleFix":"// before\nboolean exists = repo.exists(name, dir, objectType); // any type\n// after\nboolean exists = objectType.equals(RepositoryObjectType.TRANSFORMATION)\n    || objectType.equals(RepositoryObjectType.JOB)\n    ? repo.exists(name, dir, objectType)\n    : false; // or use type-specific API","handlingStrategy":"type-guard","validationCode":"boolean existsSupported = objectType.equals(RepositoryObjectType.TRANSFORMATION)\n    || objectType.equals(RepositoryObjectType.JOB);\nif (!existsSupported) { /* use type-specific API or return false */ }","typeGuard":"boolean supportsExists(RepositoryObjectType t) {\n  return RepositoryObjectType.TRANSFORMATION.equals(t) || RepositoryObjectType.JOB.equals(t);\n}","tryCatchPattern":"try {\n  return repo.exists(name, dir, objectType);\n} catch (KettleException e) {\n  if (e.getMessage() != null && e.getMessage().contains(\"can't verify the existance\")) {\n    return false; // or use a type-specific lookup\n  } else { throw e; }\n}","preventionTips":["Only call exists() for jobs and transformations.","Branch on RepositoryObjectType before generic existence checks.","Prefer type-specific delegate lookups for other element kinds."],"tags":["repository","unsupported-type","exists"],"backgroundTag":"unsupported-operation","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"}