You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@atlas.apache.org by Radhika Kundam <ra...@gmail.com> on 2021/03/05 22:45:45 UTC

Re: Adding mandatory attribute to an existing entity type

Hi,


   1. ATLAS-4181 <https://issues.apache.org/jira/browse/ATLAS-4181> is
   created to provide option for adding mandatory attributes to existing
   entity definitions and it is available in atlas versions 3.0.0 & 2.2.0


On a high level, this feature is supported by the Typedef patch with action
"ADD_MANDATORY_ATTRIBUTE", more details can be found in Jira ATLAS-4181
<https://issues.apache.org/jira/browse/ATLAS-4181>

Thanks,
Radhika


On Wed, Jan 20, 2021 at 5:13 PM Jiaxin Ye <ji...@airbnb.com> wrote:

> Hey Sreeni,
>
>
>
> Have you found the solution yet? We are facing the same issue when deleted
> an entity def and then recreated it with mandatory field.
>
>
>
> Thanks,
>
> Jiaxin
>
>
>
> *From: *Nallapati, Sreenivasulu <Sr...@intuit.com>
> *Date: *Thursday, October 1, 2020 at 5:27 AM
> *To: *dev@atlas.apache.org <de...@atlas.apache.org>, user@atlas.apache.org <
> user@atlas.apache.org>
> *Subject: *Adding mandatory attribute to an existing entity type
>
> Hi,
>
>
>
> We have an entity type (schema) with name, environment, schema_format as
> attributes and we have created few entities for this type.
>
> We want to add new mandatory attribute data_format to *schema* type. As
> atlas is not allowing to add a mandatory attribute, we followed the below
> steps to add the mandatory attribute
>
>
>
>    1. Delete all the entities of this type from atlas.
>    2. Delete the existing type using *curl -negotiate -u user:pwd -X
>    DELETE -H 'Content-Type: application/json' -H 'Accept: application/json'
>    "http://localhost:21000/api/atlas/v2/types/typedef/name/schema
>    <http://localhost:21000/api/atlas/v2/types/typedef/name/schema>"*  API.
>       1. org.apache.atlas.repository.graphdb.janus.AtlasJanusGraphManagement.deletePropertyKey(String)
>       method renamed all the three properties to schema.name_deleted_0,
>       schema.environment_deleted_0 and schema.schema_format_deleted_0
>    3. After deleting the model, we posted the updated model with new
>    mandatory attribute using *curl -negotiate -u user:pwd -X POST -H
>    'Content-Type: application/json' -H 'Accept: application/json'
>    "http://localhost:21000/api/atlas/v2/types/typedefs
>    <http://localhost:21000/api/atlas/v2/types/typedefs>"  -d "@./schema.json"*
>    4. Now graph management has new properties *name, environment,
>    schema_format, data_format* and previously renamed properties *name_deleted_0,
>     environment_deleted_0, schema_format_deleted_0*
>    5. When we try to create a new entity with the new model, the entity
>    got created successfully in the backend store and failing to create the
>    entity in the search store with the below error (because of mapped-type)
>
>
>
> Multiple entries with same key: schema.name
> =org.janusgraph.diskstorage.indexing.StandardKeyInformation@55e7c2b4 and
> schema.name
> =org.janusgraph.diskstorage.indexing.StandardKeyInformation@b884972
>
>         at
> com.google.common.collect.ImmutableMap.conflictException(ImmutableMap.java:215)
>
>         at
> com.google.common.collect.ImmutableMap.checkNoConflict(ImmutableMap.java:209)
>
>         at
> com.google.common.collect.RegularImmutableMap.checkNoConflictInKeyBucket(RegularImmutableMap.java:147)
>
>         at
> com.google.common.collect.RegularImmutableMap.fromEntryArray(RegularImmutableMap.java:110)
>
>         at
> com.google.common.collect.ImmutableMap$Builder.build(ImmutableMap.java:393)
>
>         at
> org.janusgraph.graphdb.database.IndexSerializer$IndexInfoRetriever$1.get(IndexSerializer.java:162)
>
>
>
>    1. The renamed attributes (schema.name_deleted_0) has a property
>    “mapped-name” to the schema.type attribute. While building the
>    ImmutableMap, “mapped-name” of schema.name_deleted_0 is colliding with the
>    schema.name
>
>
>
>
>
> Have few queries about this functionality.
>
>    1. Is there any reason why properties are getting renamed instead of
>    delete when we delete the model?
>    2. Is there any configuration setting to tweak this functionality or
>    How to add a mandatory attribute to the existing model type?
>    3. Is it ok if we delete the renamed
>    (m.getPropertyKey('schema.name_deleted_0').remove())properties from graph
>    management using gremlin console?
>
>
>
> Please guide us in the proper direction if we are not doing the right
> thing.
>
>
>
>
>
>
>
> ---
>
> Regards,
>
> Sreeni
>