[ 
https://issues.apache.org/jira/browse/IGNITE-17299?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Vadim Alekseev updated IGNITE-17299:
------------------------------------
    Description: 
У нас есть модель, созданная с помощью Nswag. Модель имеет дополнительные 
свойства, по которым разбираются все неизвестные поля.

Реализация:
{code:java}
private  System
{code}
 .Collections.Generic.IDictionary<строка, объект> _additionalProperties = 
{code:java}
new  System
{code}
 .Collections.Generic.Dictionary<строка, объект>();
{code:java}

{code}
[Ньютонсофт.Json.JsonExtensionData]
{code:java}
public  System
{code}
 .Collections.Generic.IDictionary<string, object> AdditionalProperties
{code:java}

{code}
{
{code:java}

{code}
    получить { 
{code:java}
вернуть
{code}
 _additionalProperties; }
{code:java}

{code}
    установить { _additionalProperties = значение; }
{code:java}

{code}
}

Если вложенная модель сохраняется в дополнительных свойствах, она сохраняется 
как KeyValuePair<string, object>. Объект представляет собой JArray, содержащий 
JObject.

При записи данных в кеш все нормально. Но при извлечении данных из кеша 
возникает ошибка: 

 
  *Конструктор для десериализации объекта типа 
System.OrdinalCaseSensitiveComparer не найден.* 
Трассировки стека:
{code:java}

{code}
   в 
Apache.Ignite.Core.Impl.Common.SerializableTypeDescriptor.get_SerializationCtorUninitialized()
 в 
Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadBinary[T](считыватель 
BinaryReader, описание IBinaryTypeDescriptor, Int32 pos, TypeOverride) в 
Apache.Ignite .Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride) в Apache.Ignite.Core .Impl.Binary.BinaryReader.Deserialize[T](тип 
typeOverride) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
{code:java}
строка
{code}
fieldName) в 
Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadSerializationInfo(BinaryReader
 reader, IEnumerable`1 fieldNames, Type type, ICollection`1 dotNetFields) в 
Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadBinary[T] 
(считыватель BinaryReader, описание IBinaryTypeDescriptor, позиция Int32, тип 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, тип 
typeOverride) в Apache.Ignite.Core.Impl.Binary.BinaryReader. 
TryDeserialize[T](T& res, TypeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](TypeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
{code:java}
Строка
{code}
 fieldName) в lambda_method1688(Closure, 
{code:java}
Object
{code}
, IBinaryReader ) в 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride) в Apache.Ignite.Core. Impl.Binary.BinaryReader.Deserialize[T](тип 
typeOverride) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
{code:java}
String
{code}
 fieldName) в lambda_method1682(Closure, 
{code:java}
Object
{code}
, IBinaryReader ) в 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride) в Apache.Ignite.Core. Impl.Binary.BinaryReader.Deserialize[T](тип 
typeOverride) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
{code:java}
String
{code}
 fieldName) в lambda_method1293(Closure, 
{code:java}
Object
{code}
, IBinaryReader ) в 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride) в Apache.Ignite.Core. 
Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryUtils.ReadArray[T](BinaryReader ctx, 
{code:java}
Boolean
{code}
 typed) в lambda_method1294(Closure, BinaryReader, 
{code:java}
Boolean
{code}
 ) в Apache. Ignite.Core.Impl.Binary.BinaryUtils.ReadTypedArray(BinaryReader 
ctx, 
{code:java}
Boolean
{code}
typeed, Type elementType) в 
Apache.Ignite.Core.Impl.Binary.BinarySystemHandlers.ReadArray(BinaryReader ctx, 
Type type) в 
Apache.Ignite.Core.Impl.Binary.BinarySystemHandlers.TryReadSystemType[T]( 
{code:java}
Byte
{code}
 typeId, BinaryReader ctx, T& res) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride) в Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type 
