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