You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@geode.apache.org by "Anilkumar Gingade (Jira)" <ji...@apache.org> on 2021/02/11 20:16:00 UTC

[jira] [Commented] (GEODE-8943) Filterrs (Interest and CQ) is processed multiple times with transactional operation on PR

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