typeOverride) в Apache .Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
{code:java}
строка
{code}
fieldName) в 
Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadSerializationInfo(BinaryReader
 reader, IEnumerable`1 fieldNames, Type type, ICollection`1 dotNetFields) в 
Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadBinary[T] 
(считыватель BinaryReader, описание IBinaryTypeDescriptor, позиция Int32, тип 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, тип 
typeOverride) в Apache.Ignite.Core.Impl.Binary.BinaryReader. 
TryDeserialize[T](T& res, TypeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](TypeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
{code:java}
Строка
{code}
 fieldName) в lambda_method1660(Closure, 
{code:java}
Object
{code}
, IBinaryReader ) в 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride) в Apache.Ignite.Core. Impl.Binary.BinaryReader.Deserialize[T](тип 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryUtils.ReadArray[T](BinaryReader ctx, 
{code:java}
Boolean
{code}
typed) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__66`1.<ReadArray>b__66_0(BinaryReader
 r) в Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__DisplayClass99_0`1.<Read 
>b__0() в Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func`1 readFunc, 
{code:java}
Byte
{code}
 expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func` 2 
readFunc, 
{code:java}
Byte
{code}
 expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadField[T]( 
{code:java}
String
{code}
 fieldName, Func`2 readFunc, 
{code:java}
Byte
{code}
 expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadArray[ T]( 
{code:java}
String
{code}
 fieldName) at lambda_method1244(Closure, 
{code:java}
Object
{code}
, IBinaryReader ) в 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride) в Apache.Ignite.Core. Impl.Binary.BinaryReader.Deserialize[T](тип 
typeOverride) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
{code:java}
String
{code}
 fieldName) в lambda_method1178(Closure, 
{code:java}
Object
{code}
, IBinaryReader ) в 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride) в Apache.Ignite.Core. Impl.Binary.BinaryReader.Deserialize[T](тип 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryUtils.ReadArray[T](BinaryReader ctx, 
{code:java}
Boolean
{code}
typed) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__66`1.<ReadArray>b__66_0(BinaryReader
 r) в Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__DisplayClass99_0`1.<Read 
>b__0() в Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func`1 readFunc, 
{code:java}
Byte
{code}
 expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func` 2 
readFunc, 
{code:java}
Byte
{code}
 expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadField[T]( 
{code:java}
String
{code}
 fieldName, Func`2 readFunc, 
{code:java}
Byte
{code}
 expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadArray[ T]( 
{code:java}
String
{code}
 fieldName) at lambda_method1170(Closure, 
{code:java}
Object
{code}
, IBinaryReader ) в 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride) в Apache.Ignite.Core. Impl.Binary.BinaryReader.Deserialize[T](тип 
typeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadBinaryObject[T]( 
{code:java}
Boolean
{code}
doDetach) в Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& 
res, Type TypeOverride) в 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride) в 
Apache. Ignite.Core.Impl.Binary.Marshaller.Unmarshal[T](поток IBinaryStream, 
режим BinaryMode, построитель BinaryObjectBuilder) в 
Apache.Ignite.Core.Impl.Binary.Marshaller.Unmarshal[T](поток IBinaryStream, 
{code:java}
логический
{code}
keepBinary) в 
Apache.Ignite.Core.Impl.Client.Cache.CacheClient`2.UnmarshalNotNull[T](ClientResponseContext
 ctx) в 
Apache.Ignite.Core.Impl.Client.Cache.CacheClient`2.<Get>b__14_0(ClientResponseContext
 ctx) в Apache.Ignite.Core.Impl.Client.ClientSocket.DecodeResponse[T](поток 
BinaryHeapStream, Func`2 readFunc, Func`3 errorFunc) в 
Apache.Ignite.Core.Impl.Client.ClientSocket.DoOutInOp[T] (ClientOp opId, 
Action`1 writeAction, Func`2 readFunc, Func`3 errorFunc) в 
Apache.Ignite.Core.Impl.Client.ClientFailoverSocket.DoOutInOpAffinity[T,TKey](ClientOp
 opId, Action`1 writeAction, Func`2 readFunc, Int32 cacheId, TKey key, Func`3 
errorFunc) в 
Apache.Ignite.Core.Impl.Client.Cache.CacheClient`2.DoOutInOpAffinity[T](ClientOp
 opId, TK key, Func`2 readFunc) в Apache.Ignite 
