[ 
https://issues.apache.org/jira/browse/TINKERPOP-1923?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16401757#comment-16401757
 ] 

ASF GitHub Bot commented on TINKERPOP-1923:
-------------------------------------------

Github user jbaker-nca commented on the issue:

    https://github.com/apache/tinkerpop/pull/818
  
    Hi @spmallette, I've made the changes requested.
    
    My understanding is that in some cases, when removing nodes and/or edges, 
the collection of edges on a vertex can end up containing null values (I 
believe they should be properly removed rather than replaced with nulls, but my 
knowledge of the Tinkerpop codebase is very limited so I wasn't sure why this 
would be happening). These null values were causing issues when looping across 
the collection, which was resulting in the exception thrown.


> Intermittent NegativeArraySizeException on drop
> -----------------------------------------------
>
>                 Key: TINKERPOP-1923
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1923
>             Project: TinkerPop
>          Issue Type: Bug
>          Components: tinkergraph
>    Affects Versions: 3.3.1
>            Reporter: James Baker
>            Priority: Major
>
> I am intermittently getting the following exception when dropping vertices on 
> a TinkerGraph:
> {noformat}
> Exception in thread "main" java.lang.NegativeArraySizeException
> at java.util.AbstractCollection.toArray(AbstractCollection.java:136)
> at java.util.ArrayList.addAll(ArrayList.java:581)
> at java.util.HashMap$Values.forEach(HashMap.java:981)
> at 
> org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerHelper.getEdges(TinkerHelper.java:172)
> at 
> org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex.edges(TinkerVertex.java:146)
> at 
> org.apache.tinkerpop.gremlin.tinkergraph.structure.TinkerVertex.remove(TinkerVertex.java:131)
> at 
> org.apache.tinkerpop.gremlin.process.traversal.step.filter.DropStep.filter(DropStep.java:67)
> at 
> org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep.processNextStart(FilterStep.java:38)
> at 
> org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.hasNext(AbstractStep.java:143)
> at 
> org.apache.tinkerpop.gremlin.process.traversal.step.util.ExpandableStepIterator.next(ExpandableStepIterator.java:50)
> at 
> org.apache.tinkerpop.gremlin.process.traversal.step.filter.FilterStep.processNextStart(FilterStep.java:37)
> at 
> org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:128)
> at 
> org.apache.tinkerpop.gremlin.process.traversal.step.util.AbstractStep.next(AbstractStep.java:38)
> at 
> org.apache.tinkerpop.gremlin.process.traversal.Traversal.iterate(Traversal.java:203)
> at 
> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal.iterate(GraphTraversal.java:2664)
> at 
> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal$Admin.iterate(GraphTraversal.java:177)
> at 
> org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.DefaultGraphTraversal.iterate(DefaultGraphTraversal.java:48)
> at mycode.merge.GraphMerger.mergeVertices(GraphMerger.java:172)
> at mycode.merge.GraphMerger.lambda$mergeGraphs$6(GraphMerger.java:78)
> at java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:193)
> at 
> java.util.concurrent.ConcurrentHashMap$ValueSpliterator.forEachRemaining(ConcurrentHashMap.java:3566)
> at java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:481)
> at 
> java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:471)
> at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:708)
> at java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
> at java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:499)
> at mycode.merge.GraphMerger.mergeGraphs(GraphMerger.java:79)
> at mycode.cli.mapper.MergeGraphFiles.main(MergeGraphFiles.java:117)
> {noformat}
> My code is as follows (the last line is Line 172, which is where the 
> exception is thrown):
> {code:java}
> LOGGER.info("Removing original vertices");
> Object[] ids = mergeGroup.stream().map(Element::id).toArray();
> LOGGER.debug("IDs to remove {}", ids);
> if(ids != null && ids.length > 0)
>     graph.traversal().V(ids).drop().iterate();
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to