From 4926f93210189001b94be871551869539be6f519 Mon Sep 17 00:00:00 2001 From: Neel Shah Date: Wed, 1 Jul 2026 17:22:48 +0000 Subject: [PATCH] Fix doFinalReduction to remove keys when post-barrier steps produce nothing --- .../gremlin/process/traversal/step/Grouping.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Grouping.java b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Grouping.java index 62cc816e8c6..18f53097376 100644 --- a/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Grouping.java +++ b/gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/Grouping.java @@ -31,6 +31,7 @@ import org.apache.tinkerpop.gremlin.process.traversal.step.sideEffect.GroupSideEffectStep; import org.apache.tinkerpop.gremlin.process.traversal.step.util.ProfileStep; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -106,12 +107,17 @@ public default Traversal.Admin convertValueTraversal(final Traversal.Admin public default Map doFinalReduction(final Map map, final Traversal.Admin valueTraversal) { final Barrier barrierStep = determineBarrierStep(valueTraversal); if (barrierStep != null) { + final List keysToRemove = new ArrayList<>(); for (final K key : map.keySet()) { valueTraversal.reset(); barrierStep.addBarrier(map.get(key)); - if (valueTraversal.hasNext()) + if (valueTraversal.hasNext()) { map.put(key, valueTraversal.next()); + } else { + keysToRemove.add(key); + } } + keysToRemove.forEach(map::remove); } return (Map) map; }