.Core.Impl.Client.Cache.CacheClient`2.Получить (ключ TK) в 
ApacheIgniteTestConsoleApp.IgniteCacheProvider.GetCachedOrLoad[T](
{code:java}
Строковый
{code}
 тег, 
{code:java}
Object
{code}
 cacheKey, Func`1 cacheMissFunc, TimeSpan expireTime, Int64 cacheSize) в 
cache.Get(cacheKey);

Есть ли решение этой проблемы?
 
 

  was:
We have a model generated with Nswag. The model has additional properties to 
which all unknown fields are parsed.

Realization:
{code:java}
private System.Collections.Generic.IDictionary<string, object> 
_additionalProperties = new System.Collections.Generic.Dictionary<string, 
object>();

[Newtonsoft.Json.JsonExtensionData]
public System.Collections.Generic.IDictionary<string, object> 
AdditionalProperties
{
    get { return _additionalProperties; }
    set { _additionalProperties = value; }
} {code}
If nested model is saved in additional properties, it is saved as 
KeyValuePair<string, object>. The object is a JArray that contains a JObject.

When writing data to the cache, everything is fine. But when retrieving data 
from the cache an error occurs: 

 
  *The constructor to deserialize an object of type 
'System.OrdinalCaseSensitiveComparer' was not found.*
StackTrace:
{code:java}
   at 
Apache.Ignite.Core.Impl.Common.SerializableTypeDescriptor.get_SerializationCtorUninitialized()
   at 
Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T](String fieldName)  
 at 
Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadSerializationInfo(BinaryReader
 reader, IEnumerable`1 fieldNames, Type type, ICollection`1 dotNetFields)   at 
Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T](String fieldName)  
 at lambda_method1688(Closure , Object , IBinaryReader )   at 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T](String fieldName)  
 at lambda_method1682(Closure , Object , IBinaryReader )   at 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T](String fieldName)  
 at lambda_method1293(Closure , Object , IBinaryReader )   at 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.BinaryUtils.ReadArray[T](BinaryReader ctx, 
Boolean typed)   at lambda_method1294(Closure , BinaryReader , Boolean )   at 
Apache.Ignite.Core.Impl.Binary.BinaryUtils.ReadTypedArray(BinaryReader ctx, 
Boolean typed, Type elementType)   at 
Apache.Ignite.Core.Impl.Binary.BinarySystemHandlers.ReadArray(BinaryReader ctx, 
Type type)   at 
Apache.Ignite.Core.Impl.Binary.BinarySystemHandlers.TryReadSystemType[T](Byte 
typeId, BinaryReader ctx, T& res)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T](String fieldName)  
 at 
Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadSerializationInfo(BinaryReader
 reader, IEnumerable`1 fieldNames, Type type, ICollection`1 dotNetFields)   at 
Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T](String fieldName)  
 at lambda_method1660(Closure , Object , IBinaryReader )   at 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.BinaryUtils.ReadArray[T](BinaryReader ctx, 
Boolean typed)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__66`1.<ReadArray>b__66_0(BinaryReader
 r)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__DisplayClass99_0`1.<Read>b__0()
   at Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func`1 readFunc, Byte 
expHdr)   at Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func`2 
readFunc, Byte expHdr)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadField[T](String fieldName, 
Func`2 readFunc, Byte expHdr)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadArray[T](String fieldName)   at 
lambda_method1244(Closure , Object , IBinaryReader )   at 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T](String fieldName)  
 at lambda_method1178(Closure , Object , IBinaryReader )   at 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.BinaryUtils.ReadArray[T](BinaryReader ctx, 
Boolean typed)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__66`1.<ReadArray>b__66_0(BinaryReader
 r)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__DisplayClass99_0`1.<Read>b__0()
   at Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func`1 readFunc, Byte 
expHdr)   at Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func`2 
readFunc, Byte expHdr)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadField[T](String fieldName, 
Func`2 readFunc, Byte expHdr)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadArray[T](String fieldName)   at 
lambda_method1170(Closure , Object , IBinaryReader )   at 
Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
 reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadBinaryObject[T](Boolean 
doDetach)   at Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& 
res, Type typeOverride)   at 
Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride)   
at Apache.Ignite.Core.Impl.Binary.Marshaller.Unmarshal[T](IBinaryStream stream, 
BinaryMode mode, BinaryObjectBuilder builder)   at 
Apache.Ignite.Core.Impl.Binary.Marshaller.Unmarshal[T](IBinaryStream stream, 
Boolean keepBinary)   at 
Apache.Ignite.Core.Impl.Client.Cache.CacheClient`2.UnmarshalNotNull[T](ClientResponseContext
 ctx)   at 
Apache.Ignite.Core.Impl.Client.Cache.CacheClient`2.<Get>b__14_0(ClientResponseContext
 ctx)   at 
