[ 
https://issues.apache.org/jira/browse/ATLAS-5375?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Sheetal Shah updated ATLAS-5375:
--------------------------------
    Description: 
*Summary*
{{PUT /api/atlas/v2/relationship}} returns HTTP 200 with a stale relationship 
body. Block/unblock runs in async task 
{{CLASSIFICATION_PROPAGATION_RELATIONSHIP_UPDATE}} after the response, so the 
PUT body does not match the request. GET after ~15–30s shows the correct state.

{*}Also{*}: PUT without {{propagateTags}} → NPE in 
{{DeleteHandlerV1.updateTagPropagations()}} → task fails; block/unblock never 
applies.

*Repro (brief)*
 # Propagate tag on source table via lineage edge.
 # PUT block with {{blockedPropagatedClassifications: [\\{tag}]}} → wait → 
verify downstream.
 # PUT unblock with {{blockedPropagatedClassifications: []}} → PUT body still 
shows old blocked list; GET after wait is correct.

*Root cause*
Response built from graph before deferred task runs; task JSON may have null 
{{{}propagateTags{}}}.

  was:
*Summary*
{{PUT /api/atlas/v2/relationship}} returns HTTP 200 with a stale relationship 
body. Block/unblock runs in async task 
{{CLASSIFICATION_PROPAGATION_RELATIONSHIP_UPDATE}} after the response, so the 
PUT body does not match the request. GET after ~15–30s shows the correct state.

{*}Also{*}: PUT without {{propagateTags}} → NPE in 
{{DeleteHandlerV1.updateTagPropagations()}} → task fails; block/unblock never 
applies.

*Repro (brief)*
 # Propagate tag on source table via lineage edge.
 # PUT block with {{blockedPropagatedClassifications: [\{tag}]}} → wait → 
verify downstream.
 # PUT unblock with {{blockedPropagatedClassifications: []}} → PUT body still 
shows old blocked list; GET after wait is correct.

*Root cause*
Response built from graph before deferred task runs; task JSON may have null 
{{{}propagateTags{}}}.

*Proposed fix*
 * Sync edge metadata on PUT ({{{}blocked{}}}, {{{}propagateTags{}}}) before 
response.
 * Async entity propagation only in background task.
 * Fix null {{propagateTags}} NPE.
 * Add {{pendingTasks}} on {{AtlasRelationship}} (PUT + GET 
{{{}/api/atlas/v2/relationship/guid/{guid}{}}}).

*Acceptance*
 * PUT returns correct edge fields immediately + {{pendingTasks}} when queued.
 * No NPE without {{{}propagateTags{}}}.
 * Entity tags correct after task completes.


> Fix stale PUT response for /api/atlas/v2/relationship block/unblock 
> propagation
> -------------------------------------------------------------------------------
>
>                 Key: ATLAS-5375
>                 URL: https://issues.apache.org/jira/browse/ATLAS-5375
>             Project: Atlas
>          Issue Type: Improvement
>          Components:  atlas-core
>    Affects Versions: 3.0.0
>            Reporter: Sheetal Shah
>            Assignee: Sheetal Shah
>            Priority: Major
>
> *Summary*
> {{PUT /api/atlas/v2/relationship}} returns HTTP 200 with a stale relationship 
> body. Block/unblock runs in async task 
> {{CLASSIFICATION_PROPAGATION_RELATIONSHIP_UPDATE}} after the response, so the 
> PUT body does not match the request. GET after ~15–30s shows the correct 
> state.
> {*}Also{*}: PUT without {{propagateTags}} → NPE in 
> {{DeleteHandlerV1.updateTagPropagations()}} → task fails; block/unblock never 
> applies.
> *Repro (brief)*
>  # Propagate tag on source table via lineage edge.
>  # PUT block with {{blockedPropagatedClassifications: [\\{tag}]}} → wait → 
> verify downstream.
>  # PUT unblock with {{blockedPropagatedClassifications: []}} → PUT body still 
> shows old blocked list; GET after wait is correct.
> *Root cause*
> Response built from graph before deferred task runs; task JSON may have null 
> {{{}propagateTags{}}}.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to