giraph-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Avery Ching <ach...@apache.org>
Subject Re: problem using LongDoubleFloatDoubleVertex
Date Wed, 21 Dec 2011 05:55:05 GMT
Nice find!  That's a bug.  I opened up GIRAPH-113 with your solution (I 
believe it is correct).  I'll have to wait for someone to +1 it before a 
commit.

Avery

On 12/20/11 6:07 PM, Yuanyuan Tian wrote:
>
> Hi,
>
> I decided to use LongDoubleFloatDoubleVertex in a graph algorithm 
> because it uses more compact and efficient mahout collections. However 
> I run into an error when running the algorithm:
>
> java.lang.ClassCastException: 
> org.apache.giraph.graph.LongDoubleFloatDoubleVertex cannot be cast to 
> org.apache.giraph.graph.Vertex
> at 
> org.apache.giraph.comm.BasicRPCCommunications.prepareSuperstep(BasicRPCCommunications.java:1016)
> at 
> org.apache.giraph.graph.BspServiceWorker.startSuperstep(BspServiceWorker.java:843)
> at org.apache.giraph.graph.GraphMapper.map(GraphMapper.java:569)
> at org.apache.giraph.graph.GraphMapper.run(GraphMapper.java:728)
> ... 7 more
>
> Basically, the problem is that in 
> BasicRPCCommunications.prepareSuperStep(), the 
> LongDoubleFloatDoubleVertex are cast to Vertex in the following code 
> fragment. But LongDoubleFloatDoubleVertex inherits from BasicVertex 
> instead of Vertex.
>
> *if* (vertex != *null*) {
>    ((MutableVertex<I, V, E, M>) vertex).setVertexId(vertexIndex);
>    partition.putVertex((Vertex<I, V, E, M>) vertex);
> } *else**if* (originalVertex != *null*) {
>   partition.removeVertex(originalVertex.getVertexId());
> }
>
> I did a simple change: cast LongDoubleFloatDoubleVertex to 
> BasicVertex. The problem went away, and the algorithm finished without 
> any error. But I am not sure this change has any implication to other 
> parts of the code. So, I hope to get some comments from the Giraph 
> developers.
>
> *if* (vertex != *null*) {
>    ((MutableVertex<I, V, E, M>) vertex).setVertexId(vertexIndex);
>    partition.putVertex((BasicVertex<I, V, E, M>) vertex);
> } *else**if* (originalVertex != *null*) {
>   partition.removeVertex(originalVertex.getVertexId());
> }
>
> Thanks,
> Yuanyuan Tian
> Research Staff Member
> IBM Almaden Research Center
> 650 Harry Road
> San Jose, California 95120-6099
> (408) 927-1704
>


Mime
View raw message