Apache.Ignite.Core.Impl.Client.ClientSocket.DecodeResponse[T](BinaryHeapStream 
stream, Func`2 readFunc, Func`3 errorFunc)   at 
Apache.Ignite.Core.Impl.Client.ClientSocket.DoOutInOp[T](ClientOp opId, 
Action`1 writeAction, Func`2 readFunc, Func`3 errorFunc)   at 
Apache.Ignite.Core.Impl.Client.ClientFailoverSocket.DoOutInOpAffinity[T,TKey](ClientOp
 opId, Action`1 writeAction, Func`2 readFunc, Int32 cacheId, TKey key, Func`3 
errorFunc)   at 
Apache.Ignite.Core.Impl.Client.Cache.CacheClient`2.DoOutInOpAffinity[T](ClientOp
 opId, TK key, Func`2 readFunc)   at 
Apache.Ignite.Core.Impl.Client.Cache.CacheClient`2.Get(TK key)   at 
ApacheIgniteTestConsoleApp.IgniteCacheProvider.GetCachedOrLoad[T](String tag, 
Object cacheKey, Func`1 cacheMissFunc, TimeSpan expirationTime, Int64 
cacheSize) in    cache.Get(cacheKey); {code}
Is there a solution to this problem?
 
 


> Error deserialization cache object 
> -----------------------------------
>
>                 Key: IGNITE-17299
>                 URL: https://issues.apache.org/jira/browse/IGNITE-17299
>             Project: Ignite
>          Issue Type: Bug
>          Components: binary, cache
>    Affects Versions: 2.13
>         Environment: NET 5.0, Apache Ignite 2.13, Newtonsoft.Json 13.0.1
>            Reporter: Vadim Alekseev
>            Priority: Minor
>
> У нас есть модель, созданная с помощью Nswag. Модель имеет дополнительные 
> свойства, по которым разбираются все неизвестные поля.
> Реализация:
> {code:java}
> private  System
> {code}
>  .Collections.Generic.IDictionary<строка, объект> _additionalProperties = 
> {code:java}
> new  System
> {code}
>  .Collections.Generic.Dictionary<строка, объект>();
> {code:java}
> {code}
> [Ньютонсофт.Json.JsonExtensionData]
> {code:java}
> public  System
> {code}
>  .Collections.Generic.IDictionary<string, object> AdditionalProperties
> {code:java}
> {code}
> {
> {code:java}
> {code}
>     получить { 
> {code:java}
> вернуть
> {code}
>  _additionalProperties; }
> {code:java}
> {code}
>     установить { _additionalProperties = значение; }
> {code:java}
> {code}
> }
> Если вложенная модель сохраняется в дополнительных свойствах, она сохраняется 
> как KeyValuePair<string, object>. Объект представляет собой JArray, 
> содержащий JObject.
> При записи данных в кеш все нормально. Но при извлечении данных из кеша 
> возникает ошибка: 
>  
>   *Конструктор для десериализации объекта типа 
> System.OrdinalCaseSensitiveComparer не найден.* 
> Трассировки стека:
> {code:java}
> {code}
>    в 
> Apache.Ignite.Core.Impl.Common.SerializableTypeDescriptor.get_SerializationCtorUninitialized()
>  в 
> Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadBinary[T](считыватель
>  BinaryReader, описание IBinaryTypeDescriptor, Int32 pos, TypeOverride) в 
> Apache.Ignite .Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, 
> Type typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
> typeOverride) в Apache.Ignite.Core 
> .Impl.Binary.BinaryReader.Deserialize[T](тип typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
> {code:java}
> строка
> {code}
> fieldName) в 
> Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadSerializationInfo(BinaryReader
>  reader, IEnumerable`1 fieldNames, Type type, ICollection`1 dotNetFields) в 
> Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadBinary[T] 
> (считыватель BinaryReader, описание IBinaryTypeDescriptor, позиция Int32, тип 
> typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, тип 
> typeOverride) в Apache.Ignite.Core.Impl.Binary.BinaryReader. 
> TryDeserialize[T](T& res, TypeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](TypeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
> {code:java}
> Строка
> {code}
>  fieldName) в lambda_method1688(Closure, 
> {code:java}
> Object
> {code}
> , IBinaryReader ) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
>  reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
> Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, 
> Type typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
> typeOverride) в Apache.Ignite.Core. 
> Impl.Binary.BinaryReader.Deserialize[T](тип typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
> {code:java}
> String
> {code}
>  fieldName) в lambda_method1682(Closure, 
> {code:java}
> Object
> {code}
> , IBinaryReader ) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
>  reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
> Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, 
> Type typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
> typeOverride) в Apache.Ignite.Core. 
> Impl.Binary.BinaryReader.Deserialize[T](тип typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
> {code:java}
> String
> {code}
>  fieldName) в lambda_method1293(Closure, 
> {code:java}
> Object
> {code}
> , IBinaryReader ) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
>  reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
> Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, 
> Type typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
> typeOverride) в Apache.Ignite.Core. 
> Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryUtils.ReadArray[T](BinaryReader ctx, 
> {code:java}
> Boolean
> {code}
>  typed) в lambda_method1294(Closure, BinaryReader, 
> {code:java}
> Boolean
> {code}
>  ) в Apache. Ignite.Core.Impl.Binary.BinaryUtils.ReadTypedArray(BinaryReader 
> ctx, 
> {code:java}
> Boolean
> {code}
> typeed, Type elementType) в 
> Apache.Ignite.Core.Impl.Binary.BinarySystemHandlers.ReadArray(BinaryReader 
> ctx, Type type) в 
> Apache.Ignite.Core.Impl.Binary.BinarySystemHandlers.TryReadSystemType[T]( 
> {code:java}
> Byte
> {code}
>  typeId, BinaryReader ctx, T& res) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
> typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride) 
> в Apache .Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
> {code:java}
> строка
> {code}
> fieldName) в 
> Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadSerializationInfo(BinaryReader
>  reader, IEnumerable`1 fieldNames, Type type, ICollection`1 dotNetFields) в 
> Apache.Ignite.Core.Impl.Binary.SerializableSerializer.ReadBinary[T] 
> (считыватель BinaryReader, описание IBinaryTypeDescriptor, позиция Int32, тип 
> typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, тип 
> typeOverride) в Apache.Ignite.Core.Impl.Binary.BinaryReader. 
> TryDeserialize[T](T& res, TypeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](TypeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
> {code:java}
> Строка
> {code}
>  fieldName) в lambda_method1660(Closure, 
> {code:java}
> Object
> {code}
> , IBinaryReader ) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
>  reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
> Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, 
> Type typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
> typeOverride) в Apache.Ignite.Core. 
> Impl.Binary.BinaryReader.Deserialize[T](тип typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryUtils.ReadArray[T](BinaryReader ctx, 
> {code:java}
> Boolean
> {code}
> typed) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__66`1.<ReadArray>b__66_0(BinaryReader
>  r) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__DisplayClass99_0`1.<Read 
> >b__0() в Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func`1 
> readFunc, 
> {code:java}
> Byte
> {code}
>  expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func` 2 
> readFunc, 
> {code:java}
> Byte
> {code}
>  expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadField[T]( 
> {code:java}
> String
> {code}
>  fieldName, Func`2 readFunc, 
> {code:java}
> Byte
> {code}
>  expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadArray[ T]( 
> {code:java}
> String
> {code}
>  fieldName) at lambda_method1244(Closure, 
> {code:java}
> Object
> {code}
> , IBinaryReader ) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
>  reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
> Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, 
> Type typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
> typeOverride) в Apache.Ignite.Core. 
> Impl.Binary.BinaryReader.Deserialize[T](тип typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadObject[T]( 
> {code:java}
> String
> {code}
>  fieldName) в lambda_method1178(Closure, 
> {code:java}
> Object
> {code}
> , IBinaryReader ) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
>  reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
> Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, 
> Type typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
> typeOverride) в Apache.Ignite.Core. 
> Impl.Binary.BinaryReader.Deserialize[T](тип typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryUtils.ReadArray[T](BinaryReader ctx, 
> {code:java}
> Boolean
> {code}
> typed) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__66`1.<ReadArray>b__66_0(BinaryReader
>  r) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.<>c__DisplayClass99_0`1.<Read 
> >b__0() в Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func`1 
> readFunc, 
> {code:java}
> Byte
> {code}
>  expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.Read[T](Func` 2 
> readFunc, 
> {code:java}
> Byte
> {code}
>  expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadField[T]( 
> {code:java}
> String
> {code}
>  fieldName, Func`2 readFunc, 
> {code:java}
> Byte
> {code}
>  expHdr) в Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadArray[ T]( 
> {code:java}
> String
> {code}
>  fieldName) at lambda_method1170(Closure, 
> {code:java}
> Object
> {code}
> , IBinaryReader ) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.ReadBinary[T](BinaryReader
>  reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) в 
> Apache.Ignite. Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 pos, 
> Type typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& res, Type 
> typeOverride) в Apache.Ignite.Core. 
> Impl.Binary.BinaryReader.Deserialize[T](тип typeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadBinaryObject[T]( 
> {code:java}
> Boolean
> {code}
> doDetach) в Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& 
> res, Type TypeOverride) в 
> Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type typeOverride) 
> в Apache. Ignite.Core.Impl.Binary.Marshaller.Unmarshal[T](поток 
> IBinaryStream, режим BinaryMode, построитель BinaryObjectBuilder) в 
> Apache.Ignite.Core.Impl.Binary.Marshaller.Unmarshal[T](поток IBinaryStream, 
> {code:java}
> логический
> {code}
> keepBinary) в 
> Apache.Ignite.Core.Impl.Client.Cache.CacheClient`2.UnmarshalNotNull[T](ClientResponseContext
>  ctx) в 
> Apache.Ignite.Core.Impl.Client.Cache.CacheClient`2.<Get>b__14_0(ClientResponseContext
>  ctx) в Apache.Ignite.Core.Impl.Client.ClientSocket.DecodeResponse[T](поток 
> BinaryHeapStream, Func`2 readFunc, Func`3 errorFunc) в 
> Apache.Ignite.Core.Impl.Client.ClientSocket.DoOutInOp[T] (ClientOp opId, 
> Action`1 writeAction, Func`2 readFunc, Func`3 errorFunc) в 
> Apache.Ignite.Core.Impl.Client.ClientFailoverSocket.DoOutInOpAffinity[T,TKey](ClientOp
>  opId, Action`1 writeAction, Func`2 readFunc, Int32 cacheId, TKey key, Func`3 
> errorFunc) в 
> Apache.Ignite.Core.Impl.Client.Cache.CacheClient`2.DoOutInOpAffinity[T](ClientOp
>  opId, TK key, Func`2 readFunc) в Apache.Ignite 
> .Core.Impl.Client.Cache.CacheClient`2.Получить (ключ TK) в 
> ApacheIgniteTestConsoleApp.IgniteCacheProvider.GetCachedOrLoad[T](
> {code:java}
> Строковый
> {code}
>  тег, 
> {code:java}
> Object
> {code}
>  cacheKey, Func`1 cacheMissFunc, TimeSpan expireTime, Int64 cacheSize) в 
> cache.Get(cacheKey);
> Есть ли решение этой проблемы?
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to