geode-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Darrel Schneider (JIRA)" <>
Subject [jira] [Resolved] (GEODE-2485) CacheTransactionManager suspend/resume can leak memory for 30 minutes
Date Mon, 10 Apr 2017 22:26:41 GMT


Darrel Schneider resolved GEODE-2485.
       Resolution: Fixed
    Fix Version/s: 1.2.0

> CacheTransactionManager suspend/resume can leak memory for 30 minutes
> ---------------------------------------------------------------------
>                 Key: GEODE-2485
>                 URL:
>             Project: Geode
>          Issue Type: Bug
>          Components: transactions
>            Reporter: Darrel Schneider
>            Assignee: Darrel Schneider
>             Fix For: 1.2.0
> 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

View raw message