A bug in LongDoubleFloatDoubleVertex.write(DataOutput out)
----------------------------------------------------------

                 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


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