Darrel Schneider created GEODE-2485:
---------------------------------------

             Summary: CacheTransactionManager suspend/resume can leak memory 
for 30 minutes
                 Key: GEODE-2485
                 URL: https://issues.apache.org/jira/browse/GEODE-2485
             Project: Geode
          Issue Type: Bug
          Components: transactions
            Reporter: Darrel Schneider


Each time you suspend/resume a transaction it leaves about 80 bytes of heap 
allocated for 30 minutes. If you are doing a high rate of suspend/resume calls 
then this could cause you to run out of memory in that 30 minute window.

As a workaround you can set -Dgemfire.suspendedTxTimeout to a value as small as 
1 (which would cause the memory to be freed up after 1 minute instead of 30 
minutes).

One fix for this is to periodically call cache.getCCPTimer().timerPurge() after 
a certain number of resume calls have been done (for example 1000). Currently 
resume is calling cancel on the TimerTask but that leaves the task in the 
SystemTimer queue until it expires. Calling timerPurge it addition to cancel 
will fix this bug. Calling timerPurge for every cancel may cause the resume 
method to take too long and keep in mind the getCCPTimer is used by other 
things so the size of the SystemTimer queue that is being purged will not only 
be the number of suspended txs.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to