You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@ignite.apache.org by Charlin S <Ch...@hotelhub.com> on 2022/08/24 07:26:00 UTC

distributed-computing error System.Runtime.Serialization.ISerializable

I have a requirement to fetch the data using distributed-computing function
and  error at
var res = CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);

//  InstanceObject singleton object for Ignite

[11:16:34,865][WARNING][main][Marshaller] Type
'System.Collections.Generic.Dictionary`2[System.Int64,Apache.Ignite.Core.Impl.Binary.BinaryFullTypeDescriptor]'
implements 'System.Runtime.Serialization.ISerializable'. It will be written
in Ignite binary format, however, the following limitations apply: DateTime
fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
work in DML.
[11:16:34,889][WARNING][main][Marshaller] Type
'System.Collections.Generic.Dictionary`2[System.String,System.Byte]'
implements 'System.Runtime.Serialization.ISerializable'. It will be written
in Ignite binary format, however, the following limitations apply: DateTime
fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
work in DML.
[11:16:34,895][WARNING][main][Marshaller] Type
'System.Func`2[Apache.Ignite.Core.Impl.Binary.BinaryReader,Apache.Ignite.Core.Impl.Compute.ComputeJobHolder]'
implements 'System.Runtime.Serialization.ISerializable'. It will be written
in Ignite binary format, however, the following limitations apply: DateTime
fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
work in DML.

Kindly help me on this and I have shared the implementation below.

 public class ComputeTestModel : IBinarizable
    {

        [QuerySqlField]
        public string TestField1 { get; set; }
        [QuerySqlField]
        public string TestField2 { get; set; }
        [QuerySqlField]
        public string TestField3 { get; set; }


        public void ReadBinary(IBinaryReader reader){}//not added
implementation here
        public void WriteBinary(IBinaryWriter writer){}//not added
implementation here
    }


class TestModelComputeFunc<T> : IComputeFunc<List<ComputeTestModel>>
    {
        // [InstanceResource] private readonly IIgnite _ignite;
        public ICache<string, T> IgniteCache { get; set; }

        public string _searchCriteria { get; set; }
        public TestModelComputeFunc(ICache<string, T> igniteCache, string
searchCriteria)
        {
            IgniteCache = igniteCache;
            _searchCriteria = searchCriteria;
        }
        public List<ComputeTestModel> Invoke()
        {
            List<ComputeTestModel> objs = new List<ComputeTestModel>();
            string query = "select * from ComputeTestModel where
 TestField1 = ?";
            SqlFieldsQuery fieldsQuery =  new SqlFieldsQuery(query,
_searchCriteria);
            IFieldsQueryCursor queryCursor = IgniteCache.Query(fieldsQuery);
            if (queryCursor != null)
            {
                foreach (var cacheEntry in queryCursor)
                {
                    objs.Add(new ComputeTestModel
                    {
                        TestField1 = cacheEntry[0] as string,
                        TestField2 = cacheEntry[1] as string,
TestField3 = cacheEntry[2] as string

                    });
                }
                return objs;

            }
            return null;
        }
    }
}

public static class CacheUtilsTest
    {
public static List<ComputeTestModel> ComputeTest_OnIgnite(string
searchCriteria)
        {
//CacheInstance.Instance.ComputeTestICache defined in another class public
ICache<string, ComputeTestModel> ComputeTestModelICache { get; set; }

            ComputeTestComputeFunc<ComputeTestModel> calls = new
ComputeTestComputeFunc<ComputeTestModel>(CacheInstance.Instance.ComputeTestICache,
searchCriteria);

            // Execute the collection of calls on the cluster.
            var res =
CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);
 //exception thrown here


/*
//another aproach
ComputeTestComputeFunc<ComputeTestModel> cacheObject = new
ComputeTestComputeFunc<ComputeTestModel>(CacheInstance.Instance.ComputeTestICache,
searchCriteria);
// var calls = CacheInstance.Instance.ComputeTestICache.Select(s =>
cacheObject).ToList();

             // Execute the collection of calls on the cluster.
            var res =
CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);
 //exception thrown here
*/
            return null;
        }

}


class Program
    {

        static void Main(string[] args)
        {
            // Console.WriteLine("Hello World!");
            var saticCache = CacheInstance.Instance.InstanceObject;

            var res = CacheUtilsTest.ComputeTest_OnIgnite("A");
            int ans= res.Count();
            Console.ReadKey();

        }
    }

