[ 
https://issues.apache.org/jira/browse/GIRAPH-112?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13173932#comment-13173932
 ] 

jirapos...@reviews.apache.org commented on GIRAPH-112:
------------------------------------------------------


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

Review request for giraph.


Summary
-------

As pointed out by YuanYua, the array returned by elements() cannot have its 
length used since the array contains all the elements currently stored in the 
mahout collections, even including invalid elements between size and capacity.

Whenever possible I converted elements() into forEach(), forEachKey(), 
forEachPair().  Used size() in other cases.

Fixed some formatting violations as well in LongDoubleFloatDoubleVertex.java.


This addresses bug GIRAPH-112.
    https://issues.apache.org/jira/browse/GIRAPH-112


Diffs
-----

  
http://svn.apache.org/repos/asf/incubator/giraph/trunk/src/main/java/org/apache/giraph/graph/LongDoubleFloatDoubleVertex.java
 1221634 

Diff: https://reviews.apache.org/r/3287/diff


Testing
-------

Local unittests and MR unittests.


Thanks,

Avery


                
> Use elements() properly in LongDoubleFloatDoubleVertex
> ------------------------------------------------------
>
>                 Key: GIRAPH-112
>                 URL: https://issues.apache.org/jira/browse/GIRAPH-112
>             Project: Giraph
>          Issue Type: Bug
>          Components: graph
>    Affects Versions: 0.70.0
>         Environment: Any
>            Reporter: Yuanyuan Tian
>             Fix For: 0.70.0
>
>         Attachments: GIRAPH-112.patch
>
>   Original Estimate: 5m
>  Remaining Estimate: 5m
>
> I found a bug in LongDoubleFloatDoubleVertex.write(DataOutput out) when 
> running a small graph algorithm. The symptom is that a vertex read from a 
> different worker becomes junk after the RPC communication. And the source of 
> the problem is the writing of the messages in 
> LongDoubleFloatDoubleVertex.write(DataOutput out):
> for(double msg : messageList.elements()) {
>    out.writeDouble(msg);
> }
> Here messageList.elements() will returns all the elements currently stored in 
> the mahout DoubleArrayList, even including invalid elements between size and 
> capacity. Therefore, the write() function will write a bunch of invalid 
> messages, which will cause error when reading them back in readfields().
> The following is a simple solution:
> double[] elements=messageList.elements();
> for(int i=0; i<messageList.size(); i++) {
>    out.writeDouble(elements[i]);
> }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to