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
>>
>>
>>