-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/74019/
-----------------------------------------------------------

(Updated July 13, 2022, 7:15 a.m.)


Review request for atlas, Jayendra Parab, Mandar Ambawane, and Pinal Shah.


Changes
-------

ATLAS-4573.2.patch


Bugs: ATLAS-4573
    https://issues.apache.org/jira/browse/ATLAS-4573


Repository: atlas


Description
-------

Steps followed:

Create types , entities, relationship with is_legacy_attribute set initially to 
False

Update the relationshipDef to have is_legacy_attribute to True

For the entities that were created before updating the is_legacy_attribute to 
True, relationshipAttributes is now reset

 

Initial relationship def: 
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/types/relationshipdef/name/ASSOCIATION_5YEDIO
 (This will now fetch the updated def)

{
    category: "RELATIONSHIP",
    guid: "-294437519020",
    createdBy: "hrt_qa",
    updatedBy: "hrt_qa",
    createTime: 1648474404121,
    updateTime: 1648474404121,
    version: 1,
    name: "ASSOCIATION_5YEDIO",
    description: "default relationshipDef description with name: 
ASSOCIATION_5YEDIO",
    typeVersion: "1.0",
    attributeDefs: [],
    relationshipCategory: "ASSOCIATION",
    propagateTags: "NONE",
    endDef1: {
        type: "type_1_ASSOCIATION_O6FR7Q",
        name: "rel_attribute",
        isContainer: false,
        cardinality: "SINGLE",
        isLegacyAttribute: false,
        description: "default relationshipEndDef description with name: 
rel_attribute"
    },
    endDef2: {
        type: "type_2_ASSOCIATION_XP3JPH",
        name: "rel_attribute",
        isContainer: false,
        cardinality: "SINGLE",
        isLegacyAttribute: false,
        description: "default relationshipEndDef description with name: 
rel_attribute"
    }
} 

Entiry1 def before update to True: 

{
    referredEntities: {},
    entity: {
        typeName: "type_1_ASSOCIATION_O6FR7Q",
        attributes: {
            name: "entity_1_PP8ULL"
        },
        guid: "daa724fe-1e14-4734-ab95-85c4a5aafee4",
        isIncomplete: false,
        status: "ACTIVE",
        createdBy: "hrt_qa",
        updatedBy: "hrt_qa",
        createTime: 1648474464955,
        updateTime: 1648474464955,
        version: 0,
        relationshipAttributes: {
            rel_attribute: {
                guid: "51111271-ecdb-4792-8962-4bc6a68df3a2",
                typeName: "type_2_ASSOCIATION_XP3JPH",
                entityStatus: "ACTIVE",
                displayText: "entity_2_L47P2H",
                relationshipType: "ASSOCIATION_5YEDIO",
                relationshipGuid: "8e390507-cdfc-4f83-bded-16862498ac0c",
                relationshipStatus: "ACTIVE",
                relationshipAttributes: {
                    typeName: "ASSOCIATION_5YEDIO"
                }
            }
        },
        labels: []
    }
} 

Entity2 def before Update to True:

{
    referredEntities: {},
    entity: {
        typeName: "type_2_ASSOCIATION_XP3JPH",
        attributes: {
            name: "entity_2_L47P2H"
        },
        guid: "51111271-ecdb-4792-8962-4bc6a68df3a2",
        isIncomplete: false,
        status: "ACTIVE",
        createdBy: "hrt_qa",
        updatedBy: "hrt_qa",
        createTime: 1648474464955,
        updateTime: 1648474464955,
        version: 0,
        relationshipAttributes: {
            rel_attribute: {
                guid: "daa724fe-1e14-4734-ab95-85c4a5aafee4",
                typeName: "type_1_ASSOCIATION_O6FR7Q",
                entityStatus: "ACTIVE",
                displayText: "entity_1_PP8ULL",
                relationshipType: "ASSOCIATION_5YEDIO",
                relationshipGuid: "8e390507-cdfc-4f83-bded-16862498ac0c",
                relationshipStatus: "ACTIVE",
                relationshipAttributes: {
                    typeName: "ASSOCIATION_5YEDIO"
                }
            }
        },
        labels: []
    }
} 

Updated relationship def:

{
    category: "RELATIONSHIP",
    guid: "-294437519020",
    createdBy: "hrt_qa",
    updatedBy: "hrt_qa",
    createTime: 1648474404121,
    updateTime: 1648474705804,
    version: 2,
    name: "ASSOCIATION_5YEDIO",
    description: "default relationshipDef description with name: 
ASSOCIATION_5YEDIO",
    typeVersion: "1.0",
    attributeDefs: [],
    relationshipCategory: "ASSOCIATION",
    propagateTags: "NONE",
    endDef1: {
        type: "type_1_ASSOCIATION_O6FR7Q",
        name: "rel_attribute",
        isContainer: false,
        cardinality: "SINGLE",
        isLegacyAttribute: true,
        description: "default relationshipEndDef description with name: 
rel_attribute"
    },
    endDef2: {
        type: "type_2_ASSOCIATION_XP3JPH",
        name: "rel_attribute",
        isContainer: false,
        cardinality: "SINGLE",
        isLegacyAttribute: true,
        description: "default relationshipEndDef description with name: 
rel_attribute"
    }
} 

Entity1 def after update to True: 
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/entity/guid/daa724fe-1e14-4734-ab95-85c4a5aafee4
 

{
    referredEntities: {},
    entity: {
        typeName: "type_1_ASSOCIATION_O6FR7Q",
        attributes: {
            rel_attribute: null,
            name: "entity_1_PP8ULL"
        },
        guid: "daa724fe-1e14-4734-ab95-85c4a5aafee4",
        isIncomplete: false,
        status: "ACTIVE",
        createdBy: "hrt_qa",
        updatedBy: "hrt_qa",
        createTime: 1648474464955,
        updateTime: 1648474464955,
        version: 0,
        relationshipAttributes: {
            rel_attribute: null
        },
        labels: []
    }
} 

Entity2 def after update to True: 
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/entity/guid/51111271-ecdb-4792-8962-4bc6a68df3a2

{
    referredEntities: {},
    entity: {
        typeName: "type_2_ASSOCIATION_XP3JPH",
        attributes: {
            rel_attribute: null,
            name: "entity_2_L47P2H"
        },
        guid: "51111271-ecdb-4792-8962-4bc6a68df3a2",
        isIncomplete: false,
        status: "ACTIVE",
        createdBy: "hrt_qa",
        updatedBy: "hrt_qa",
        createTime: 1648474464955,
        updateTime: 1648474464955,
        version: 0,
        relationshipAttributes: {
            rel_attribute: null
        },
        labels: []
    }
} 

New entity Entity3 def created after update to True: 
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/entity/guid/0ac1d17b-7252-4ccc-a400-d94abc5e2e01

{
    referredEntities: {},
    entity: {
        typeName: "type_1_ASSOCIATION_O6FR7Q",
        attributes: {
            rel_attribute: {
                guid: "52e76d12-d5ab-43e7-ab28-f194444f9f67",
                typeName: "type_2_ASSOCIATION_XP3JPH"
            },
            name: "entity_3_MKC1MV"
        },
        guid: "0ac1d17b-7252-4ccc-a400-d94abc5e2e01",
        isIncomplete: false,
        status: "ACTIVE",
        createdBy: "hrt_qa",
        updatedBy: "hrt_qa",
        createTime: 1648475166152,
        updateTime: 1648475166152,
        version: 0,
        relationshipAttributes: {
            rel_attribute: {
                guid: "52e76d12-d5ab-43e7-ab28-f194444f9f67",
                typeName: "type_2_ASSOCIATION_XP3JPH",
                entityStatus: "ACTIVE",
                displayText: "entity_4_3ATB39",
                relationshipType: "ASSOCIATION_5YEDIO",
                relationshipGuid: "fbdffdd8-95b8-4c55-87e7-be0cdcbf56a0",
                relationshipStatus: "ACTIVE",
                relationshipAttributes: {
                    typeName: "ASSOCIATION_5YEDIO"
                }
            }
        },
        labels: []
    }
} 

 

new entity Entity4 def created after update to True: 
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/entity/guid/52e76d12-d5ab-43e7-ab28-f194444f9f67

{
    referredEntities: {},
    entity: {
        typeName: "type_2_ASSOCIATION_XP3JPH",
        attributes: {
            rel_attribute: {
                guid: "0ac1d17b-7252-4ccc-a400-d94abc5e2e01",
                typeName: "type_1_ASSOCIATION_O6FR7Q"
            },
            name: "entity_4_3ATB39"
        },
        guid: "52e76d12-d5ab-43e7-ab28-f194444f9f67",
        isIncomplete: false,
        status: "ACTIVE",
        createdBy: "hrt_qa",
        updatedBy: "hrt_qa",
        createTime: 1648475166152,
        updateTime: 1648475166152,
        version: 0,
        relationshipAttributes: {
            rel_attribute: {
                guid: "0ac1d17b-7252-4ccc-a400-d94abc5e2e01",
                typeName: "type_1_ASSOCIATION_O6FR7Q",
                entityStatus: "ACTIVE",
                displayText: "entity_3_MKC1MV",
                relationshipType: "ASSOCIATION_5YEDIO",
                relationshipGuid: "3727d6a7-e49b-4e1b-a03a-a7c84c91dc28",
                relationshipStatus: "ACTIVE",
                relationshipAttributes: {
                    typeName: "ASSOCIATION_5YEDIO"
                }
            }
        },
        labels: []
    }
} 

 

