[ https://issues.apache.org/jira/browse/TINKERPOP-3029?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17802307#comment-17802307 ]
ASF GitHub Bot commented on TINKERPOP-3029: ------------------------------------------- vkagamlyk commented on code in PR #2424: URL: https://github.com/apache/tinkerpop/pull/2424#discussion_r1440829828 ########## gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs: ########## @@ -82,21 +82,22 @@ public bool MoveNext() } private bool MoveNextInternal() - { + { if (_fetchedNext) return _nextAvailable; + + if (!_nextAvailable || _nextAvailable && TraverserEnumerator.Current?.Bulk == 0) Review Comment: can be simplified ```suggestion if (!_nextAvailable || TraverserEnumerator.Current?.Bulk == 0) ``` > Gremlin.Net: Traversal enumeration fails on .NET 8 > -------------------------------------------------- > > Key: TINKERPOP-3029 > URL: https://issues.apache.org/jira/browse/TINKERPOP-3029 > Project: TinkerPop > Issue Type: Bug > Components: dotnet > Affects Versions: 3.5.8, 3.6.6, 3.7.1 > Reporter: Florian Hockmann > Assignee: Florian Hockmann > Priority: Critical > > This has been reported by Eric Sites on the dev mailing list: > [https://lists.apache.org/thread/snztwgk3s18h83mx8ql455hmx6ncl2r4] > ---- > I am having a lot of issues using the Gremlin.Net driver version 3.7.1 with > .Net 8. > It is almost entirely unusable. > Any request that uses an Iterator throws an exception ({{{}MoveNext{}}}, > {{{}Next{}}}, {{{}Iterate{}}}). > {{{}System.InvalidOperationException: Enumeration has not started. Call > MoveNext{}}}. > Tracked it down to a change in .Net 8 {{IEnumerable<T>.Current}} behavior. > Here is an issue about this filed in dotnet runtime: > [https://github.com/dotnet/runtime/issues/85243] > New bad code: > {code:java} > var enumerator = saves.GetEnumerator(); > while (enumerator.Current == null) // <- Throws exception now > { > if (!enumerator.MoveNext()) > return list; > } > {code} > Should be changed to something like this: > {code:java} > while (enumerator.MoveNext()) > { > var item = enumerator.Current; > } > {code} > Here is an example of the issue in the Gremlin.Net code: > [https://github.com/apache/tinkerpop/blob/e8b9532fc0ec811460e97ebf5e00b8b9ec9192ac/gremlin-dotnet/src/Gremlin.Net/Process/Traversal/DefaultTraversal.cs#L132] > {code:java} > private object? GetCurrent() > { > // Use dynamic to object to prevent runtime dynamic conversion evaluation > return TraverserEnumerator.Current?.Object; > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)