Requesting mapping from grid failed issue with Ignite 2.9.0 and C# model with ICloneable interface but same was working with Ignite 2.8.1

classic Classic list List threaded Threaded
4 messages Options
Charlin Charlin
Reply | Threaded
Open this post in threaded view
|

Requesting mapping from grid failed issue with Ignite 2.9.0 and C# model with ICloneable interface but same was working with Ignite 2.8.1

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
Ilya Kazakov Ilya Kazakov
Reply | Threaded
Open this post in threaded view
|

Re: Requesting mapping from grid failed issue with Ignite 2.9.0 and C# model with ICloneable interface but same was working with Ignite 2.8.1

Hello, Charlin!


----------------------
Ilya Kazakov

вт, 5 янв. 2021 г. в 14:52, Charlin S <[hidden email]>:
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
ptupitsyn ptupitsyn
Reply | Threaded
Open this post in threaded view
|

Re: Requesting mapping from grid failed issue with Ignite 2.9.0 and C# model with ICloneable interface but same was working with Ignite 2.8.1

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


On Tue, Jan 5, 2021 at 10:28 AM Ilya Kazakov <[hidden email]> wrote:
Hello, Charlin!


----------------------
Ilya Kazakov

вт, 5 янв. 2021 г. в 14:52, Charlin S <[hidden email]>:
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
Charlin Charlin
Reply | Threaded
Open this post in threaded view
|

Re: Requesting mapping from grid failed issue with Ignite 2.9.0 and C# model with ICloneable interface but same was working with Ignite 2.8.1

Hi Pavel,
This has worked for me by adding  [QuerySqlField] for all fields. Thank you much.

Thanks & Regards,
Charlin


On Tue, 5 Jan 2021 at 14:05, Pavel Tupitsyn <[hidden email]> wrote:
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


On Tue, Jan 5, 2021 at 10:28 AM Ilya Kazakov <[hidden email]> wrote:
Hello, Charlin!


----------------------
Ilya Kazakov

вт, 5 янв. 2021 г. в 14:52, Charlin S <[hidden email]>:
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