Hi, New error with new changes System.AggregateException HResult=0x80131500 Message=One or more errors occurred. (Topology projection is empty.) 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.Call[TJobRes](IComputeFunc`1 clo) at ConsoleApp2.CacheUtils.ComputeTest_OnIgnite_OnIgnite(String searchCriteria) in D:\NGSourceCode\POC\ConsoleApp2\ConsoleApp2\CacheUtils.cs:line 75 at ConsoleApp2.Program.Main(String[] args) in D:\NGSourceCode\POC\ConsoleApp2\ConsoleApp2\Program.cs:line 19
Inner Exception 1: ClusterGroupEmptyException: Topology projection is empty. Inner Exception 2: JavaException: class org.apache.ignite.internal.cluster.ClusterGroupEmptyCheckedException: Topology projection is empty. at org.apache.ignite.internal.processors.task.GridTaskWorker.getTaskTopology(GridTaskWorker.java:689) at org.apache.ignite.internal.processors.task.GridTaskWorker.body(GridTaskWorker.java:502) at org.apache.ignite.internal.util.worker.GridWorker.run(GridWorker.java:120) at org.apache.ignite.internal.processors.task.GridTaskProcessor.startTask(GridTaskProcessor.java:843) at org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:508) at org.apache.ignite.internal.processors.task.GridTaskProcessor.execute(GridTaskProcessor.java:476) at org.apache.ignite.internal.IgniteComputeImpl.executeAsync0(IgniteComputeImpl.java:564) at org.apache.ignite.internal.processors.platform.compute.PlatformCompute.executeNative0(PlatformCompute.java:329) at org.apache.ignite.internal.processors.platform.compute.PlatformCompute.processClosures(PlatformCompute.java:294) at org.apache.ignite.internal.processors.platform.compute.PlatformCompute.processInStreamOutObject(PlatformCompute.java:137) at org.apache.ignite.internal.processors.platform.PlatformTargetProxyImpl.inStreamOutObject(PlatformTargetProxyImpl.java:79) Regards, Charlin On Wed, 24 Aug 2022 at 17:16, Pavel Tupitsyn <ptupit...@apache.org> wrote: > > Sorry to bother you,does scan in distribute compute faster than use a > scan in client? > > Depends on the use case. Always measure your own scenario. > > On Wed, Aug 24, 2022 at 2:34 PM wkhapy...@gmail.com <wkhapy...@gmail.com> > wrote: > >> Sorry to bother you,does scan in distribute compute faster than use a >> scan in client? >> >> ---Original--- >> *From:* "Pavel Tupitsyn"<ptupit...@apache.org> >> *Date:* Wed, Aug 24, 2022 19:14 PM >> *To:* "user"<user@ignite.apache.org>; >> *Subject:* Re: distributed-computing error >> System.Runtime.Serialization.ISerializable >> >> 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 <charli...@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 <ptupit...@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 <charli...@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 >>>>> >>>>> >>>>>