[ https://issues.apache.org/jira/browse/GIRAPH-113?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Avery Ching updated GIRAPH-113: ------------------------------- Attachment: GIRAPH-113.patch > 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 > Assignee: Avery Ching > Priority: Minor > Attachments: GIRAPH-113.patch > > > 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