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/ 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/ 
> 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


Reply via email to