Regards,
Charlin

Re: distributed-computing error System.Runtime.Serialization.ISerializable

Posted by Pavel Tupitsyn <pt...@apache.org>.
This line is the problem:
public ICache<string, T> IgniteCache { get; set; }

You can't serialize an Ignite cache. Instead, use [InstanceResource] -
uncomment the line you already have, then get the cache by name:

[InstanceResource] private readonly IIgnite _ignite;
public string CacheName { get; set; }

...

var cache = _ignite.GetCache<string, T>(CacheName);
cache.Query(...)

On Wed, Aug 24, 2022 at 1:31 PM Charlin S <Ch...@hotelhub.com> wrote:

> Hi,
> The exception details are as follows.
> System.AggregateException
>   HResult=0x80131500
>   Message=One or more errors occurred. (Serializing delegates is not
> supported on this platform.)
>   Source=System.Private.CoreLib
>   StackTrace:
>    at System.Threading.Tasks.Task`1.GetResultCore(Boolean
> waitCompletionNotification)
>    at System.Threading.Tasks.Task`1.get_Result()
>    at Apache.Ignite.Core.Impl.Common.Future`1.Get()
>    at
> Apache.Ignite.Core.Impl.Compute.Compute.Apply[TArg,TJobRes](IComputeFunc`2
> clo, TArg arg)
>    at ConsoleApp2.CacheUtils.ComputeTest_OnIgnite(String searchCriteria)
> in D:\NGSourceCode\POC\ConsoleApp2\ConsoleApp2\CacheUtils.cs:line 76
>    at ConsoleApp2.Program.Main(String[] args) in
> D:\NGSourceCode\POC\ConsoleApp2\ConsoleApp2\Program.cs:line 19
>
>   This exception was originally thrown at this call stack:
>
> System.MulticastDelegate.GetObjectData(System.Runtime.Serialization.SerializationInfo,
> System.Runtime.Serialization.StreamingContext)
>
> Apache.Ignite.Core.Impl.Binary.SerializableSerializer.WriteBinary<T>(T,
> Apache.Ignite.Core.Impl.Binary.BinaryWriter)
>     Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write<T>(T)
>     Apache.Ignite.Core.Impl.Binary.BinaryWriter.WriteObject<T>(string, T)
>
> Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.WriteBinary<T>(T,
> Apache.Ignite.Core.Impl.Binary.BinaryWriter)
>     Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write<T>(T)
>     Apache.Ignite.Core.Impl.Binary.BinaryWriter.WriteObject<T>(string, T)
>
> Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.WriteBinary<T>(T,
> Apache.Ignite.Core.Impl.Binary.BinaryWriter)
>     Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write<T>(T)
>     Apache.Ignite.Core.Impl.Binary.BinaryWriter.WriteObject<T>(string, T)
>     ...
>     [Call Stack Truncated]
>
> Inner Exception 1:
> SerializationException: Serializing delegates is not supported on this
> platform.
>
> Note: I am having two 2 server nodes and running the POC application on a
> client node.
>
> Regards,
> Charlin
>
>
>
> On Wed, 24 Aug 2022 at 15:02, Pavel Tupitsyn <pt...@apache.org> wrote:
>
>> Please share the exception with full stack trace (you've only shared some
>> warnings, which may or may not be a problem).
>>
>> On Wed, Aug 24, 2022 at 10:26 AM Charlin S <Ch...@hotelhub.com>
>> wrote:
>>
>>>
>>> I have a requirement to fetch the data using distributed-computing
>>> function and  error at
>>> var res =
>>> CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);
>>>
>>> //  InstanceObject singleton object for Ignite
>>>
>>> [11:16:34,865][WARNING][main][Marshaller] Type
>>> 'System.Collections.Generic.Dictionary`2[System.Int64,Apache.Ignite.Core.Impl.Binary.BinaryFullTypeDescriptor]'
>>> implements 'System.Runtime.Serialization.ISerializable'. It will be written
>>> in Ignite binary format, however, the following limitations apply: DateTime
>>> fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
>>> work in DML.
>>> [11:16:34,889][WARNING][main][Marshaller] Type
>>> 'System.Collections.Generic.Dictionary`2[System.String,System.Byte]'
>>> implements 'System.Runtime.Serialization.ISerializable'. It will be written
>>> in Ignite binary format, however, the following limitations apply: DateTime
>>> fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
>>> work in DML.
>>> [11:16:34,895][WARNING][main][Marshaller] Type
>>> 'System.Func`2[Apache.Ignite.Core.Impl.Binary.BinaryReader,Apache.Ignite.Core.Impl.Compute.ComputeJobHolder]'
>>> implements 'System.Runtime.Serialization.ISerializable'. It will be written
>>> in Ignite binary format, however, the following limitations apply: DateTime
>>> fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
>>> work in DML.
>>>
>>> Kindly help me on this and I have shared the implementation below.
>>>
>>>  public class ComputeTestModel : IBinarizable
>>>     {
>>>
>>>         [QuerySqlField]
>>>         public string TestField1 { get; set; }
>>>         [QuerySqlField]
>>>         public string TestField2 { get; set; }
>>>         [QuerySqlField]
>>>         public string TestField3 { get; set; }
>>>
>>>
>>>         public void ReadBinary(IBinaryReader reader){}//not added
>>> implementation here
>>>         public void WriteBinary(IBinaryWriter writer){}//not added
>>> implementation here
>>>     }
>>>
>>>
>>> class TestModelComputeFunc<T> : IComputeFunc<List<ComputeTestModel>>
>>>     {
>>>         // [InstanceResource] private readonly IIgnite _ignite;
>>>         public ICache<string, T> IgniteCache { get; set; }
>>>
>>>         public string _searchCriteria { get; set; }
>>>         public TestModelComputeFunc(ICache<string, T> igniteCache,
>>> string searchCriteria)
>>>         {
>>>             IgniteCache = igniteCache;
>>>             _searchCriteria = searchCriteria;
>>>         }
>>>         public List<ComputeTestModel> Invoke()
>>>         {
>>>             List<ComputeTestModel> objs = new List<ComputeTestModel>();
>>>             string query = "select * from ComputeTestModel where
>>>  TestField1 = ?";
>>>             SqlFieldsQuery fieldsQuery =  new SqlFieldsQuery(query,
>>> _searchCriteria);
>>>             IFieldsQueryCursor queryCursor =
>>> IgniteCache.Query(fieldsQuery);
>>>             if (queryCursor != null)
>>>             {
>>>                 foreach (var cacheEntry in queryCursor)
>>>                 {
>>>                     objs.Add(new ComputeTestModel
>>>                     {
>>>                         TestField1 = cacheEntry[0] as string,
>>>                         TestField2 = cacheEntry[1] as string,
>>> TestField3 = cacheEntry[2] as string
>>>
>>>                     });
>>>                 }
>>>                 return objs;
>>>
>>>             }
>>>             return null;
>>>         }
>>>     }
>>> }
>>>
>>> public static class CacheUtilsTest
>>>     {
>>> public static List<ComputeTestModel> ComputeTest_OnIgnite(string
>>> searchCriteria)
>>>         {
>>> //CacheInstance.Instance.ComputeTestICache defined in another class
>>> public ICache<string, ComputeTestModel> ComputeTestModelICache { get; set; }
>>>
>>>             ComputeTestComputeFunc<ComputeTestModel> calls = new
>>> ComputeTestComputeFunc<ComputeTestModel>(CacheInstance.Instance.ComputeTestICache,
>>> searchCriteria);
>>>
>>>             // Execute the collection of calls on the cluster.
>>>             var res =
>>> CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);
>>>  //exception thrown here
>>>
>>>
>>> /*
>>> //another aproach
>>> ComputeTestComputeFunc<ComputeTestModel> cacheObject = new
>>> ComputeTestComputeFunc<ComputeTestModel>(CacheInstance.Instance.ComputeTestICache,
>>> searchCriteria);
>>> // var calls = CacheInstance.Instance.ComputeTestICache.Select(s =>
>>> cacheObject).ToList();
>>>
>>>              // Execute the collection of calls on the cluster.
>>>             var res =
>>> CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);
>>>  //exception thrown here
>>> */
>>>             return null;
>>>         }
>>>
>>> }
>>>
>>>
>>> class Program
>>>     {
>>>
>>>         static void Main(string[] args)
>>>         {
>>>             // Console.WriteLine("Hello World!");
>>>             var saticCache = CacheInstance.Instance.InstanceObject;
>>>
>>>             var res = CacheUtilsTest.ComputeTest_OnIgnite("A");
>>>             int ans= res.Count();
>>>             Console.ReadKey();
>>>
>>>         }
>>>     }
>>>
>>> Regards,
>>> Charlin
>>>
>>>
>>>

Re: distributed-computing error System.Runtime.Serialization.ISerializable

Posted by Charlin S <Ch...@hotelhub.com>.
Hi,
The exception details are as follows.
System.AggregateException
  HResult=0x80131500
  Message=One or more errors occurred. (Serializing delegates is not
supported on this platform.)
  Source=System.Private.CoreLib
  StackTrace:
   at System.Threading.Tasks.Task`1.GetResultCore(Boolean
waitCompletionNotification)
   at System.Threading.Tasks.Task`1.get_Result()
   at Apache.Ignite.Core.Impl.Common.Future`1.Get()
   at
Apache.Ignite.Core.Impl.Compute.Compute.Apply[TArg,TJobRes](IComputeFunc`2
clo, TArg arg)
   at ConsoleApp2.CacheUtils.ComputeTest_OnIgnite(String searchCriteria) in
D:\NGSourceCode\POC\ConsoleApp2\ConsoleApp2\CacheUtils.cs:line 76
   at ConsoleApp2.Program.Main(String[] args) in
D:\NGSourceCode\POC\ConsoleApp2\ConsoleApp2\Program.cs:line 19

  This exception was originally thrown at this call stack:

System.MulticastDelegate.GetObjectData(System.Runtime.Serialization.SerializationInfo,
System.Runtime.Serialization.StreamingContext)
    Apache.Ignite.Core.Impl.Binary.SerializableSerializer.WriteBinary<T>(T,
Apache.Ignite.Core.Impl.Binary.BinaryWriter)
    Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write<T>(T)
    Apache.Ignite.Core.Impl.Binary.BinaryWriter.WriteObject<T>(string, T)

Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.WriteBinary<T>(T,
Apache.Ignite.Core.Impl.Binary.BinaryWriter)
    Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write<T>(T)
    Apache.Ignite.Core.Impl.Binary.BinaryWriter.WriteObject<T>(string, T)

Apache.Ignite.Core.Impl.Binary.BinaryReflectiveSerializerInternal.Apache.Ignite.Core.Impl.Binary.IBinarySerializerInternal.WriteBinary<T>(T,
Apache.Ignite.Core.Impl.Binary.BinaryWriter)
    Apache.Ignite.Core.Impl.Binary.BinaryWriter.Write<T>(T)
    Apache.Ignite.Core.Impl.Binary.BinaryWriter.WriteObject<T>(string, T)
    ...
    [Call Stack Truncated]

Inner Exception 1:
SerializationException: Serializing delegates is not supported on this
platform.

Note: I am having two 2 server nodes and running the POC application on a
client node.

Regards,
Charlin



On Wed, 24 Aug 2022 at 15:02, Pavel Tupitsyn <pt...@apache.org> wrote:

> Please share the exception with full stack trace (you've only shared some
> warnings, which may or may not be a problem).
>
> On Wed, Aug 24, 2022 at 10:26 AM Charlin S <Ch...@hotelhub.com> wrote:
>
>>
>> I have a requirement to fetch the data using distributed-computing
>> function and  error at
>> var res = CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);
>>
>> //  InstanceObject singleton object for Ignite
>>
>> [11:16:34,865][WARNING][main][Marshaller] Type
>> 'System.Collections.Generic.Dictionary`2[System.Int64,Apache.Ignite.Core.Impl.Binary.BinaryFullTypeDescriptor]'
>> implements 'System.Runtime.Serialization.ISerializable'. It will be written
>> in Ignite binary format, however, the following limitations apply: DateTime
>> fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
>> work in DML.
>> [11:16:34,889][WARNING][main][Marshaller] Type
>> 'System.Collections.Generic.Dictionary`2[System.String,System.Byte]'
>> implements 'System.Runtime.Serialization.ISerializable'. It will be written
>> in Ignite binary format, however, the following limitations apply: DateTime
>> fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
>> work in DML.
>> [11:16:34,895][WARNING][main][Marshaller] Type
>> 'System.Func`2[Apache.Ignite.Core.Impl.Binary.BinaryReader,Apache.Ignite.Core.Impl.Compute.ComputeJobHolder]'
>> implements 'System.Runtime.Serialization.ISerializable'. It will be written
>> in Ignite binary format, however, the following limitations apply: DateTime
>> fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
>> work in DML.
>>
>> Kindly help me on this and I have shared the implementation below.
>>
>>  public class ComputeTestModel : IBinarizable
>>     {
>>
>>         [QuerySqlField]
>>         public string TestField1 { get; set; }
>>         [QuerySqlField]
>>         public string TestField2 { get; set; }
>>         [QuerySqlField]
>>         public string TestField3 { get; set; }
>>
>>
>>         public void ReadBinary(IBinaryReader reader){}//not added
>> implementation here
>>         public void WriteBinary(IBinaryWriter writer){}//not added
>> implementation here
>>     }
>>
>>
>> class TestModelComputeFunc<T> : IComputeFunc<List<ComputeTestModel>>
>>     {
>>         // [InstanceResource] private readonly IIgnite _ignite;
>>         public ICache<string, T> IgniteCache { get; set; }
>>
>>         public string _searchCriteria { get; set; }
>>         public TestModelComputeFunc(ICache<string, T> igniteCache, string
>> searchCriteria)
>>         {
>>             IgniteCache = igniteCache;
>>             _searchCriteria = searchCriteria;
>>         }
>>         public List<ComputeTestModel> Invoke()
>>         {
>>             List<ComputeTestModel> objs = new List<ComputeTestModel>();
>>             string query = "select * from ComputeTestModel where
>>  TestField1 = ?";
>>             SqlFieldsQuery fieldsQuery =  new SqlFieldsQuery(query,
>> _searchCriteria);
>>             IFieldsQueryCursor queryCursor =
>> IgniteCache.Query(fieldsQuery);
>>             if (queryCursor != null)
>>             {
>>                 foreach (var cacheEntry in queryCursor)
>>                 {
>>                     objs.Add(new ComputeTestModel
>>                     {
>>                         TestField1 = cacheEntry[0] as string,
>>                         TestField2 = cacheEntry[1] as string,
>> TestField3 = cacheEntry[2] as string
>>
>>                     });
>>                 }
>>                 return objs;
>>
>>             }
>>             return null;
>>         }
>>     }
>> }
>>
>> public static class CacheUtilsTest
>>     {
>> public static List<ComputeTestModel> ComputeTest_OnIgnite(string
>> searchCriteria)
>>         {
>> //CacheInstance.Instance.ComputeTestICache defined in another class
>> public ICache<string, ComputeTestModel> ComputeTestModelICache { get; set; }
>>
>>             ComputeTestComputeFunc<ComputeTestModel> calls = new
>> ComputeTestComputeFunc<ComputeTestModel>(CacheInstance.Instance.ComputeTestICache,
>> searchCriteria);
>>
>>             // Execute the collection of calls on the cluster.
>>             var res =
>> CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);
>>  //exception thrown here
>>
>>
>> /*
>> //another aproach
>> ComputeTestComputeFunc<ComputeTestModel> cacheObject = new
>> ComputeTestComputeFunc<ComputeTestModel>(CacheInstance.Instance.ComputeTestICache,
>> searchCriteria);
>> // var calls = CacheInstance.Instance.ComputeTestICache.Select(s =>
>> cacheObject).ToList();
>>
>>              // Execute the collection of calls on the cluster.
>>             var res =
>> CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);
>>  //exception thrown here
>> */
>>             return null;
>>         }
>>
>> }
>>
>>
>> class Program
>>     {
>>
>>         static void Main(string[] args)
>>         {
>>             // Console.WriteLine("Hello World!");
>>             var saticCache = CacheInstance.Instance.InstanceObject;
>>
>>             var res = CacheUtilsTest.ComputeTest_OnIgnite("A");
>>             int ans= res.Count();
>>             Console.ReadKey();
>>
>>         }
>>     }
>>
>> Regards,
>> Charlin
>>
>>
>>

Re: distributed-computing error System.Runtime.Serialization.ISerializable

Posted by Pavel Tupitsyn <pt...@apache.org>.
Please share the exception with full stack trace (you've only shared some
warnings, which may or may not be a problem).

On Wed, Aug 24, 2022 at 10:26 AM Charlin S <Ch...@hotelhub.com> wrote:

>
> I have a requirement to fetch the data using distributed-computing
> function and  error at
> var res = CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);
>
> //  InstanceObject singleton object for Ignite
>
> [11:16:34,865][WARNING][main][Marshaller] Type
> 'System.Collections.Generic.Dictionary`2[System.Int64,Apache.Ignite.Core.Impl.Binary.BinaryFullTypeDescriptor]'
> implements 'System.Runtime.Serialization.ISerializable'. It will be written
> in Ignite binary format, however, the following limitations apply: DateTime
> fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
> work in DML.
> [11:16:34,889][WARNING][main][Marshaller] Type
> 'System.Collections.Generic.Dictionary`2[System.String,System.Byte]'
> implements 'System.Runtime.Serialization.ISerializable'. It will be written
> in Ignite binary format, however, the following limitations apply: DateTime
> fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
> work in DML.
> [11:16:34,895][WARNING][main][Marshaller] Type
> 'System.Func`2[Apache.Ignite.Core.Impl.Binary.BinaryReader,Apache.Ignite.Core.Impl.Compute.ComputeJobHolder]'
> implements 'System.Runtime.Serialization.ISerializable'. It will be written
> in Ignite binary format, however, the following limitations apply: DateTime
> fields would not work in SQL; sbyte, ushort, uint, ulong fields would not
> work in DML.
>
> Kindly help me on this and I have shared the implementation below.
>
>  public class ComputeTestModel : IBinarizable
>     {
>
>         [QuerySqlField]
>         public string TestField1 { get; set; }
>         [QuerySqlField]
>         public string TestField2 { get; set; }
>         [QuerySqlField]
>         public string TestField3 { get; set; }
>
>
>         public void ReadBinary(IBinaryReader reader){}//not added
> implementation here
>         public void WriteBinary(IBinaryWriter writer){}//not added
> implementation here
>     }
>
>
> class TestModelComputeFunc<T> : IComputeFunc<List<ComputeTestModel>>
>     {
>         // [InstanceResource] private readonly IIgnite _ignite;
>         public ICache<string, T> IgniteCache { get; set; }
>
>         public string _searchCriteria { get; set; }
>         public TestModelComputeFunc(ICache<string, T> igniteCache, string
> searchCriteria)
>         {
>             IgniteCache = igniteCache;
>             _searchCriteria = searchCriteria;
>         }
>         public List<ComputeTestModel> Invoke()
>         {
>             List<ComputeTestModel> objs = new List<ComputeTestModel>();
>             string query = "select * from ComputeTestModel where
>  TestField1 = ?";
>             SqlFieldsQuery fieldsQuery =  new SqlFieldsQuery(query,
> _searchCriteria);
>             IFieldsQueryCursor queryCursor =
> IgniteCache.Query(fieldsQuery);
>             if (queryCursor != null)
>             {
>                 foreach (var cacheEntry in queryCursor)
>                 {
>                     objs.Add(new ComputeTestModel
>                     {
>                         TestField1 = cacheEntry[0] as string,
>                         TestField2 = cacheEntry[1] as string,
> TestField3 = cacheEntry[2] as string
>
>                     });
>                 }
>                 return objs;
>
>             }
>             return null;
>         }
>     }
> }
>
> public static class CacheUtilsTest
>     {
> public static List<ComputeTestModel> ComputeTest_OnIgnite(string
> searchCriteria)
>         {
> //CacheInstance.Instance.ComputeTestICache defined in another class public
> ICache<string, ComputeTestModel> ComputeTestModelICache { get; set; }
>
>             ComputeTestComputeFunc<ComputeTestModel> calls = new
> ComputeTestComputeFunc<ComputeTestModel>(CacheInstance.Instance.ComputeTestICache,
> searchCriteria);
>
>             // Execute the collection of calls on the cluster.
>             var res =
> CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);
>  //exception thrown here
>
>
> /*
> //another aproach
> ComputeTestComputeFunc<ComputeTestModel> cacheObject = new
> ComputeTestComputeFunc<ComputeTestModel>(CacheInstance.Instance.ComputeTestICache,
> searchCriteria);
> // var calls = CacheInstance.Instance.ComputeTestICache.Select(s =>
> cacheObject).ToList();
>
>              // Execute the collection of calls on the cluster.
>             var res =
> CacheInstance.Instance.InstanceObject.GetCompute().Call(calls);
>  //exception thrown here
> */
>             return null;
>         }
>
> }
>
>
> class Program
>     {
>
>         static void Main(string[] args)
>         {
>             // Console.WriteLine("Hello World!");
>             var saticCache = CacheInstance.Instance.InstanceObject;
>
>             var res = CacheUtilsTest.ComputeTest_OnIgnite("A");
>             int ans= res.Count();
>             Console.ReadKey();
>
>         }
>     }
>
> Regards,
> Charlin
>
>
>