{"record":{"id":"a79dcd3c081314b2","repo":"pentaho/pentaho-kettle","slug":"namespace-namespace-can-not-be-created-it-already-exists","errorCode":null,"errorMessage":"Namespace '${namespace}' can not be created, it already exists","messagePattern":"Namespace '(.+?)' can not be created, it already exists","errorType":"exception","errorClass":"MetaStoreNamespaceExistsException","httpStatus":null,"severity":"error","filePath":"plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/metastore/PurRepositoryMetaStore.java","lineNumber":94,"sourceCode":"    }\n  }\n\n  @Override\n  public String getName() {\n    return repository.getRepositoryMeta().getName();\n  }\n\n  @Override\n  public String getDescription() {\n    return repository.getRepositoryMeta().getDescription();\n  }\n\n  // The namespaces\n\n  @Override\n  public void createNamespace( String namespace ) throws MetaStoreException {\n    if ( namespaceExists( namespace ) ) {\n      throw new MetaStoreNamespaceExistsException( \"Namespace '\" + namespace\n          + \"' can not be created, it already exists\" );\n    }\n    RepositoryFile namespaceFolder = new RepositoryFile.Builder( namespace ).folder( true ).versioned( false ).build();\n\n    pur.createFolder( namespacesFolder.getId(), namespaceFolder, \"Created namespace\" );\n  }\n\n  @Override\n  public boolean namespaceExists( String namespace ) throws MetaStoreException {\n    return getNamespaceRepositoryFile( namespace ) != null;\n  }\n\n  @Override\n  public void deleteNamespace( String namespace ) throws MetaStoreException {\n    RepositoryFile namespaceFile = getNamespaceRepositoryFile( namespace );\n    if ( namespaceFile == null ) {\n      return; // already gone.\n    }","sourceCodeStart":76,"sourceCodeEnd":112,"githubUrl":"https://github.com/pentaho/pentaho-kettle/blob/f3058517a153da500bf4551f46d79b91bf8ec552/plugins/pur/core/src/main/java/org/pentaho/di/repository/pur/metastore/PurRepositoryMetaStore.java#L76-L112","documentation":"Thrown by PurRepositoryMetaStore.createNamespace() when namespaceExists(namespace) is already true. It is a MetaStoreNamespaceExistsException, preventing the creation of a duplicate namespace folder under the metastore root.","triggerScenarios":"Calling createNamespace(ns) for a namespace that already has a folder in /etc/metastore on the server — typical on re-running an initialization routine or concurrent creation by another client.","commonSituations":"Installer/migration scripts run twice; two PDI clients creating the same namespace concurrently; case-insensitive filesystem collisions.","solutions":["Check namespaceExists() before calling createNamespace","Use openNamespace/delete+recreate according to your intent","Catch MetaStoreNamespaceExistsException and treat as success if the namespace is equivalent"],"exampleFix":"// before\nmetaStore.createNamespace( \"myNamespace\" );\n// after\nif ( !metaStore.namespaceExists( \"myNamespace\" ) ) {\n  metaStore.createNamespace( \"myNamespace\" );\n}","handlingStrategy":"validation","validationCode":"if ( !metaStore.namespaceExists( namespace ) ) {\n  metaStore.createNamespace( namespace );\n}","typeGuard":null,"tryCatchPattern":"try { metaStore.createNamespace( ns ); } catch ( MetaStoreNamespaceExistsException e ) { logBasic( \"Namespace already exists: \" + ns ); }","preventionTips":["Check namespaceExists() before create","Make initialization routines idempotent","Avoid concurrent creation from multiple clients"],"tags":["metastore","namespace","duplicate"],"backgroundTag":"file-already-exists","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"}