[ https://issues.apache.org/jira/browse/GEODE-8943?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17283343#comment-17283343 ]
Anilkumar Gingade commented on GEODE-8943: ------------------------------------------ For TX the remote filter processing happens in: Tx.commit() attachFilterProfileInformation() This should be calculating the remote interested clients. It looks like, in the remote node (where secondary bucket and the primary subscription queue is hosted) the processing happens again in: LocalRegion.invokeTXCallbacks() E.g: Stack trace in vm1: [vm1] [info 2021/02/10 17:33:26.827 PST server-1 <RMI TCP Connection(1)-192.168.1.2> tid=0x14] #### getInterestedClients Key: Key-5 [vm1] java.lang.Exception: DEBUG [vm1] at org.apache.geode.internal.cache.FilterProfile.getInterestedClients(FilterProfile.java:1452) [vm1] at org.apache.geode.internal.cache.FilterProfile.fillInInterestRoutingInfo(FilterProfile.java:1395) [vm1] at org.apache.geode.internal.cache.FilterProfile.getFilterRoutingInfoPart1(FilterProfile.java:1110) [vm1] at org.apache.geode.internal.cache.CacheDistributionAdvisor.adviseFilterRouting(CacheDistributionAdvisor.java:284) [vm1] at org.apache.geode.internal.cache.TXState.attachFilterProfileInformation(TXState.java:612) [vm1] at org.apache.geode.internal.cache.TXState.commit(TXState.java:526) [vm1] at org.apache.geode.internal.cache.TXStateProxyImpl.commit(TXStateProxyImpl.java:237) [vm1] at org.apache.geode.internal.cache.TXManagerImpl.commit(TXManagerImpl.java:444) [vm1] at org.apache.geode.cache.query.cq.dunit.PartitionedRegionTxDUnitTest.lambda$case2$f8d47bd6$1(PartitionedRegionTxDUnitTest.java:201) [vm1] at org.apache.geode.test.dunit.internal.IdentifiableRunnable.run(IdentifiableRunnable.java:41) [vm1] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [vm1] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [vm1] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [vm1] at java.lang.reflect.Method.invoke(Method.java:498) [vm1] at org.apache.geode.test.dunit.internal.MethodInvoker.executeObject(MethodInvoker.java:123) [vm1] at org.apache.geode.test.dunit.internal.RemoteDUnitVM.executeMethodOnObject(RemoteDUnitVM.java:78) [vm1] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [vm1] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [vm1] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [vm1] at java.lang.reflect.Method.invoke(Method.java:498) [vm1] at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357) [vm1] at sun.rmi.transport.Transport$1.run(Transport.java:200) [vm1] at sun.rmi.transport.Transport$1.run(Transport.java:197) [vm1] at java.security.AccessController.doPrivileged(Native Method) [vm1] at sun.rmi.transport.Transport.serviceCall(Transport.java:196) [vm1] at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573) [vm1] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834) [vm1] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688) [vm1] at java.security.AccessController.doPrivileged(Native Method) [vm1] at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687) [vm1] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [vm1] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [vm1] at java.lang.Thread.run(Thread.java:748) Stack trace in vm2: [vm2] [info 2021/02/10 17:33:26.876 PST server-2 <Pooled Message Processor 3> tid=0x58] #### getInterestedClients Key: Key-5 [vm2] java.lang.Exception: DEBUG [vm2] at org.apache.geode.internal.cache.FilterProfile.getInterestedClients(FilterProfile.java:1452) [vm2] at org.apache.geode.internal.cache.FilterProfile.fillInInterestRoutingInfo(FilterProfile.java:1395) [vm2] at org.apache.geode.internal.cache.FilterProfile.setLocalInterestRoutingInfo(FilterProfile.java:1193) [vm2] at org.apache.geode.internal.cache.FilterProfile.getFilterRoutingInfoPart2(FilterProfile.java:1150) [vm2] at org.apache.geode.internal.cache.FilterProfile.getFilterRoutingInfoPart2(FilterProfile.java:1129) [vm2] at org.apache.geode.internal.cache.FilterProfile.getLocalFilterRouting(FilterProfile.java:1053) [vm2] at org.apache.geode.internal.cache.LocalRegion.generateLocalFilterRouting(LocalRegion.java:5828) [vm2] at org.apache.geode.internal.cache.PartitionedRegion.generateLocalFilterRouting(PartitionedRegion.java:7936) [vm2] at org.apache.geode.internal.cache.LocalRegion.notifyBridgeClients(LocalRegion.java:6092) [vm2] at org.apache.geode.internal.cache.LocalRegion.invokeTXCallbacks(LocalRegion.java:6809) [vm2] at org.apache.geode.internal.cache.TXCommitMessage.firePendingCallbacks(TXCommitMessage.java:754) [vm2] at org.apache.geode.internal.cache.TXCommitMessage.basicProcessOps(TXCommitMessage.java:727) [vm2] at org.apache.geode.internal.cache.TXCommitMessage.basicProcess(TXCommitMessage.java:649) [vm2] at org.apache.geode.internal.cache.TXCommitMessage$CommitProcessMessage.basicProcess(TXCommitMessage.java:1855) [vm2] at org.apache.geode.internal.cache.TXCommitMessage$CommitProcessForTXIdMessage.process(TXCommitMessage.java:1815) [vm2] at org.apache.geode.distributed.internal.DistributionMessage.scheduleAction(DistributionMessage.java:376) [vm2] at org.apache.geode.distributed.internal.DistributionMessage$1.run(DistributionMessage.java:441) [vm2] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [vm2] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [vm2] at org.apache.geode.distributed.internal.ClusterOperationExecutors.runUntilShutdown(ClusterOperationExecutors.java:446) [vm2] at org.apache.geode.distributed.internal.ClusterOperationExecutors.doProcessingThread(ClusterOperationExecutors.java:393) [vm2] at org.apache.geode.logging.internal.executors.LoggingThreadFactory.lambda$newThread$0(LoggingThreadFactory.java:120) > Filterrs (Interest and CQ) is processed multiple times with transactional > operation on PR > ----------------------------------------------------------------------------------------- > > Key: GEODE-8943 > URL: https://issues.apache.org/jira/browse/GEODE-8943 > Project: Geode > Issue Type: Bug > Components: cq, regions > Affects Versions: 1.14.0 > Reporter: Anilkumar Gingade > Priority: Major > Labels: blocks-1.14.0 > > The Filters (interest and CQ) could be getting processed multiple times when > transactional operation is performed. > By design on PR the filters are processed on primary bucket where the data is > applied/changed and adjunct message with interested clients are sent to > remote servers (where the subscription queues are hosted) and replicas; thus > performing filter processing once and sending the message to remote servers > only if the filters are satisfied; it looks like currently the filter > processing is happening both at the primary and secondary buckets for TX > operation. -- This message was sent by Atlassian Jira (v8.3.4#803005)