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