Barry Oglesby created GEODE-2293: ------------------------------------ Summary: The AckReaderThread incorrectly shuts down when an IllegalStateException is throw whiel releasing an off-heap object Key: GEODE-2293 URL: https://issues.apache.org/jira/browse/GEODE-2293 Project: Geode Issue Type: Bug Components: wan Reporter: Barry Oglesby
The regression test run showed the following severe message: {noformat} [severe 2017/01/07 09:14:40.789 UTC bridgegemfire_1_1_rs-QueuesBTTest-2017-01-06-14-07-15-client-12_3912 <AckReaderThread for : Event Processor for GatewaySender_sender_bridgeds_1_to_bridgeds_2_0> tid=0x97] Stopping the processor because the following exception occurred while processing a batch: java.lang.IllegalStateException: It looks like off heap memory @7f33a8000238 was already freed. rawBits=0 history=null at org.apache.geode.internal.offheap.OffHeapStoredObject.release(OffHeapStoredObject.java:675) at org.apache.geode.internal.offheap.OffHeapStoredObject.release(OffHeapStoredObject.java:659) at org.apache.geode.internal.offheap.OffHeapStoredObject.release(OffHeapStoredObject.java:373) at org.apache.geode.internal.offheap.OffHeapHelper.releaseAndTrackOwner(OffHeapHelper.java:138) at org.apache.geode.internal.cache.wan.GatewaySenderEventImpl.release(GatewaySenderEventImpl.java:1213) at org.apache.geode.internal.cache.wan.parallel.ParallelGatewaySenderQueue.remove(ParallelGatewaySenderQueue.java:1096) at org.apache.geode.internal.cache.wan.parallel.ParallelGatewaySenderQueue.remove(ParallelGatewaySenderQueue.java:1531) at org.apache.geode.internal.cache.wan.AbstractGatewaySenderEventProcessor.eventQueueRemove(AbstractGatewaySenderEventProcessor.java:231) at org.apache.geode.internal.cache.wan.AbstractGatewaySenderEventProcessor.handleSuccessBatchAck(AbstractGatewaySenderEventProcessor.java:981) at org.apache.geode.internal.cache.wan.GatewaySenderEventRemoteDispatcher$AckReaderThread.run(GatewaySenderEventRemoteDispatcher.java:636) {noformat} This exception shows that the {{AckReaderThread}} was processing a successful batch acknowledgement, and an {{IllegalStateException}} was thrown while releasing a {{GatewaySenderEventImpl}} from off-heap memory. This caused the {{AckReaderThread}} to shut down. It looks like the {{GatewaySenderEventImpl}} had already been released and is being released again. I'm not sure how the {{GatewaySenderEventImpl}} got into this state, but the {{AckReaderThread}} should not shut down because of this {{IllegalStateException}}. The code in question is in the finally block of {{ParallelGatewaySenderQueue.remove}}: {noformat} } finally { event.release(); } {noformat} The test run is here: /export/monaco1/users/lhughes/xfer/wanconflationPersist-0107-091328 -- This message was sent by Atlassian JIRA (v6.3.4#6332)