[ https://issues.apache.org/jira/browse/TINKERPOP-1923?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16401744#comment-16401744 ]
ASF GitHub Bot commented on TINKERPOP-1923: ------------------------------------------- Github user spmallette commented on the issue: https://github.com/apache/tinkerpop/pull/818 Thanks for looking into this issue. I saw your issue in JIRA and your SO question, but just haven't had a chance to really dig into it. I can see how your solution would get rid of the `NullPointerException`, but do you understand the root cause of why this happens in the first place? Could you perhaps add your reasoning as to why this is the right fix in that context in the description of this pull request? Also, if this is the right fix, could you get rid of the use of `stream()` in favor of TinkerPop's `IteratorUtils.filter()` - we've found `stream()` to sadly be far less performant. Finally, could you please retarget this PR to the tp32 branch as I think this fix should be applied across all currently maintained versions? Note that we have a release coming in the next two weeks so this PR arrived just in time - thanks again. > 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)