Uploaded image for project: 'Giraph'
  1. Giraph
  2. GIRAPH-113

Change cast to Vertex used in prepareSuperstep() to BasicVertex

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 0.1.0
    • Fix Version/s: 0.1.0
    • Component/s: None
    • Labels:
      None

      Description

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

        Attachments

        1. GIRAPH-113.patch
          1 kB
          Avery Ching

          Activity

            People

            • Assignee:
              humming80 Yuanyuan Tian
              Reporter:
              humming80 Yuanyuan Tian
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: