You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tinkerpop.apache.org by "ASF GitHub Bot (Jira)" <ji...@apache.org> on 2023/07/31 12:41:00 UTC

[jira] [Commented] (TINKERPOP-2976) InvalidOperationException: Collection was modified in GraphBinary serialization

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