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

Jeff MAURY updated DIRECTMEMORY-82:
-----------------------------------

    Attachment: DIRECTMEMORY-82.patch

Added state management to CacheService and MemoryService. I have been quite 
agressive as all public methods now check the state and throw an 
IllegalStateException. This means a CacheService and MemoryService can only be 
gargabe collected once closed as the Closeable interface does not exhibits a 
kind of open/init method.
I tried to update all dependent code that needs now to close these objects.
I did not update the ByteAllocator layer as it already implemented the 
Closeable interface but I remarked that it does not respect the Closeable 
contract (you can call many time the close method).
And I added 2 Unit Tests that checks that IllegalStateException is throw if 
public methods are called on a closed object (except for close itself)

                
> CacheService should implement Closable / Review the livecycle of the 
> CacheService/MemoryService/ByteBufferAllocator objects
> ---------------------------------------------------------------------------------------------------------------------------
>
>                 Key: DIRECTMEMORY-82
>                 URL: https://issues.apache.org/jira/browse/DIRECTMEMORY-82
>             Project: Apache DirectMemory
>          Issue Type: Bug
>          Components: core
>    Affects Versions: 0.6.0
>            Reporter: Jeff MAURY
>         Attachments: DIRECTMEMORY-82.patch
>
>
> I think the CacheService should implement Closable. Each CacheService 
> instance holds a reference to a Timer, which starts an underlying Thread to 
> execute TimerTasks. As there is no way to know when the CacheService is 
> stopped, lots of "zombies" threads will be present in the JVM each time a 
> reference on the CacheService is not kept anymore (start/stop of a Web 
> application, open/close of an HibernateSessionFactory).
> Please note that the patch I submitted for DIRECTMEMORY-81 shows now that 
> lots of Timer-xx threads are now executing and generating traces as several 
> instances of CacheService are created during the tests.
> In general, I think we should review the lifecycle of the 
> CacheService/MemoryService/ByteBufferAllocator objects as only 
> ByteBufferAllocator implements Closable but the close method is never called 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to