[
https://issues.apache.org/jira/browse/IGNITE-8588?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Pavel Tupitsyn updated IGNITE-8588:
-----------------------------------
Description:
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
was:
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}
See user list thread for more details:
http://apache-ignite-users.70518.x6.nabble.com/Binary-type-has-different-fields-error-td21540.html
> .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: Pavel Tupitsyn
> Priority: Major
> Labels: .NET
>
> 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)