[ https://issues.apache.org/jira/browse/IGNITE-8588?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16814125#comment-16814125 ]
Pavel Tupitsyn commented on IGNITE-8588: ---------------------------------------- Looks good, merged to master: {{1a7e62a84619a25777e74fd9f5a3d68e9f5f6248}}. > .NET: Serialization issue when derived type hides base type member > ------------------------------------------------------------------ > > Key: IGNITE-8588 > URL: https://issues.apache.org/jira/browse/IGNITE-8588 > Project: Ignite > Issue Type: Bug > Components: platforms > Affects Versions: 2.4 > Reporter: Pavel Tupitsyn > Assignee: Alexandr Shapkin > Priority: Major > Labels: .NET > Time Spent: 1h 10m > Remaining Estimate: 0h > > The following class structure causes an exception that is hard to understand > (when putting instance of B into Ignite cache): > {code} > public class A > { > public int bob; > } > public class B : A > { > public int bob; > } > {code} > Exception: > {code} > Apache.Ignite.Core.Binary.BinaryObjectException: Conflicting field IDs > [type=SubGridsRequestArgument, field1=Filters, field2=Filters, > fieldId=-854547461] > at > Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Register(Type > type, Int32 typeId, IBinaryNameMapper converter, IBinaryIdMapper idMapper, > Boolean forceTimestamp) > at > Apache.Ignite.Core.Impl.Binary.Marshaller.GetSerializer(BinaryConfiguration > cfg, BinaryTypeConfiguration typeCfg, Type type, Int32 typeId, > IBinaryNameMapper nameMapper, IBinaryIdMapper idMapper, ILogger log) > at Apache.Ignite.Core.Impl.Binary.Marshaller.AddUserType(Type type, Int32 > typeId, String typeName, Boolean registered, BinaryFullTypeDescriptor desc) > at Apache.Ignite.Core.Impl.Binary.Marshaller.RegisterType(Type type, > BinaryFullTypeDescriptor desc) > at Apache.Ignite.Core.Impl.Binary.Marshaller.GetDescriptor(Type type) > at Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write[T](T obj) > at > Apache.Ignite.Core.Impl.Deployment.PeerLoadingExtensions.WriteWithPeerDeployment(BinaryWriter > writer, Object o) > at > Apache.Ignite.Core.Impl.Binary.BinarySystemTypeSerializer`1.WriteBinary[T1](T1 > obj, BinaryWriter writer) > at Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write[T](T obj) > at > Apache.Ignite.Core.Impl.Binary.BinarySystemTypeSerializer`1.WriteBinary[T1](T1 > obj, BinaryWriter writer) > at Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write[T](T obj) > at Apache.Ignite.Core.Impl.Binary.BinaryWriter.WriteObjectDetached[T](T o) > at Apache.Ignite.Core.Impl.Compute.ComputeImpl.WriteJob(IComputeJob job, > BinaryWriter writer) > at > Apache.Ignite.Core.Impl.Compute.ComputeImpl.<>c__DisplayClass1d`3.<ExecuteClosures0>b__1a(BinaryWriter > writer) > at Apache.Ignite.Core.Impl.PlatformTargetAdapter.WriteToStream(Action`1 > action, IBinaryStream stream, Marshaller marsh) > at Apache.Ignite.Core.Impl.PlatformJniTarget.InStreamOutObject(Int32 type, > Action`1 writeAction) > at > Apache.Ignite.Core.Impl.Compute.ComputeImpl.ExecuteClosures0[TArg,TJobRes,TReduceRes](IComputeTask`3 > task, IComputeJob job, IEnumerable`1 jobs, Int32 opId, Int32 jobsCount, > Action`1 writeAction) > --- End of inner exception stack trace --- > at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean > includeTaskCanceledExceptions) > at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, > CancellationToken cancellationToken) > at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout) > at VSS.TRex.GridFabric.Requests.SubGridRequestsProgressive`2.Execute() in > C:\Dev\VSS.TRex\src\netstandard\RaptorClassLibrary.netstandard\GridFabric\Requests\SubGridRequestsProgressive.cs:line > 107 > at VSS.TRex.Pipelines.SubGridPipelineBase`3.Initiate() in > C:\Dev\VSS.TRex\src\netstandard\RaptorClassLibrary.netstandard\Pipelines\SubGridPipelineBase.cs:line > 241 > at VSS.TRex.Rendering.PlanViewTileRenderer.ExecutePipeline() in > C:\Dev\VSS.TRex\src\netstandard\RaptorClassLibrary.netstandard\Rendering\PlanViewTileRenderer.cs:line > 262 > ---> (Inner Exception #0) Apache.Ignite.Core.Binary.BinaryObjectException: > Conflicting field IDs [type=SubGridsRequestArgument, field1=Filters, > field2=Filters, fieldId=-854547461] > at > Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Register(Type > type, Int32 typeId, IBinaryNameMapper converter, IBinaryIdMapper idMapper, > Boolean forceTimestamp) > at > Apache.Ignite.Core.Impl.Binary.Marshaller.GetSerializer(BinaryConfiguration > cfg, BinaryTypeConfiguration typeCfg, Type type, Int32 typeId, > IBinaryNameMapper nameMapper, IBinaryIdMapper idMapper, ILogger log) > at Apache.Ignite.Core.Impl.Binary.Marshaller.AddUserType(Type type, Int32 > typeId, String typeName, Boolean registered, BinaryFullTypeDescriptor desc) > at Apache.Ignite.Core.Impl.Binary.Marshaller.RegisterType(Type type, > BinaryFullTypeDescriptor desc) > at Apache.Ignite.Core.Impl.Binary.Marshaller.GetDescriptor(Type type) > at Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write[T](T obj) > at > Apache.Ignite.Core.Impl.Deployment.PeerLoadingExtensions.WriteWithPeerDeployment(BinaryWriter > writer, Object o) > at > Apache.Ignite.Core.Impl.Binary.BinarySystemTypeSerializer`1.WriteBinary[T1](T1 > obj, BinaryWriter writer) > at Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write[T](T obj) > at > Apache.Ignite.Core.Impl.Binary.BinarySystemTypeSerializer`1.WriteBinary[T1](T1 > obj, BinaryWriter writer) > at Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write[T](T obj) > at Apache.Ignite.Core.Impl.Binary.BinaryWriter.WriteObjectDetached[T](T o) > at Apache.Ignite.Core.Impl.Compute.ComputeImpl.WriteJob(IComputeJob job, > BinaryWriter writer) > at > Apache.Ignite.Core.Impl.Compute.ComputeImpl.<>c__DisplayClass1d`3.<ExecuteClosures0>b__1a(BinaryWriter > writer) > at Apache.Ignite.Core.Impl.PlatformTargetAdapter.WriteToStream(Action`1 > action, IBinaryStream stream, Marshaller marsh) > at Apache.Ignite.Core.Impl.PlatformJniTarget.InStreamOutObject(Int32 type, > Action`1 writeAction) > at > Apache.Ignite.Core.Impl.Compute.ComputeImpl.ExecuteClosures0[TArg,TJobRes,TReduceRes](IComputeTask`3 > task, IComputeJob job, IEnumerable`1 jobs, Int32 opId, Int32 jobsCount, > Action`1 writeAction)<--- > {code} > See user list thread for more details: > http://apache-ignite-users.70518.x6.nabble.com/Binary-type-has-different-fields-error-td21540.html -- This message was sent by Atlassian JIRA (v7.6.3#76005)