[ 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)