jackrabbit-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Antoine Brochard (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (JCR-3008) Possible Memory leak due to TransactionContext and java.util.Timer
Date Tue, 05 Jul 2011 14:47:17 GMT

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

Antoine Brochard updated JCR-3008:
----------------------------------

    Affects Version/s: 2.2.4
                       2.2.5
                       2.2.7

Looking at the code this should also apply at least to 2.2.4, 2.2.5 , 2.2.7

> Possible Memory leak due to TransactionContext and java.util.Timer
> ------------------------------------------------------------------
>
>                 Key: JCR-3008
>                 URL: https://issues.apache.org/jira/browse/JCR-3008
>             Project: Jackrabbit Content Repository
>          Issue Type: Bug
>          Components: jackrabbit-core, transactions
>    Affects Versions: 2.2.1, 2.2.4, 2.2.5, 2.2.7
>         Environment:  jdk 1.6.0_24
>            Reporter: Antoine Brochard
>              Labels: memory, memory_leak, perfomance
>
> I observed that sometimes when working on large write operations, instances of  TransactionContext
stay referenced by an instance of  java.util.TaskQueue
> I may be wrong but
> In TransactionContext.prepare() the rollback task is scheduled :
>   timer.schedule(this, timeout * 1000, Integer.MAX_VALUE);
> Then in java.util.Timer:  
>  - if the rollback task has not been cancelled yet ( for example if a large commit is
in progress ) when the TimerThread get to work on it 
>  - and the timeout expired ( executionTime<currentTime) 
> then since the period is set to  Integer.MaxValue, and other tasks are in the same queue,
the next time the task is examined and removed from the queue may be in several days !!
> If my analysis is correct I have several proposals
> - the period parameter could be omitted when calling the schedule method
> - a call to Timer.purge() could be made after cancelling the task
> hope this helps

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message