Generate the same hash-code for two vertices/edges with the same ID

Issue #8 resolved
Sridhar Ramachandran repo owner created an issue

Reported by user: Gremlin queries may run into infinite loops with READ_COMMITTED mode because the queries are using direct hash-codes to identify if two vertices/edges are the same, rather than hash-codes on the ID.

Here is an example stack trace:

    at java.util.HashMap.getEntry(HashMap.java:446)
    at java.util.HashMap.containsKey(HashMap.java:434)
    at java.util.HashSet.contains(HashSet.java:201)
    at com.tinkerpop.pipes.filter.DuplicateFilterPipe.processNextStart(DuplicateFilterPipe.java:42)
    at com.tinkerpop.pipes.AbstractPipe.hasNext(AbstractPipe.java:98)
    at com.tinkerpop.pipes.util.Pipeline.hasNext(Pipeline.java:105)
    at com.tinkerpop.pipes.branch.FairMergePipe.processNextStart(FairMergePipe.java:32)
    at com.tinkerpop.pipes.AbstractPipe.next(AbstractPipe.java:89)
    at com.tinkerpop.pipes.util.Pipeline.next(Pipeline.java:115)
    at com.tinkerpop.pipes.branch.LoopPipe.processNextStart(LoopPipe.java:44)
    at com.tinkerpop.pipes.AbstractPipe.next(AbstractPipe.java:89)
    at com.tinkerpop.pipes.util.Pipeline.next(Pipeline.java:115)
    at com.tinkerpop.pipes.transform.PathPipe.processNextStart(PathPipe.java:39)
    at com.tinkerpop.pipes.transform.PathPipe.processNextStart(PathPipe.java:20)
    at com.tinkerpop.pipes.AbstractPipe.hasNext(AbstractPipe.java:98)
    at com.tinkerpop.pipes.util.Pipeline.hasNext(Pipeline.java:105)
    at org.codehaus.groovy.runtime.DefaultGroovyMethods.toList(DefaultGroovyMethods.java:1946)
    at org.codehaus.groovy.runtime.DefaultGroovyMethods.toList(DefaultGroovyMethods.java:1961)

Comments (1)

  1. Log in to comment