[
https://issues.apache.org/jira/browse/ATLAS-5381?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Sheetal Shah reassigned ATLAS-5381:
-----------------------------------
Assignee: Sheetal Shah
> Entity delete and purge fail when traversing empty owned reference vertices
> ---------------------------------------------------------------------------
>
> Key: ATLAS-5381
> URL: https://issues.apache.org/jira/browse/ATLAS-5381
> Project: Atlas
> Issue Type: Improvement
> Components: atlas-core
> Reporter: Sheetal Shah
> Assignee: Sheetal Shah
> Priority: Major
>
> h2. Summary
> Entity delete and purge can fail when Atlas traverses owned references (e.g.
> {{columns}} on {{{}hive_table{}}}) and hits empty reference vertices: the
> vertex and relationship edge still exist, but the vertex has no properties
> ({{{}__typeName{}}}, {{{}__guid{}}}, etc.).
> On read, Atlas tolerates this (ATLAS-4605) and returns {{null}} in arrays
> like {{{}relationshipAttributes.columns{}}}. On delete/purge,
> {{getOwnedVertices()}} throws and the parent operation fails.
> h2. Error
>
> {"errorCode":"ATLAS-400-00-014","errorMessage":"Type ENTITY with name null
> does not exist"}
> org.apache.atlas.exception.AtlasBaseException: Type ENTITY with name null
> does not exist
> at
> org.apache.atlas.repository.store.graph.v1.DeleteHandlerV1.getOwnedVertices(DeleteHandlerV1.java:218)
> at
> org.apache.atlas.repository.store.graph.v1.DeleteHandlerV1.deleteEntities(DeleteHandlerV1.java:123)
> at
> org.apache.atlas.repository.store.graph.v2.AtlasEntityStoreV2.purgeVertices(AtlasEntityStoreV2.java:1385)
> at
> org.apache.atlas.repository.store.graph.v2.AtlasEntityStoreV2.purgeByIds(AtlasEntityStoreV2.java:586)
> Root cause
> h3. Graph state
> Some owned reference vertices are in an inconsistent state:
> * Relationship edge from parent → child still exists
> * Target vertex exists in graph storage
> * Target vertex has empty or missing properties ({{{}__typeName{}}} is null)
> This can occur due to:
> * Partial hard purge / incomplete composite cleanup
> * Concurrent purge and delete on related entities
> * Incomplete metadata sync (for example, column dropped in source system but
> Atlas graph left with dangling edges)
> * Failed or interrupted delete/purge leaving vertex shells behind
> h3. Read vs delete behavior mismatch
> Read path ({{{}EntityGraphRetriever{}}}) — handled since ATLAS-4605:
> * When a reference vertex has no property keys, Atlas logs a warning and
> returns {{null}} in the relationship array
> * GET succeeds but shows {{null}} entries in arrays like {{columns}}
> Delete/purge traversal path ({{{}DeleteHandlerV1.getOwnedVertices{}}}) — not
> handled:
> * Traverses owned reference attributes via relationship edges
> * Calls {{toAtlasEntityHeader()}} on each referenced vertex
> * If {{typeName}} is null, throws {{TYPE_NAME_INVALID}}
> ({{{}ATLAS-400-00-014{}}})
> * Parent entity delete/purge fails entirely
--
This message was sent by Atlassian Jira
(v8.20.10#820010)