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

Alessandro Presta updated GIRAPH-556:
-------------------------------------

    Attachment: GIRAPH-556.patch

Good point. Since local mutation requests are short-circuited (i.e. never 
serialized), we may end up adding a vertex with non-initialized edges.
Replaced with a call to createAndInitializeVertexEdges().
Calling createVertexEdges() still makes sense before calling readFields() (same 
story as with Vertex).

This update also removes an unused method from WorkerClientRequestProcessor.

Committing soon unless there are further comments.
                
> Race condition in EdgeStore
> ---------------------------
>
>                 Key: GIRAPH-556
>                 URL: https://issues.apache.org/jira/browse/GIRAPH-556
>             Project: Giraph
>          Issue Type: Bug
>            Reporter: Alessandro Presta
>            Assignee: Alessandro Presta
>            Priority: Critical
>         Attachments: GIRAPH-556.patch, GIRAPH-556.patch
>
>
> In EdgeStore#addPartitionEdges(), when there is no VertexEdges data structure 
> for a vertex, we try to insert a newly-created one. If the insertion is 
> successful, we initialize it and later insert an edge in the synchronized 
> block.
> It can happen that, between creation and initialization, another thread 
> acquires the lock and tries to add an edge, leading to a NullPointerException 
> for many implementations of VertexEdges.
> The fix is to create and initialize the structure before we try to insert it.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to