[ https://issues.apache.org/jira/browse/GEODE-1999?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Eric Shu resolved GEODE-1999. ----------------------------- Resolution: Fixed Fix Version/s: 1.0.0-incubating > 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 > Fix For: 1.0.0-incubating > > > 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)