[ https://issues.apache.org/jira/browse/GIRAPH-112?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Avery Ching updated GIRAPH-112: ------------------------------- Summary: Use elements() properly in LongDoubleFloatDoubleVertex (was: A bug in LongDoubleFloatDoubleVertex.write(DataOutput out)) > 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