[ https://issues.apache.org/jira/browse/TINKERPOP-2976?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17749191#comment-17749191 ]
ASF GitHub Bot commented on TINKERPOP-2976: ------------------------------------------- FlorianHockmann opened a new pull request, #2176: URL: https://github.com/apache/tinkerpop/pull/2176 https://issues.apache.org/jira/browse/TINKERPOP-2976 In rare cases users could get an `InvalidOperationException` if the dictionary of `_serializerByType` was modified while another thread in parallel iterated over the keys of this dictionary. Just creating a copy of the supported types and then iterating over that should fix this. The problem was reported for GraphBinary, but the GraphSONWriter had the same problem so I also fixed it there. VOTE +1 Since we are currently in code freeze, we can simply merge this after that has been lifted. > InvalidOperationException: Collection was modified in GraphBinary > serialization > ------------------------------------------------------------------------------- > > Key: TINKERPOP-2976 > URL: https://issues.apache.org/jira/browse/TINKERPOP-2976 > Project: TinkerPop > Issue Type: Bug > Components: dotnet > Affects Versions: 3.5.6, 3.6.4 > Reporter: Florian Hockmann > Priority: Minor > > This was first reported for JanusGraph.Net: > [https://github.com/JanusGraph/janusgraph-dotnet/issues/140] > but the issue is most likely in Gremlin.Net. > {code:java} > System.InvalidOperationException: Collection was modified; enumeration > operation may not execute. > at > System.Collections.Generic.Dictionary2.KeyCollection.Enumerator.MoveNext() > at > Gremlin.Net.Structure.IO.GraphBinary.TypeSerializerRegistry.GetSerializerFor(Type > valueType) > at Gremlin.Net.Structure.IO.GraphBinary.GraphBinaryWriter.WriteAsync(Object > value, Stream stream, CancellationToken cancellationToken) > [...]{code} > The problem is most likely that the driver iterates over all supported types > in a {{foreach}} loop to find a type to which the type to be serialized can > be assigned which means that the same serializer can be used. Then this > serializer is registered for the new type which modifies the collection the > {{foreach}} is iterated on, leading to this error. -- This message was sent by Atlassian Jira (v8.20.10#820010)