Index: graph/src/main/java/org/apache/hama/graph/GraphJobRunner.java =================================================================== --- graph/src/main/java/org/apache/hama/graph/GraphJobRunner.java (revision 1482301) +++ graph/src/main/java/org/apache/hama/graph/GraphJobRunner.java (working copy) @@ -276,11 +276,22 @@ BSPPeer peer) { @SuppressWarnings("unchecked") int comparision = firstMessageId.compareTo(vertex.getVertexID()); - if (comparision < 0) { - throw new IllegalArgumentException( + if (conf.getBoolean("hama.check.missing.vertex", true)) { + if (comparision < 0) { + throw new IllegalArgumentException( "Messages must never be behind the vertex in ID! Current Message ID: " + firstMessageId + " vs. " + vertex.getVertexID()); - } else if (comparision == 0) { + } + } else { + while (comparision < 0) { + VertexMessageIterable messageIterable = new VertexMessageIterable(currentMessage, + firstMessageId, peer); + currentMessage = messageIterable.getOverflowMessage(); + firstMessageId = (V)currentMessage.getVertexId(); + comparision = firstMessageId.compareTo(vertex.getVertexID()); + } + } + if (comparision == 0) { // vertex id matches with the vertex, return an iterator with newest // message return new VertexMessageIterable(currentMessage,