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 <[email protected]> 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 <[email protected]> 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
>>
>>
>>

Reply via email to