[ 
https://issues.apache.org/jira/browse/GEODE-1999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Eric Shu reassigned GEODE-1999:
-------------------------------

    Assignee: Eric Shu

> offheap memory leak could occur in GatewaySenderQueue
> -----------------------------------------------------
>
>                 Key: GEODE-1999
>                 URL: https://issues.apache.org/jira/browse/GEODE-1999
>             Project: Geode
>          Issue Type: Bug
>          Components: offheap
>            Reporter: Eric Shu
>            Assignee: Eric Shu
>
> When GatewaySenderEventImpl is removing from the sender queue, it is put into 
> an EntryEventImpl. The offheap reference will be removed late once the 
> basicDestory call is done.
>      protected void basicDestroy(final EntryEventImpl event,
>          final boolean cacheWrite, Object expectedOldValue)
>          throws EntryNotFoundException, CacheWriterException, 
> TimeoutException {
>     super.basicDestroy(event, cacheWrite, expectedOldValue);
>     GatewaySenderEventImpl.release(event.getRawOldValue());
>      }
> The following exception is thrown during the basicDestroy call, and the 
> GatewaySenderEventImpl removed from the queue in the basicDestroy failed to 
> remove offheap reference.
> [info 2016/10/11 11:07:38.312 PDT bridgegemfire_1_1_elmax_2881 
> <ServerConnection on port 29381 Thread 1> tid=0x76] 
> org.apache.geode.distributed.DistributedSystemDisconnectedException: 
> DistributedSystem is shutting down, caused by 
> org.apache.geode.ForcedDisconnectException: Member isn't responding to 
> heartbeat requests
>         at 
> org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.directChannelSend(GMSMembershipManager.java:1701)
>         at 
> org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.send(GMSMembershipManager.java:1861)
>         at 
> org.apache.geode.distributed.internal.DistributionChannel.send(DistributionChannel.java:88)
>         at 
> org.apache.geode.distributed.internal.DistributionManager.sendOutgoing(DistributionManager.java:3402)
>         at 
> org.apache.geode.distributed.internal.DistributionManager.sendMessage(DistributionManager.java:3443)
>         at 
> org.apache.geode.distributed.internal.DistributionManager.putOutgoing(DistributionManager.java:1806)
>         at 
> org.apache.geode.internal.cache.DistributedCacheOperation.distribute(DistributedCacheOperation.java:509)
>         at 
> org.apache.geode.internal.cache.DistributedRegion.distributeDestroy(DistributedRegion.java:1779)
>         at 
> org.apache.geode.internal.cache.DistributedRegion.basicDestroyPart3(DistributedRegion.java:1770)
>         at 
> org.apache.geode.internal.cache.AbstractRegionMap.destroy(AbstractRegionMap.java:1527)
>         at 
> org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:7019)
>         at 
> org.apache.geode.internal.cache.LocalRegion.mapDestroy(LocalRegion.java:6991)
>         at 
> org.apache.geode.internal.cache.LocalRegionDataView.destroyExistingEntry(LocalRegionDataView.java:55)
>         at 
> org.apache.geode.internal.cache.LocalRegion.basicDestroy(LocalRegion.java:6956)
>         at 
> org.apache.geode.internal.cache.DistributedRegion.basicDestroy(DistributedRegion.java:1738)
>         at 
> org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderQueue$SerialGatewaySenderQueueMetaRegion.basicDestroy(SerialGatewaySenderQueue.java:1298)
>         at 
> org.apache.geode.internal.cache.LocalRegion.validatedDestroy(LocalRegion.java:1150)
>         at 
> org.apache.geode.internal.cache.DistributedRegion.validatedDestroy(DistributedRegion.java:1024)
>         at 
> org.apache.geode.internal.cache.LocalRegion.destroy(LocalRegion.java:1134)
>         at 
> org.apache.geode.internal.cache.AbstractRegion.destroy(AbstractRegion.java:276)
>         at 
> org.apache.geode.internal.cache.LocalRegion.remove(LocalRegion.java:9587)
>         at 
> org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderQueue.removeOldEntry(SerialGatewaySenderQueue.java:657)
>         at 
> org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderQueue.putAndGetKey(SerialGatewaySenderQueue.java:279)
>         at 
> org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderQueue.put(SerialGatewaySenderQueue.java:252)
>         at 
> org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor.queuePrimaryEvent(SerialGatewaySenderEventProcessor.java:467)
>         at 
> org.apache.geode.internal.cache.wan.serial.SerialGatewaySenderEventProcessor.enqueueEvent(SerialGatewaySenderEventProcessor.java:436)
>         at 
> org.apache.geode.internal.cache.wan.AbstractGatewaySender.distribute(AbstractGatewaySender.java:959)
>         at 
> org.apache.geode.internal.cache.LocalRegion.notifyGatewaySender(LocalRegion.java:6599)
>         at 
> org.apache.geode.internal.cache.BucketRegion.notifyGatewaySender(BucketRegion.java:673)
>         at 
> org.apache.geode.internal.cache.LocalRegion.basicPutPart2(LocalRegion.java:6136)
>         at 
> org.apache.geode.internal.cache.BucketRegion.basicPutPart2(BucketRegion.java:663)
>         at 
> org.apache.geode.internal.cache.AbstractRegionMap.basicPut(AbstractRegionMap.java:2807)
>         at 
> org.apache.geode.internal.cache.BucketRegion.virtualPut(BucketRegion.java:504)
>         at 
> org.apache.geode.internal.cache.PartitionedRegionDataStore.putLocally(PartitionedRegionDataStore.java:1275)
>         at 
> org.apache.geode.internal.cache.PartitionedRegion.putInBucket(PartitionedRegion.java:2809)
>         at 
> org.apache.geode.internal.cache.PartitionedRegion.virtualPut(PartitionedRegion.java:1973)
>         at 
> org.apache.geode.internal.cache.LocalRegionDataView.putEntry(LocalRegionDataView.java:132)
>         at 
> org.apache.geode.internal.cache.LocalRegion.basicUpdate(LocalRegion.java:5930)
>         at 
> org.apache.geode.internal.cache.LocalRegion.basicBridgePut(LocalRegion.java:5548)
>         at 
> org.apache.geode.internal.cache.tier.sockets.command.Put65.cmdExecute(Put65.java:367)
>         at 
> org.apache.geode.internal.cache.tier.sockets.BaseCommand.execute(BaseCommand.java:147)
>         at 
> org.apache.geode.internal.cache.tier.sockets.ServerConnection.doNormalMsg(ServerConnection.java:783)
>         at 
> org.apache.geode.internal.cache.tier.sockets.ServerConnection.doOneMessage(ServerConnection.java:913)
>         at 
> org.apache.geode.internal.cache.tier.sockets.ServerConnection.run(ServerConnection.java:1143)
>         at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>         at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>         at 
> org.apache.geode.internal.cache.tier.sockets.AcceptorImpl$1$1.run(AcceptorImpl.java:546)
>         at java.lang.Thread.run(Thread.java:745)
>   Caused by: org.apache.geode.ForcedDisconnectException: Member isn't 
> responding to heartbeat requests
>         at 
> org.apache.geode.distributed.internal.membership.gms.mgr.GMSMembershipManager.forceDisconnect(GMSMembershipManager.java:2502)
>         at 
> org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.forceDisconnect(GMSJoinLeave.java:971)
>         at 
> org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.processRemoveRequest(GMSJoinLeave.java:618)
>         at 
> org.apache.geode.distributed.internal.membership.gms.membership.GMSJoinLeave.processMessage(GMSJoinLeave.java:1654)
>         at 
> org.apache.geode.distributed.internal.membership.gms.messenger.JGroupsMessenger$JGroupsReceiver.receive(JGroupsMessenger.java:1269)
>         at org.jgroups.JChannel.invokeCallback(JChannel.java:816)
>         at org.jgroups.JChannel.up(JChannel.java:741)
>         at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1030)
>         at org.jgroups.protocols.FRAG2.up(FRAG2.java:165)
>         at org.jgroups.protocols.FlowControl.up(FlowControl.java:390)
>         at org.jgroups.protocols.UNICAST3.deliverMessage(UNICAST3.java:1070)
>         at 
> org.jgroups.protocols.UNICAST3.handleDataReceived(UNICAST3.java:785)
>         at org.jgroups.protocols.UNICAST3.up(UNICAST3.java:426)
>         at 
> org.apache.geode.distributed.internal.membership.gms.messenger.StatRecorder.up(StatRecorder.java:75)
>         at 
> org.apache.geode.distributed.internal.membership.gms.messenger.AddressManager.up(AddressManager.java:75)
>         at org.jgroups.protocols.TP.passMessageUp(TP.java:1601)
>         at org.jgroups.protocols.TP$SingleMessageHandler.run(TP.java:1817)
>         at org.jgroups.util.DirectExecutor.execute(DirectExecutor.java:10)
>         at org.jgroups.protocols.TP.handleSingleMessage(TP.java:1729)
>         at org.jgroups.protocols.TP.receive(TP.java:1654)
>         at 
> org.apache.geode.distributed.internal.membership.gms.messenger.Transport.receive(Transport.java:162)
>         at org.jgroups.protocols.UDP$PacketReceiver.run(UDP.java:701)
>         ... 1 more



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to