Here we can see that relationshipAttributes of the entities that were created 
before update were reset and the response is inconsistent with the newly 
created entities

 

 

The values are reset in the reverse scenario too.

Tried to update the value from True to False and here is the data:

Relationship def before updating isLegacyAttribute to False
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/types/relationshipdef/name/ASSOCIATION_4UTG43{
    "category": "RELATIONSHIP",
    "guid": "-974050521988",
    "createdBy": "hrt_qa",
    "updatedBy": "hrt_qa",
    "createTime": 1648522025999,
    "updateTime": 1648522025999,
    "version": 1,
    "name": "ASSOCIATION_4UTG43",
    "description": "default relationshipDef description with name: 
ASSOCIATION_4UTG43",
    "typeVersion": "1.0",
    "attributeDefs": [],
    "relationshipCategory": "ASSOCIATION",
    "propagateTags": "NONE",
    "endDef1": {
        "type": "type_1_ASSOCIATION_90RHH6",
        "name": "rel_attribute",
        "isContainer": false,
        "cardinality": "SINGLE",
        "isLegacyAttribute": true,
        "description": "default relationshipEndDef description with name: 
rel_attribute"
    },
    "endDef2": {
        "type": "type_2_ASSOCIATION_2AN03T",
        "name": "rel_attribute",
        "isContainer": false,
        "cardinality": "SINGLE",
        "isLegacyAttribute": true,
        "description": "default relationshipEndDef description with name: 
rel_attribute"
    }
}
Entity 1 before updating isLegacyAttribute to False: 
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/entity/guid/010f014d-6265-42a9-9211-9008026d36f0
{
    "referredEntities": {},
    "entity": {
        "typeName": "type_1_ASSOCIATION_90RHH6",
        "attributes": {
            "rel_attribute": {
                "guid": "272394c3-b91a-4c5c-9bb6-2fd8038ea0e6",
                "typeName": "type_2_ASSOCIATION_2AN03T"
            },
            "name": "entity_1_YX99F2"
        },
        "guid": "010f014d-6265-42a9-9211-9008026d36f0",
        "isIncomplete": false,
        "status": "ACTIVE",
        "createdBy": "hrt_qa",
        "updatedBy": "hrt_qa",
        "createTime": 1648522086614,
        "updateTime": 1648522086614,
        "version": 0,
        "relationshipAttributes": {
            "rel_attribute": {
                "guid": "272394c3-b91a-4c5c-9bb6-2fd8038ea0e6",
                "typeName": "type_2_ASSOCIATION_2AN03T",
                "entityStatus": "ACTIVE",
                "displayText": "entity_2_MAW7SL",
                "relationshipType": "ASSOCIATION_4UTG43",
                "relationshipGuid": "1b9b8fba-af2e-4bc0-9343-4d7a72219845",
                "relationshipStatus": "ACTIVE",
                "relationshipAttributes": {
                    "typeName": "ASSOCIATION_4UTG43"
                }
            }
        },
        "labels": []
    }
}Entity 2 before updating isLegacyAttribute to False: 
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/entity/guid/272394c3-b91a-4c5c-9bb6-2fd8038ea0e6{
    "referredEntities": {},
    "entity": {
        "typeName": "type_2_ASSOCIATION_2AN03T",
        "attributes": {
            "rel_attribute": {
                "guid": "010f014d-6265-42a9-9211-9008026d36f0",
                "typeName": "type_1_ASSOCIATION_90RHH6"
            },
            "name": "entity_2_MAW7SL"
        },
        "guid": "272394c3-b91a-4c5c-9bb6-2fd8038ea0e6",
        "isIncomplete": false,
        "status": "ACTIVE",
        "createdBy": "hrt_qa",
        "updatedBy": "hrt_qa",
        "createTime": 1648522086614,
        "updateTime": 1648522086614,
        "version": 0,
        "relationshipAttributes": {
            "rel_attribute": {
                "guid": "010f014d-6265-42a9-9211-9008026d36f0",
                "typeName": "type_1_ASSOCIATION_90RHH6",
                "entityStatus": "ACTIVE",
                "displayText": "entity_1_YX99F2",
                "relationshipType": "ASSOCIATION_4UTG43",
                "relationshipGuid": "e2a16930-6746-4417-a797-78b39941d212",
                "relationshipStatus": "ACTIVE",
                "relationshipAttributes": {
                    "typeName": "ASSOCIATION_4UTG43"
                }
            }
        },
        "labels": []
    }
}Reflationship def after updating isLegacyAttribute to False
{
    "category": "RELATIONSHIP",
    "guid": "-974050521988",
    "createdBy": "hrt_qa",
    "updatedBy": "hrt_qa",
    "createTime": 1648522025999,
    "updateTime": 1648522501410,
    "version": 2,
    "name": "ASSOCIATION_4UTG43",
    "description": "default relationshipDef description with name: 
ASSOCIATION_4UTG43",
    "typeVersion": "1.0",
    "attributeDefs": [],
    "relationshipCategory": "ASSOCIATION",
    "propagateTags": "NONE",
    "endDef1": {
        "type": "type_1_ASSOCIATION_90RHH6",
        "name": "rel_attribute",
        "isContainer": false,
        "cardinality": "SINGLE",
        "isLegacyAttribute": false,
        "description": "default relationshipEndDef description with name: 
rel_attribute"
    },
    "endDef2": {
        "type": "type_2_ASSOCIATION_2AN03T",
        "name": "rel_attribute",
        "isContainer": false,
        "cardinality": "SINGLE",
        "isLegacyAttribute": false,
        "description": "default relationshipEndDef description with name: 
rel_attribute"
    }
}Payload that was used to update
{"enumDefs": [], "entityDefs": [], "relationshipDefs": [{"category": 
"RELATIONSHIP", "updateTime": 1648522025999, "propagateTags": "NONE", "name": 
"ASSOCIATION_4UTG43", "relationshipCategory": "ASSOCIATION", "typeVersion": 
"1.0", "attributeDefs": [], "version": 1, "createdBy": "hrt_qa", "updatedBy": 
"hrt_qa", "endDef2": {"name": "rel_attribute", "isLegacyAttribute": false, 
"isContainer": false, "cardinality": "SINGLE", "type": 
"type_2_ASSOCIATION_2AN03T", "description": "default relationshipEndDef 
description with name: rel_attribute"}, "endDef1": {"name": "rel_attribute", 
"isLegacyAttribute": false, "isContainer": false, "cardinality": "SINGLE", 
"type": "type_1_ASSOCIATION_90RHH6", "description": "default relationshipEndDef 
description with name: rel_attribute"}, "guid": "-974050521988", "createTime": 
1648522025999, "description": "default relationshipDef description with name: 
ASSOCIATION_4UTG43"}], "businessMetadataDefs": [], "structDefs": [], 
"classificationDefs": []}
Entity 1 after updating isLegacyAttribute to False: 
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/entity/guid/010f014d-6265-42a9-9211-9008026d36f0{
    "referredEntities": {},
    "entity": {
        "typeName": "type_1_ASSOCIATION_90RHH6",
        "attributes": {
            "name": "entity_1_YX99F2"
        },
        "guid": "010f014d-6265-42a9-9211-9008026d36f0",
        "isIncomplete": false,
        "status": "ACTIVE",
        "createdBy": "hrt_qa",
        "updatedBy": "hrt_qa",
        "createTime": 1648522086614,
        "updateTime": 1648522086614,
        "version": 0,
        "relationshipAttributes": {
            "rel_attribute": null
        },
        "labels": []
    }
}
Entity 2 after updating isLegacyAttribute to False: 
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/entity/guid/272394c3-b91a-4c5c-9bb6-2fd8038ea0e6
{
    "referredEntities": {},
    "entity": {
        "typeName": "type_2_ASSOCIATION_2AN03T",
        "attributes": {
            "name": "entity_2_MAW7SL"
        },
        "guid": "272394c3-b91a-4c5c-9bb6-2fd8038ea0e6",
        "isIncomplete": false,
        "status": "ACTIVE",
        "createdBy": "hrt_qa",
        "updatedBy": "hrt_qa",
        "createTime": 1648522086614,
        "updateTime": 1648522086614,
        "version": 0,
        "relationshipAttributes": {
            "rel_attribute": null
        },
        "labels": []
    }
}Entity3 created after updating isLegacyAttribute to False:
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/entity/guid/9aac1cef-10f3-4846-a5e9-3fe9c5a21226
{
    "referredEntities": {},
    "entity": {
        "typeName": "type_1_ASSOCIATION_90RHH6",
        "attributes": {
            "name": "entity_3_REC4QF"
        },
        "guid": "9aac1cef-10f3-4846-a5e9-3fe9c5a21226",
        "isIncomplete": false,
        "status": "ACTIVE",
        "createdBy": "hrt_qa",
        "updatedBy": "hrt_qa",
        "createTime": 1648522763043,
        "updateTime": 1648522763043,
        "version": 0,
        "relationshipAttributes": {
            "rel_attribute": {
                "guid": "3f8dddc3-77cd-4278-bc9c-630ed8d0cd24",
                "typeName": "type_2_ASSOCIATION_2AN03T",
                "entityStatus": "ACTIVE",
                "displayText": "entity_4_527JL7",
                "relationshipType": "ASSOCIATION_4UTG43",
                "relationshipGuid": "0005e59d-7cd1-4ffb-9528-c09a8a6f2af5",
                "relationshipStatus": "ACTIVE",
                "relationshipAttributes": {
                    "typeName": "ASSOCIATION_4UTG43"
                }
            }
        },
        "labels": []
    }
}
Entity4 created after updating isLegacyAttribute to False: 
https://quasar-uytlae-4.quasar-uytlae.root.hwx.site:31443/api/atlas/v2/entity/guid/3f8dddc3-77cd-4278-bc9c-630ed8d0cd24{
    "referredEntities": {},
    "entity": {
        "typeName": "type_2_ASSOCIATION_2AN03T",
        "attributes": {
            "name": "entity_4_527JL7"
        },
        "guid": "3f8dddc3-77cd-4278-bc9c-630ed8d0cd24",
        "isIncomplete": false,
        "status": "ACTIVE",
        "createdBy": "hrt_qa",
        "updatedBy": "hrt_qa",
        "createTime": 1648522763043,
        "updateTime": 1648522763043,
        "version": 0,
        "relationshipAttributes": {
            "rel_attribute": {
                "guid": "9aac1cef-10f3-4846-a5e9-3fe9c5a21226",
                "typeName": "type_1_ASSOCIATION_90RHH6",
                "entityStatus": "ACTIVE",
                "displayText": "entity_3_REC4QF",
                "relationshipType": "ASSOCIATION_4UTG43",
                "relationshipGuid": "0005e59d-7cd1-4ffb-9528-c09a8a6f2af5",
                "relationshipStatus": "ACTIVE",
                "relationshipAttributes": {
                    "typeName": "ASSOCIATION_4UTG43"
                }
            }
        },
        "labels": []
    }
}


Diffs (updated)
-----

  intg/src/main/java/org/apache/atlas/type/AtlasRelationshipType.java 5b1737b70 
  
repository/src/main/java/org/apache/atlas/repository/store/graph/v2/EntityGraphRetriever.java
 a8fe5a762 


Diff: https://reviews.apache.org/r/74019/diff/2/

Changes: https://reviews.apache.org/r/74019/diff/1-2/


Testing
-------

Manual testing is done.

Pre-commit : 
https://ci-builds.apache.org/job/Atlas/job/PreCommit-ATLAS-Build-Test/1115/consoleFull

CASE 1 PROBLEM STATEMENT: In case, isLegacyAtrribute of both endDef1 and 
endDef2 is true.
        In this case as per the current condition if isLegacyAtrribute of both 
endDef1 and endDef2 is true then relationship label is not set and edge 
direction of endDef2 reverses, so we get Relationship Attribute as null for 
both entities.

FIX DETAILS: To fix this, we have added conditions in case if isLegacyAtrribute 
of both endDef1 and endDef2 is true so that the relationship label will be set 
and in turn the edge direction of endDef2 will have no change and the 
Relationship Attribute details will be shown for both entities.


CASE 2 PROBLEM STATEMENT:  In case, if isLegacyAtrribute is false for endDef1 
and true for endDef2
                 In this case, as per the current logic edge Direction will be 
reversed for both entities and hence we will be getting relationshipAtribute as 
null for entities.
                 
FIX DETAILS: To fix this, we have added a condition which will check if edge 
direction is reversed and in case it is reversed then update the edge direction 
to BOTH, so that the relationshipAttrribute will be populated as shown below.


Thanks,

Sanket Shelar

Reply via email to