Hi Charlin,
I've filed a bug [1]
However, it looks like [QuerySqlField] attributes are missing on
TestModel29WithICloneable properties.
To make your model queryable with SQL/LINQ, make sure to mark some or all
properties like this:
public class TestModel29WithICloneable : ICloneable, IBinarizable
{
[QuerySqlField]
public string TestField1 { get; set; }
[QuerySqlField]
public string TestField2 { get; set; }
[QuerySqlField]
public string TestField3 { get; set; }
...
}
This will get rid of the exception (which is still a bug, but for a weird
use case when no SQL fields are defined).
Thanks,
Pavel
[1] https://issues.apache.org/jira/browse/IGNITE-13957
On Tue, Jan 5, 2021 at 10:28 AM Ilya Kazakov <[email protected]> wrote:
> Hello, Charlin!
>
> Try to enable peer class loading:
> https://ignite.apache.org/docs/latest/code-deployment/peer-class-loading
>
> ----------------------
> Ilya Kazakov
>
> вт, 5 янв. 2021 г. в 14:52, Charlin S <[email protected]>:
>
>> Hi,
>>
>> i'm getting exception on when a new record is added, which was working
>> till ignite 2.8.1
>> This issue seems to be with Ignite 2.9.0 and Ignite 2.9.1
>> The c# code is below:
>> void Main()
>> {
>> A a = new A();
>> }
>>
>> public class A
>> {
>> public A()
>> {
>>
>> IgniteConfiguration igniteGridIg = new IgniteConfiguration();
>> igniteGridIg.AutoGenerateIgniteInstanceName = true;
>> igniteGridIg.IgniteHome =
>> @"D:\Software\apache-ignite-2.9.1-bin";
>> igniteGridIg.SpringConfigUrl =
>> Path.Combine(@"D:\IgniteConfig\",
>> "common_dynamiccache_client_config_2.9.1.xml");
>> igniteGridIg.ConsistentId =
>> Guid.NewGuid().ToString().ToUpper();
>>
>> IIgnite StaticGrid_Dev = Ignition.Start(igniteGridIg);
>> TestModel29WithICloneable model = new TestModel29WithICloneable();
>>
>> model.TestField1 = "11";
>> model.TestField2 = "22";
>>
>> ICache<string, TestModel29WithICloneable>
>> TestModel29WithICloneableICache=null;
>> CacheConfiguration cgTest = new
>> CacheConfiguration("TestModel29WithICloneable", new
>> QueryEntity(typeof(string), typeof(TestModel29WithICloneable)));
>> cgTest.CopyOnRead = false;
>> cgTest.EagerTtl = true;
>> cgTest.Backups = 1;
>>
>> var cacheName = StaticGrid_Dev.GetOrCreateCache<string,
>> object>(cgTest).WithExpiryPolicy(new ExpiryPolicy(
>> TimeSpan.FromSeconds(3600),
>> TimeSpan.FromSeconds(3600),
>> TimeSpan.FromSeconds(3600)
>> ));
>>
>> cacheName.Put("TestModel29WithICloneable:Test|0100010test2", model);
>>
>> //Console.Write(cacheName);
>> Ignition.StopAll(true);
>> }
>> }
>>
>>
>> Model class:
>> public class TestModel29WithICloneable : ICloneable, IBinarizable
>> {
>> public TestModel29WithICloneable Copy()
>> {
>> return (TestModel29WithICloneable)this.MemberwiseClone();
>> }
>>
>> public object Clone()
>> {
>> var clone = this.MemberwiseClone();
>> return clone;
>> }
>> public string TestField1 { get; set; }
>> public string TestField2 { get; set; }
>> public string TestField3 { get; set; }
>>
>> public void ReadBinary(IBinaryReader reader)
>> {
>> if (reader != null)
>> {
>> TestField1 = reader.ReadString("testfield1");
>> TestField2 = reader.ReadString("testfield2");
>> TestField3 = reader.ReadString("testfield3");
>> }
>> }
>>
>> public void WriteBinary(IBinaryWriter writer)
>> {
>> if (writer != null)
>> {
>> writer.WriteString("testfield1", TestField1);
>> writer.WriteString("testfield2", TestField2);
>> writer.WriteString("testfield3", TestField3);
>> }
>> }
>> }
>>
>> Result :
>> javax.cache.CacheException: class
>> org.apache.ignite.IgniteCheckedException: Requesting mapping from grid
>> failed for [platformId=0, typeId=1876507903]
>> at
>> org.apache.ignite.internal.processors.cache.GridCacheUtils.convertToCacheException(GridCacheUtils.java:1270)
>> at
>> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.cacheException(IgniteCacheProxyImpl.java:2083)
>> at
>> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1319)
>> at
>> org.apache.ignite.internal.processors.cache.GatewayProtectedCacheProxy.put(GatewayProtectedCacheProxy.java:856)
>> at
>> org.apache.ignite.internal.processors.platform.cache.PlatformCache.processInStreamOutLong(PlatformCache.java:839)
>> at
>> org.apache.ignite.internal.processors.platform.PlatformTargetProxyImpl.inStreamOutLong(PlatformTargetProxyImpl.java:67)
>> Caused by: class org.apache.ignite.IgniteCheckedException: Requesting
>> mapping from grid failed for [platformId=0, typeId=1876507903]
>> at
>> org.apache.ignite.internal.util.IgniteUtils.cast(IgniteUtils.java:7563)
>> at
>> org.apache.ignite.internal.processors.cache.GridCacheContext.validateKeyAndValue(GridCacheContext.java:1910)
>> at
>> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.mapSingleUpdate(GridNearAtomicSingleUpdateFuture.java:555)
>> at
>> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.map(GridNearAtomicSingleUpdateFuture.java:457)
>> at
>> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicSingleUpdateFuture.mapOnTopology(GridNearAtomicSingleUpdateFuture.java:446)
>> at
>> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridNearAtomicAbstractUpdateFuture.map(GridNearAtomicAbstractUpdateFuture.java:249)
>> at
>> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.update0(GridDhtAtomicCache.java:1178)
>> at
>> org.apache.ignite.internal.processors.cache.distributed.dht.atomic.GridDhtAtomicCache.put0(GridDhtAtomicCache.java:626)
>> at
>> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2567)
>> at
>> org.apache.ignite.internal.processors.cache.GridCacheAdapter.put(GridCacheAdapter.java:2544)
>> at
>> org.apache.ignite.internal.processors.cache.IgniteCacheProxyImpl.put(IgniteCacheProxyImpl.java:1316)
>> ... 3 more
>> Caused by: class org.apache.ignite.binary.BinaryInvalidTypeException:
>> Requesting mapping from grid failed for [platformId=0, typeId=1876507903]
>> at
>> org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:689)
>> at
>> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize0(BinaryReaderExImpl.java:1757)
>> at
>> org.apache.ignite.internal.binary.BinaryReaderExImpl.deserialize(BinaryReaderExImpl.java:1716)
>> at
>> org.apache.ignite.internal.binary.BinaryObjectImpl.deserializeValue(BinaryObjectImpl.java:796)
>> at
>> org.apache.ignite.internal.binary.BinaryObjectImpl.value(BinaryObjectImpl.java:142)
>> at
>> org.apache.ignite.internal.processors.query.QueryTypeDescriptorImpl.validateProps(QueryTypeDescriptorImpl.java:613)
>> at
>> org.apache.ignite.internal.processors.query.QueryTypeDescriptorImpl.validateKeyAndValue(QueryTypeDescriptorImpl.java:587)
>> at
>> org.apache.ignite.internal.processors.query.GridQueryProcessor.validateKeyAndValue(GridQueryProcessor.java:3552)
>> at
>> org.apache.ignite.internal.processors.cache.GridCacheContext.validateKeyAndValue(GridCacheContext.java:1907)
>> ... 12 more
>> Caused by: java.lang.ClassNotFoundException: Requesting mapping from grid
>> failed for [platformId=0, typeId=1876507903]
>> at
>> org.apache.ignite.internal.MarshallerContextImpl.getClassName(MarshallerContextImpl.java:429)
>> at
>> org.apache.ignite.internal.MarshallerContextImpl.getClassName(MarshallerContextImpl.java:384)
>> at
>> org.apache.ignite.internal.MarshallerContextImpl.getClass(MarshallerContextImpl.java:371)
>> at
>> org.apache.ignite.internal.binary.BinaryContext.descriptorForTypeId(BinaryContext.java:680)
>>
>>
>> Regards
>> Charlin
>>
>