All,

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:
var enumerator = saves.GetEnumerator();
while (enumerator.Current == null) // <- Throws exception now
{
   if (!enumerator.MoveNext())
      return list;
}

Should be changed to something like this:
while (enumerator.MoveNext())
{
    var item = enumerator.Current;
}

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

 private object? GetCurrent()
{
    // Use dynamic to object to prevent runtime dynamic conversion evaluation
    return TraverserEnumerator.Current?.Object;
}

Is this a know issue, is anyone working on it.

Cheers,
Eric Sites

Reply via email to