Hi Lin! It's bug. I've create ticket and you can track progress there https://issues.apache.org/jira/browse/IGNITE-4047. How workaround you can start CQ with setAutoUnsubscribe(true).
BTW: Why you use CQ with auto unsubscribe false? Thanks, Nikolay On Fri, Sep 30, 2016 at 7:18 AM, Lin <[email protected]> wrote: > Hi Vladislav, > > Thank you for your response. I can reproduce this issue with the maven > project you gave. > > My problems is that: after the second server node joinned into the > topology, I put some data into the cache, the result is that the CQ query > works in the first and second server nodes (the remote filter procuduced > the system output as expceted), but the CQ query client node was not > working as expected ( the CacheEntryUpdatedListener was not trigged any > more). > > I have modified the pom with my enviroment (only some modification about > package versions), and add some shell script in windows to reproduce the > issue easily. > My enviroment is ignite ver. 1.6.0#20160518-sha1:0b22c45b, the details > can be found in the log file in "log/s1.debug.log" which was produced with > the "-X" parameter in maven (see script server.bat). > > Here is the steps about how to reproduce the issue in my envrioment. > 1. mvn compile, the produce the target classes and ignite-*.xml. > 2. the first test > 2.1 run the server.bat to start the first server node, the console outputs > were piped into s1.log. > 2.2 run the CQClient.bat to create a client with cq query, when the > CacheContinuousQueryEvent is received, it will produce outputs like > ` > sys-#5%null% receive CacheEntryEvent CacheContinuousQueryEvent > [evtType=CREATED, key=5, newVal=0, oldVal=null] > sys-#5%null% receive CacheEntryEvent CacheContinuousQueryEvent > [evtType=UPDATED, key=5, newVal=1, oldVal=0] > ` > in the client node, and the server node will produce outputs like > ` > CacheEntryEventRemoteFilter.evaluate CacheContinuousQueryEvent > [evtType=CREATED, key=5, newVal=0, oldVal=null], with ret true > CacheEntryEventRemoteFilter.evaluate CacheContinuousQueryEvent > [evtType=UPDATED, key=5, newVal=1, oldVal=0], with ret true > ` > 2.3 run the DataClient.bat to put 2 kv pairs( (5, 0), (5,1)) into given > cache and exit. This will cause the server1 producing outputs from remote > filter > ` > CacheEntryEventRemoteFilter.evaluate CacheContinuousQueryEvent > [evtType=CREATED, key=5, newVal=0, oldVal=null], with ret true > CacheEntryEventRemoteFilter.evaluate CacheContinuousQueryEvent > [evtType=UPDATED, key=5, newVal=1, oldVal=0], with ret true > ` > and cause the CQ client producing outputs from CacheEntryUpdatedListener > in the client, > ` > sys-#5%null% receive CacheEntryEvent CacheContinuousQueryEvent > [evtType=CREATED, key=5, newVal=0, oldVal=null] > sys-#5%null% receive CacheEntryEvent CacheContinuousQueryEvent > [evtType=UPDATED, key=5, newVal=1, oldVal=0] > ` > > > 3. continue to start the second test, and the issue is occurred, > 3.1 run the server.bat to start the second server node, and piped its > output into s2.log. > 3.2 run the DataClient.bat to put the same 2 kv pairs into cache, and in > server1 and server2's outputs, the remote filters output are the same, > ` > CacheEntryEventRemoteFilter.evaluate CacheContinuousQueryEvent > [evtType=UPDATED, key=5, newVal=0, oldVal=1], with ret true > CacheEntryEventRemoteFilter.evaluate CacheContinuousQueryEvent > [evtType=UPDATED, key=5, newVal=1, oldVal=0], with ret true > ` > but in the CQClient's output, there is nothing, the expected output should > be something like > ` > sys-#5%null% receive CacheEntryEvent CacheContinuousQueryEvent > [evtType=UPDATED, key=5, newVal=0, oldVal=1] > sys-#5%null% receive CacheEntryEvent CacheContinuousQueryEvent > [evtType=UPDATED, key=5, newVal=1, oldVal=0] > ` > but not. > > It looks like that the remote filter is initialized in the server2 node > with method org.apache.ignite.internal.processors.cache.query.continuous. > CacheContinuousQueryHandlerV2#readExternal, > but the links between remote filter and local listener is broken? The > CacheContinuousQueryEvent didn't pass to the client. > > And in the meanwhile, why the two server node process the same data? > > Hope for your help. > > > Lin. >
