[ 
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)

Reply via email to