Hello! I'm not sure that C# has peer class loading. Are you sure that you have this filter's code deployed on your server nodes?
Regards, -- Ilya Kasnacheev 2018-08-09 15:23 GMT+03:00 Som Som <2av10...@gmail.com>: > is there any information? > > ---------- Forwarded message --------- > From: Som Som <2av10...@gmail.com> > Date: ср, 8 авг. 2018 г., 16:46 > Subject: continous query remote filter issue > To: <user@ignite.apache.org> > > > hello. > > It looks like peerAssemblyLoadingMode flag doesn’t work correctly in case > of CacheEntryEventFilter: > > > > As an example: > > > > 1) This code works fine and I see “Hello world” on the server console. > It means that HelloAction class was successfully transferred to server. > > > > class Program > > { > > static void Main(string[] args) > > { > > using (var ignite = Ignition.StartFromApplicationConfigurat > ion()) > > { > > var remotes = ignite.GetCluster().ForRemotes(); > > remotes.GetCompute().Broadcast(newHelloAction()); > > } > > } > > > > class HelloAction : IComputeAction > > { > > public void Invoke() > > { > > Console.WriteLine("Hello, World!"); > > } > > } > > } > > 2) But this code that sends the filter class to the remote server > node generates an error and I receive 4 entries of Employee instead of 2 > as expected: > > class Program > > { > > public class Employee > > { > > public Employee(string name, long salary) > > { > > Name = name; > > Salary = salary; > > } > > > > [QuerySqlField] > > public string Name { get; set; } > > > > [QuerySqlField] > > public long Salary { get; set; } > > > > public override string ToString() > > { > > return string.Format("{0} [name={1}, salary={2}]", typeof( > Employee).Name, Name, Salary); > > } > > } > > > > class EmployeeEventListener :ICacheEntryEventListener<int, > Employee> > > { > > public void OnEvent(IEnumerable<ICacheEntryEvent<int, Employee>> > evts) > > { > > foreach(var evt in evts) > > Console.WriteLine(evt.Value); > > } > > } > > > > class EmployeeEventFilter :ICacheEntryEventFilter<int, Employee> > > { > > public bool Evaluate(ICacheEntryEvent<int,Employee> evt) > > { > > return evt.Value.Salary > 5000; > > } > > } > > > > static void Main(string[] args) > > { > > using (var ignite = Ignition.StartFromApplicationConfigurat > ion()) > > { > > var employeeCache = ignite.GetOrCreateCache<int, Employee > >( > > new CacheConfiguration("employee", newQueryEntity( > typeof(int), typeof(Employee))) { SqlSchema = "PUBLIC" }); > > > > > > > > var query = new ContinuousQuery<int,Employee>(new > EmployeeEventListener()) > > { > > Filter = new EmployeeEventFilter() > > }; > > > > var queryHandle = employeeCache.QueryContinuous(query); > > > > employeeCache.Put(1, newEmployee("James Wilson", 1000)); > > employeeCache.Put(2, new Employee("Daniel Adams", 2000)); > > employeeCache.Put(3, newEmployee("Cristian Moss", 7000)); > > employeeCache.Put(4, newEmployee("Allison Mathis", 8000)); > > > > Console.WriteLine("Press any key..."); > > Console.ReadKey(); > > } > > } > > } > > Server node console output: > > [16:26:33] __________ ________________ > > [16:26:33] / _/ ___/ |/ / _/_ __/ __/ > > [16:26:33] _/ // (7 7 // / / / / _/ > > [16:26:33] /___/\___/_/|_/___/ /_/ /___/ > > [16:26:33] > > [16:26:33] ver. 2.7.0.20180721#19700101-sha1:DEV > > [16:26:33] 2018 Copyright(C) Apache Software Foundation > > [16:26:33] > > [16:26:33] Ignite documentation: http://ignite.apache.org > > [16:26:33] > > [16:26:33] Quiet mode. > > [16:26:33] ^-- Logging to file 'C:\Ignite\apache-ignite- > fabric-2.7.0.20180721-bin\work\log\ignite-b1061a07.0.log' > > [16:26:33] ^-- Logging by 'JavaLogger [quiet=true, config=null]' > > [16:26:33] ^-- To see **FULL** console log here add -DIGNITE_QUIET=false > or "-v" to ignite.{sh|bat} > > [16:26:33] > > [16:26:33] OS: Windows Server 2016 10.0 amd64 > > [16:26:33] VM information: Java(TM) SE Runtime Environment 1.8.0_161-b12 > Oracle Corporation Java HotSpot(TM) 64-Bit Server VM 25.161-b12 > > [16:26:33] Please set system property '-Djava.net.preferIPv4Stack=true' > to avoid possible problems in mixed environments. > > [16:26:33] Configured plugins: > > [16:26:33] ^-- None > > [16:26:33] > > [16:26:33] Configured failure handler: [hnd=StopNodeOrHaltFailureHandler > [tryStop=false, timeout=0]] > > [16:26:33] Message queue limit is set to 0 which may lead to potential > OOMEs when running cache operations in FULL_ASYNC or PRIMARY_SYNC modes due > to message queues growth on sender and receiver sides. > > [16:26:33] Security status [authentication=off, tls/ssl=off] > > [16:26:35] Performance suggestions for grid (fix if possible) > > [16:26:35] To disable, set -DIGNITE_PERFORMANCE_SUGGESTIONS_DISABLED=true > > [16:26:35] ^-- Enable G1 Garbage Collector (add '-XX:+UseG1GC' to JVM > options) > > [16:26:35] ^-- Specify JVM heap max size (add '-Xmx<size>[g|G|m|M|k|K]' > to JVM options) > > [16:26:35] ^-- Set max direct memory size if getting 'OOME: Direct > buffer memory' (add '-XX:MaxDirectMemorySize=<size>[g|G|m|M|k|K]' to JVM > options) > > [16:26:35] ^-- Disable processing of calls to System.gc() (add > '-XX:+DisableExplicitGC' to JVM options) > > [16:26:35] Refer to this page for more performance suggestions: https:// > apacheignite.readme.io/docs/jvm-and-system-tuning > > [16:26:35] > > [16:26:35] To start Console Management & Monitoring run > ignitevisorcmd.{sh|bat} > > [16:26:35] > > [16:26:35] Ignite node started OK (id=b1061a07) > > [16:26:35] Topology snapshot [ver=1, servers=1, clients=0, CPUs=8, > offheap=6.4GB, heap=7.1GB] > > [16:26:35] ^-- Node [id=B1061A07-4404-47BE-8EB4-160F6D174BF4, > clusterState=ACTIVE] > > [16:26:35] Data Regions Configured: > > [16:26:35] ^-- default [initSize=256.0 MiB, maxSize=6.4 GiB, > persistenceEnabled=false] > > [16:26:42] Topology snapshot [ver=2, servers=1, clients=1, CPUs=12, > offheap=6.4GB, heap=11.0GB] > > [16:26:42] ^-- Node [id=B1061A07-4404-47BE-8EB4-160F6D174BF4, > clusterState=ACTIVE] > > [16:26:42] Data Regions Configured: > > [16:26:42] ^-- default [initSize=256.0 MiB, maxSize=6.4 GiB, > persistenceEnabled=false] > > [16:26:44,523][SEVERE][sys-stripe-1-#2][] Failure in Java callback > > class org.apache.ignite.IgniteException: Platform > error:Apache.Ignite.Core.Binary.BinaryObjectException: No matching type > found for object [typeId=-1369457415, typeName= > IngiteExample.Program+EmployeeEventFilter]. > This usually indicates that assembly with specified type is not loaded on a > node. When using Apache.Ignite.exe, make sure to load assemblies with > -assembly parameter. Alternatively, set > IgniteConfiguration.PeerAssemblyLoadingEnabled > to true. > > at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 > pos, Type typeOverride) > > at Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& > res, Type typeOverride) > > at Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type > typeOverride) > > at Apache.Ignite.Core.Impl.Cache.Query.Continuous. > ContinuousQueryFilterHolder..ctor(IBinaryRawReader reader) > > at > Apache.Ignite.Core.Impl.Binary.Marshaller.<AddSystemTypes>b__d(BinaryReader > r) > > at > Apache.Ignite.Core.Impl.Binary.BinarySystemTypeSerializer`1.ReadBinary[T1](BinaryReader > reader, IBinaryTypeDescriptor desc, Int32 pos, Type typeOverride) > > at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadFullObject[T](Int32 > pos, Type typeOverride) > > at Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& > res, Type typeOverride) > > at Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type > typeOverride) > > at Apache.Ignite.Core.Impl.Binary.BinaryReader.ReadBinaryObject[T](Boolean > doDetach) > > at Apache.Ignite.Core.Impl.Binary.BinaryReader.TryDeserialize[T](T& > res, Type typeOverride) > > at Apache.Ignite.Core.Impl.Binary.BinaryReader.Deserialize[T](Type > typeOverride) > > at Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks. > ContinuousQueryFilterCreate(Int64 memPtr) > > at Apache.Ignite.Core.Impl.Unmanaged.UnmanagedCallbacks.InLongOutLong(Int32 > type, Int64 val) > > at org.apache.ignite.internal.processors.platform. > PlatformProcessorImpl.loggerLog(PlatformProcessorImpl.java:403) > > at org.apache.ignite.internal.processors.platform. > PlatformProcessorImpl.processInStreamOutLong(PlatformProcessorImpl.java: > 459) > > at org.apache.ignite.internal.processors.platform. > PlatformProcessorImpl.processInStreamOutLong(PlatformProcessorImpl.java: > 511) > > at org.apache.ignite.internal.processors.platform. > PlatformTargetProxyImpl.inStreamOutLong(PlatformTargetProxyImpl.java:67) > > at org.apache.ignite.internal.processors.platform.callback. > PlatformCallbackUtils.inLongOutLong(Native Method) > > at org.apache.ignite.internal.processors.platform.callback. > PlatformCallbackGateway.continuousQueryFilterCreate( > PlatformCallbackGateway.java:394) > > at org.apache.ignite.internal.processors.platform.cache.query. > PlatformContinuousQueryRemoteFilter.deploy(PlatformContinuousQueryRemoteF > ilter.java:124) > > at org.apache.ignite.internal.processors.platform.cache.query. > PlatformContinuousQueryRemoteFilter.evaluate( > PlatformContinuousQueryRemoteFilter.java:84) > > at org.apache.ignite.internal.processors.cache.query.continuous. > CacheContinuousQueryHandler.filter(CacheContinuousQueryHandler.java:833) > > at org.apache.ignite.internal.processors.cache.query.continuous. > CacheContinuousQueryHandler$2.onEntryUpdated(CacheContinuousQueryHandler. > java:422) > > at org.apache.ignite.internal.processors.cache.query.continuous. > CacheContinuousQueryManager.onEntryUpdated(CacheContinuousQueryManager. > java:399) > > at org.apache.ignite.internal.processors.cache. > GridCacheMapEntry.innerUpdate(GridCacheMapEntry.java:1923) > > at org.apache.ignite.internal.processors.cache.distributed. > dht.atomic.GridDhtAtomicCache.updateSingle(GridDhtAtomicCache.java:2436) > > at org.apache.ignite.internal.processors.cache.distributed. > dht.atomic.GridDhtAtomicCache.update(GridDhtAtomicCache.java:1898) > > at org.apache.ignite.internal.processors.cache.distributed. > dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal0( > GridDhtAtomicCache.java:1740) > > at org.apache.ignite.internal.processors.cache.distributed. > dht.atomic.GridDhtAtomicCache.updateAllAsyncInternal( > GridDhtAtomicCache.java:1630) > > at org.apache.ignite.internal.processors.cache.distributed. > dht.atomic.GridDhtAtomicCache.processNearAtomicUpdateRequest > (GridDhtAtomicCache.java:3071) > > at org.apache.ignite.internal.processors.cache.distributed. > dht.atomic.GridDhtAtomicCache.access$400(GridDhtAtomicCache.java:133) > > at org.apache.ignite.internal.processors.cache.distributed. > dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:269) > > at org.apache.ignite.internal.processors.cache.distributed. > dht.atomic.GridDhtAtomicCache$5.apply(GridDhtAtomicCache.java:264) > > at org.apache.ignite.internal.processors.cache.GridCacheIoManager. > processMessage(GridCacheIoManager.java:1056) > > at org.apache.ignite.internal.processors.cache. > GridCacheIoManager.onMessage0(GridCacheIoManager.java:581) > > at org.apache.ignite.internal.processors.cache.GridCacheIoManager. > handleMessage(GridCacheIoManager.java:380) > > at org.apache.ignite.internal.processors.cache.GridCacheIoManager. > handleMessage(GridCacheIoManager.java:306) > > at org.apache.ignite.internal.processors.cache. > GridCacheIoManager.access$100(GridCacheIoManager.java:101) > > at org.apache.ignite.internal.processors.cache.GridCacheIoManager > $1.onMessage(GridCacheIoManager.java:295) > > at org.apache.ignite.internal.managers.communication. > GridIoManager.invokeListener(GridIoManager.java:1556) > > at org.apache.ignite.internal.managers.communication. > GridIoManager.processRegularMessage0(GridIoManager.java:1184) > > at org.apache.ignite.internal.managers.communication. > GridIoManager.access$4200(GridIoManager.java:125) > > at org.apache.ignite.internal.managers.communication. > GridIoManager$9.run(GridIoManager.java:1091) > > at org.apache.ignite.internal.util.StripedExecutor$Stripe. > body(StripedExecutor.java:496) > > at org.apache.ignite.internal.util.worker.GridWorker.run( > GridWorker.java:110) > > at java.lang.Thread.run(Thread.java:748) > > [16:26:44,538][SEVERE][sys-stripe-1-#2][query] CacheEntryEventFilter > failed: javax.cache.event.CacheEntryListenerException: Failed to deploy > the filter. > > [16:26:44,554][SEVERE][sys-stripe-2-#3][query] CacheEntryEventFilter > failed: javax.cache.event.CacheEntryListenerException: Failed to deploy > the filter because it has been closed. > > [16:26:44,554][SEVERE][sys-stripe-3-#4][query] CacheEntryEventFilter > failed: javax.cache.event.CacheEntryListenerException: Failed to deploy > the filter because it has been closed. > > [16:26:44,570][SEVERE][sys-stripe-4-#5][query] CacheEntryEventFilter > failed: javax.cache.event.CacheEntryListenerException: Failed to deploy > the filter because it has been closed. >