Change cast to Vertex used in prepareSuperstep() to BasicVertex
---------------------------------------------------------------

                 Key: GIRAPH-113
                 URL: https://issues.apache.org/jira/browse/GIRAPH-113
             Project: Giraph
          Issue Type: Bug
            Reporter: Yuanyuan Tian
            Priority: Minor


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());
}

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