[ https://issues.apache.org/jira/browse/GIRAPH-34?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13106739#comment-13106739 ]
Avery Ching commented on GIRAPH-34: ----------------------------------- Suppose for example, they send their vertex value to the destination vertex. I.e. sendMsg(destVertex, getVertexValue()), then since the vertex value is not copied and delivered, the message will have all the changes of the vertex value after it's supposedly been sent (not good). I think it will be hard to "force" users to ensure that the sent messages must be an object they are sure to not modify. That's similar to how this error happened in the first place (See SimpleCheckpointVertex). I really don't see how we can avoid copying the object as it will be pretty dangerous when mutable types are used as messages. The changes from GIRAPH-27 didn't cause that issue, it's a bug that has likely been around for awhile. Glad to have it reported by Christian. As you mentioned, there could be issues elsewhere with the change to not require everything to subclass Vertex. Maybe address in a later JIRA? > Failure of Vertex reflection for putVertexList from GIRAPH-27 > -------------------------------------------------------------- > > Key: GIRAPH-34 > URL: https://issues.apache.org/jira/browse/GIRAPH-34 > Project: Giraph > Issue Type: Bug > Reporter: Christian Kunz > Assignee: Avery Ching > Attachments: GIRAPH-34.patch > > > Christian actually found this bug. I am filing the JIRA on his behalf. > Here's my error when running TestVertexRangeBalancer. > java.lang.RuntimeException: java.io.IOException: Call to > returnwhose-lm/10.72.107.231:30002 failed on local exception: > java.io.EOFException > at > org.apache.giraph.comm.BasicRPCCommunications.sendVertexListReq(BasicRPCCommunications.java:768) > at > org.apache.giraph.graph.BspServiceWorker.exchangeVertexRanges(BspServiceWorker.java:1282) > at org.apache.giraph.graph.GraphMapper.map(GraphMapper.java:589) > at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:144) > at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:763) > at org.apache.hadoop.mapred.MapTask.run(MapTask.java:369) > at org.apache.hadoop.mapred.Child$4.run(Child.java:259) > at java.security.AccessController.doPrivileged(Native Method) > at javax.security.auth.Subject.doAs(Subject.java:396) > at > org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1059) > at org.apache.hadoop.mapred.Child.main(Child.java:253) > Caused by: java.io.IOException: Call to returnwhose-lm/10.72.107.231:30002 > failed on local exception: java.io.EOFException > at org.apache.hadoop.ipc.Client.wrapException(Client.java:1065) > at org.apache.hadoop.ipc.Client.call(Client.java:1033) > at org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:224) > at $Proxy3.putVertexList(Unknown Source) > at > org.apache.giraph.comm.BasicRPCCommunications.sendVertexListReq(BasicRPCCommunications.java:766) > ... 10 more > Caused by: java.io.EOFException > at java.io.DataInputStream.readInt(DataInputStream.java:375) > at > org.apache.hadoop.ipc.Client$Connection.receiveResponse(Client.java:767) > at org.apache.hadoop.ipc.Client$Connection.run(Client.java:712) > I identified and fixed the issue by making BasicVertex implement Configurable > and making the graph state set in BasicRPCCommunications. There is one more > error though that I'll try and solve before putting up a reviewboard. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira