From 66327843c351a329dbd3b900264cede24b02733a Mon Sep 17 00:00:00 2001 From: luoshipeng Date: Mon, 6 Jan 2025 15:26:39 +0800 Subject: [PATCH 1/4] [CORE]Improved the way of fill parentEntityId in POBuilder --- .../service/FilesetMetaService.java | 35 ++++++++----------- .../relational/service/SchemaMetaService.java | 25 +++++-------- .../relational/service/TableMetaService.java | 35 ++++++++----------- .../relational/service/TopicMetaService.java | 35 ++++++++----------- 4 files changed, 51 insertions(+), 79 deletions(-) diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java index e049f436406..cbe99084020 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java @@ -314,26 +314,19 @@ public int deleteFilesetVersionsByRetentionCount(Long versionRetentionCount, int private void fillFilesetPOBuilderParentEntityId(FilesetPO.Builder builder, Namespace namespace) { NamespaceUtil.checkFileset(namespace); - Long parentEntityId = null; - for (int level = 0; level < namespace.levels().length; level++) { - String name = namespace.level(level); - switch (level) { - case 0: - parentEntityId = MetalakeMetaService.getInstance().getMetalakeIdByName(name); - builder.withMetalakeId(parentEntityId); - continue; - case 1: - parentEntityId = - CatalogMetaService.getInstance() - .getCatalogIdByMetalakeIdAndName(parentEntityId, name); - builder.withCatalogId(parentEntityId); - continue; - case 2: - parentEntityId = - SchemaMetaService.getInstance().getSchemaIdByCatalogIdAndName(parentEntityId, name); - builder.withSchemaId(parentEntityId); - break; - } - } + String metalake = namespace.level(0); + String catalog = namespace.level(1); + String schema = namespace.level(2); + + Long metalakeId = MetalakeMetaService.getInstance().getMetalakeIdByName(metalake); + builder.withMetalakeId(metalakeId); + + Long catalogId = + CatalogMetaService.getInstance().getCatalogIdByMetalakeIdAndName(metalakeId, catalog); + builder.withCatalogId(catalogId); + + Long schemaId = + SchemaMetaService.getInstance().getSchemaIdByCatalogIdAndName(catalogId, schema); + builder.withSchemaId(schemaId); } } diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java index 4c9c828cb9c..e7350589a77 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java @@ -316,21 +316,14 @@ public int deleteSchemaMetasByLegacyTimeline(Long legacyTimeline, int limit) { private void fillSchemaPOBuilderParentEntityId(SchemaPO.Builder builder, Namespace namespace) { NamespaceUtil.checkSchema(namespace); - Long parentEntityId = null; - for (int level = 0; level < namespace.levels().length; level++) { - String name = namespace.level(level); - switch (level) { - case 0: - parentEntityId = MetalakeMetaService.getInstance().getMetalakeIdByName(name); - builder.withMetalakeId(parentEntityId); - continue; - case 1: - parentEntityId = - CatalogMetaService.getInstance() - .getCatalogIdByMetalakeIdAndName(parentEntityId, name); - builder.withCatalogId(parentEntityId); - break; - } - } + String metalake = namespace.level(0); + String catalog = namespace.level(1); + + Long metalakeId = MetalakeMetaService.getInstance().getMetalakeIdByName(metalake); + builder.withMetalakeId(metalakeId); + + Long catalogId = + CatalogMetaService.getInstance().getCatalogIdByMetalakeIdAndName(metalakeId, catalog); + builder.withCatalogId(catalogId); } } diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java index 248dedd8a73..afb55670da1 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java @@ -253,27 +253,20 @@ public int deleteTableMetasByLegacyTimeline(Long legacyTimeline, int limit) { private void fillTablePOBuilderParentEntityId(TablePO.Builder builder, Namespace namespace) { NamespaceUtil.checkTable(namespace); - Long parentEntityId = null; - for (int level = 0; level < namespace.levels().length; level++) { - String name = namespace.level(level); - switch (level) { - case 0: - parentEntityId = MetalakeMetaService.getInstance().getMetalakeIdByName(name); - builder.withMetalakeId(parentEntityId); - continue; - case 1: - parentEntityId = - CatalogMetaService.getInstance() - .getCatalogIdByMetalakeIdAndName(parentEntityId, name); - builder.withCatalogId(parentEntityId); - continue; - case 2: - parentEntityId = - SchemaMetaService.getInstance().getSchemaIdByCatalogIdAndName(parentEntityId, name); - builder.withSchemaId(parentEntityId); - break; - } - } + String metalake = namespace.level(0); + String catalog = namespace.level(1); + String schema = namespace.level(2); + + Long metalakeId = MetalakeMetaService.getInstance().getMetalakeIdByName(metalake); + builder.withMetalakeId(metalakeId); + + Long catalogId = + CatalogMetaService.getInstance().getCatalogIdByMetalakeIdAndName(metalakeId, catalog); + builder.withCatalogId(catalogId); + + Long schemaId = + SchemaMetaService.getInstance().getSchemaIdByCatalogIdAndName(catalogId, schema); + builder.withSchemaId(schemaId); } private TablePO getTablePOBySchemaIdAndName(Long schemaId, String tableName) { diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java index 7bc933824aa..c451281345b 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java @@ -154,27 +154,20 @@ public TopicPO getTopicPOById(Long topicId) { private void fillTopicPOBuilderParentEntityId(TopicPO.Builder builder, Namespace namespace) { NamespaceUtil.checkTopic(namespace); - Long parentEntityId = null; - for (int level = 0; level < namespace.levels().length; level++) { - String name = namespace.level(level); - switch (level) { - case 0: - parentEntityId = MetalakeMetaService.getInstance().getMetalakeIdByName(name); - builder.withMetalakeId(parentEntityId); - continue; - case 1: - parentEntityId = - CatalogMetaService.getInstance() - .getCatalogIdByMetalakeIdAndName(parentEntityId, name); - builder.withCatalogId(parentEntityId); - continue; - case 2: - parentEntityId = - SchemaMetaService.getInstance().getSchemaIdByCatalogIdAndName(parentEntityId, name); - builder.withSchemaId(parentEntityId); - break; - } - } + String metalake = namespace.level(0); + String catalog = namespace.level(1); + String schema = namespace.level(2); + + Long metalakeId = MetalakeMetaService.getInstance().getMetalakeIdByName(metalake); + builder.withMetalakeId(metalakeId); + + Long catalogId = + CatalogMetaService.getInstance().getCatalogIdByMetalakeIdAndName(metalakeId, catalog); + builder.withCatalogId(catalogId); + + Long schemaId = + SchemaMetaService.getInstance().getSchemaIdByCatalogIdAndName(catalogId, schema); + builder.withSchemaId(schemaId); } public TopicEntity getTopicByIdentifier(NameIdentifier identifier) { From c5fc23a43df304552cfa6e8afce227f776b0fae8 Mon Sep 17 00:00:00 2001 From: luoshipeng Date: Mon, 6 Jan 2025 16:20:14 +0800 Subject: [PATCH 2/4] extract method getParentEntityIdsByNamespace into CommonMetaService --- .../relational/service/CommonMetaService.java | 24 +++++++++++++++++++ .../service/FilesetMetaService.java | 18 ++++---------- .../relational/service/ModelMetaService.java | 18 ++++---------- .../relational/service/SchemaMetaService.java | 12 +++------- .../relational/service/TableMetaService.java | 18 ++++---------- .../relational/service/TopicMetaService.java | 18 ++++---------- 6 files changed, 43 insertions(+), 65 deletions(-) diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java index f990e94fdcc..72ec16c3458 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java @@ -57,4 +57,28 @@ public Long getParentEntityIdByNamespace(Namespace namespace) { "Parent entity id should not be null and should be greater than 0."); return parentEntityId; } + + public Long[] getParentEntityIdsByNamespace(Namespace namespace) { + Preconditions.checkArgument( + !namespace.isEmpty() && namespace.levels().length <= 3, + "Namespace should not be empty and length should be less than or equal to 3."); + Long[] parentEntityIds = new Long[3]; + if (namespace.levels().length >= 1) { + parentEntityIds[0] = MetalakeMetaService.getInstance().getMetalakeIdByName(namespace.level(0)); + } + + if (namespace.levels().length >= 2) { + parentEntityIds[1] = + CatalogMetaService.getInstance() + .getCatalogIdByMetalakeIdAndName(parentEntityIds[0], namespace.level(1)); + } + + if (namespace.levels().length >= 3) { + parentEntityIds[2] = + SchemaMetaService.getInstance() + .getSchemaIdByCatalogIdAndName(parentEntityIds[1], namespace.level(2)); + } + + return parentEntityIds; + } } diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java index cbe99084020..f1ba7dc964a 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java @@ -314,19 +314,9 @@ public int deleteFilesetVersionsByRetentionCount(Long versionRetentionCount, int private void fillFilesetPOBuilderParentEntityId(FilesetPO.Builder builder, Namespace namespace) { NamespaceUtil.checkFileset(namespace); - String metalake = namespace.level(0); - String catalog = namespace.level(1); - String schema = namespace.level(2); - - Long metalakeId = MetalakeMetaService.getInstance().getMetalakeIdByName(metalake); - builder.withMetalakeId(metalakeId); - - Long catalogId = - CatalogMetaService.getInstance().getCatalogIdByMetalakeIdAndName(metalakeId, catalog); - builder.withCatalogId(catalogId); - - Long schemaId = - SchemaMetaService.getInstance().getSchemaIdByCatalogIdAndName(catalogId, schema); - builder.withSchemaId(schemaId); + Long[] parentEntityIds = CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); + builder.withMetalakeId(parentEntityIds[0]); + builder.withCatalogId(parentEntityIds[1]); + builder.withSchemaId(parentEntityIds[2]); } } diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/ModelMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/ModelMetaService.java index 2da43755c51..0197dfdd2dd 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/ModelMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/ModelMetaService.java @@ -172,20 +172,10 @@ ModelPO getModelPOById(Long modelId) { private void fillModelPOBuilderParentEntityId(ModelPO.Builder builder, Namespace ns) { NamespaceUtil.checkModel(ns); - String metalake = ns.level(0); - String catalog = ns.level(1); - String schema = ns.level(2); - - Long metalakeId = MetalakeMetaService.getInstance().getMetalakeIdByName(metalake); - builder.withMetalakeId(metalakeId); - - Long catalogId = - CatalogMetaService.getInstance().getCatalogIdByMetalakeIdAndName(metalakeId, catalog); - builder.withCatalogId(catalogId); - - Long schemaId = - SchemaMetaService.getInstance().getSchemaIdByCatalogIdAndName(catalogId, schema); - builder.withSchemaId(schemaId); + Long[] parentEntityIds = CommonMetaService.getInstance().getParentEntityIdsByNamespace(ns); + builder.withMetalakeId(parentEntityIds[0]); + builder.withCatalogId(parentEntityIds[1]); + builder.withSchemaId(parentEntityIds[2]); } ModelPO getModelPOByIdentifier(NameIdentifier ident) { diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java index e7350589a77..dfbeee57ad8 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java @@ -316,14 +316,8 @@ public int deleteSchemaMetasByLegacyTimeline(Long legacyTimeline, int limit) { private void fillSchemaPOBuilderParentEntityId(SchemaPO.Builder builder, Namespace namespace) { NamespaceUtil.checkSchema(namespace); - String metalake = namespace.level(0); - String catalog = namespace.level(1); - - Long metalakeId = MetalakeMetaService.getInstance().getMetalakeIdByName(metalake); - builder.withMetalakeId(metalakeId); - - Long catalogId = - CatalogMetaService.getInstance().getCatalogIdByMetalakeIdAndName(metalakeId, catalog); - builder.withCatalogId(catalogId); + Long[] parentEntityIds = CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); + builder.withMetalakeId(parentEntityIds[0]); + builder.withCatalogId(parentEntityIds[1]); } } diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java index afb55670da1..f4646665312 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java @@ -253,20 +253,10 @@ public int deleteTableMetasByLegacyTimeline(Long legacyTimeline, int limit) { private void fillTablePOBuilderParentEntityId(TablePO.Builder builder, Namespace namespace) { NamespaceUtil.checkTable(namespace); - String metalake = namespace.level(0); - String catalog = namespace.level(1); - String schema = namespace.level(2); - - Long metalakeId = MetalakeMetaService.getInstance().getMetalakeIdByName(metalake); - builder.withMetalakeId(metalakeId); - - Long catalogId = - CatalogMetaService.getInstance().getCatalogIdByMetalakeIdAndName(metalakeId, catalog); - builder.withCatalogId(catalogId); - - Long schemaId = - SchemaMetaService.getInstance().getSchemaIdByCatalogIdAndName(catalogId, schema); - builder.withSchemaId(schemaId); + Long[] parentEntityIds = CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); + builder.withMetalakeId(parentEntityIds[0]); + builder.withCatalogId(parentEntityIds[1]); + builder.withSchemaId(parentEntityIds[2]); } private TablePO getTablePOBySchemaIdAndName(Long schemaId, String tableName) { diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java index c451281345b..035fe8bbc7e 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java @@ -154,20 +154,10 @@ public TopicPO getTopicPOById(Long topicId) { private void fillTopicPOBuilderParentEntityId(TopicPO.Builder builder, Namespace namespace) { NamespaceUtil.checkTopic(namespace); - String metalake = namespace.level(0); - String catalog = namespace.level(1); - String schema = namespace.level(2); - - Long metalakeId = MetalakeMetaService.getInstance().getMetalakeIdByName(metalake); - builder.withMetalakeId(metalakeId); - - Long catalogId = - CatalogMetaService.getInstance().getCatalogIdByMetalakeIdAndName(metalakeId, catalog); - builder.withCatalogId(catalogId); - - Long schemaId = - SchemaMetaService.getInstance().getSchemaIdByCatalogIdAndName(catalogId, schema); - builder.withSchemaId(schemaId); + Long[] parentEntityIds = CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); + builder.withMetalakeId(parentEntityIds[0]); + builder.withCatalogId(parentEntityIds[1]); + builder.withSchemaId(parentEntityIds[2]); } public TopicEntity getTopicByIdentifier(NameIdentifier identifier) { From e232f6dc7a752c7adfaa4cd58abbbecb4c875866 Mon Sep 17 00:00:00 2001 From: luoshipeng Date: Mon, 6 Jan 2025 16:30:21 +0800 Subject: [PATCH 3/4] fix spotless run failed --- .../storage/relational/service/CommonMetaService.java | 3 ++- .../storage/relational/service/FilesetMetaService.java | 3 ++- .../storage/relational/service/SchemaMetaService.java | 3 ++- .../gravitino/storage/relational/service/TableMetaService.java | 3 ++- .../gravitino/storage/relational/service/TopicMetaService.java | 3 ++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java index 72ec16c3458..ee19ce2c758 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java @@ -64,7 +64,8 @@ public Long[] getParentEntityIdsByNamespace(Namespace namespace) { "Namespace should not be empty and length should be less than or equal to 3."); Long[] parentEntityIds = new Long[3]; if (namespace.levels().length >= 1) { - parentEntityIds[0] = MetalakeMetaService.getInstance().getMetalakeIdByName(namespace.level(0)); + parentEntityIds[0] = + MetalakeMetaService.getInstance().getMetalakeIdByName(namespace.level(0)); } if (namespace.levels().length >= 2) { diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java index f1ba7dc964a..9233005c34a 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/FilesetMetaService.java @@ -314,7 +314,8 @@ public int deleteFilesetVersionsByRetentionCount(Long versionRetentionCount, int private void fillFilesetPOBuilderParentEntityId(FilesetPO.Builder builder, Namespace namespace) { NamespaceUtil.checkFileset(namespace); - Long[] parentEntityIds = CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); + Long[] parentEntityIds = + CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); builder.withMetalakeId(parentEntityIds[0]); builder.withCatalogId(parentEntityIds[1]); builder.withSchemaId(parentEntityIds[2]); diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java index dfbeee57ad8..f300e70cae3 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/SchemaMetaService.java @@ -316,7 +316,8 @@ public int deleteSchemaMetasByLegacyTimeline(Long legacyTimeline, int limit) { private void fillSchemaPOBuilderParentEntityId(SchemaPO.Builder builder, Namespace namespace) { NamespaceUtil.checkSchema(namespace); - Long[] parentEntityIds = CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); + Long[] parentEntityIds = + CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); builder.withMetalakeId(parentEntityIds[0]); builder.withCatalogId(parentEntityIds[1]); } diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java index f4646665312..bc44ac43a92 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/TableMetaService.java @@ -253,7 +253,8 @@ public int deleteTableMetasByLegacyTimeline(Long legacyTimeline, int limit) { private void fillTablePOBuilderParentEntityId(TablePO.Builder builder, Namespace namespace) { NamespaceUtil.checkTable(namespace); - Long[] parentEntityIds = CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); + Long[] parentEntityIds = + CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); builder.withMetalakeId(parentEntityIds[0]); builder.withCatalogId(parentEntityIds[1]); builder.withSchemaId(parentEntityIds[2]); diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java index 035fe8bbc7e..66a12aa9de1 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/TopicMetaService.java @@ -154,7 +154,8 @@ public TopicPO getTopicPOById(Long topicId) { private void fillTopicPOBuilderParentEntityId(TopicPO.Builder builder, Namespace namespace) { NamespaceUtil.checkTopic(namespace); - Long[] parentEntityIds = CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); + Long[] parentEntityIds = + CommonMetaService.getInstance().getParentEntityIdsByNamespace(namespace); builder.withMetalakeId(parentEntityIds[0]); builder.withCatalogId(parentEntityIds[1]); builder.withSchemaId(parentEntityIds[2]); From f31d53763135599b72b0af2974735834c7af17db Mon Sep 17 00:00:00 2001 From: luoshipeng Date: Mon, 6 Jan 2025 17:04:35 +0800 Subject: [PATCH 4/4] change initial array length to namespace's length --- .../gravitino/storage/relational/service/CommonMetaService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java b/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java index ee19ce2c758..bdab2ad9fe5 100644 --- a/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java +++ b/core/src/main/java/org/apache/gravitino/storage/relational/service/CommonMetaService.java @@ -62,7 +62,7 @@ public Long[] getParentEntityIdsByNamespace(Namespace namespace) { Preconditions.checkArgument( !namespace.isEmpty() && namespace.levels().length <= 3, "Namespace should not be empty and length should be less than or equal to 3."); - Long[] parentEntityIds = new Long[3]; + Long[] parentEntityIds = new Long[namespace.levels().length]; if (namespace.levels().length >= 1) { parentEntityIds[0] = MetalakeMetaService.getInstance().getMetalakeIdByName(namespace.level(0));