Florian Hockmann created TINKERPOP-3029: -------------------------------------------
Summary: 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.7.1, 3.6.6, 3.5.8 Reporter: Florian Hockmann Assignee: Florian Hockmann 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)