incubator-directmemory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jeff MAURY (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (DIRECTMEMORY-82) CacheService should implement Closable / Review the livecycle of the CacheService/MemoryService/ByteBufferAllocator objects
Date Fri, 25 May 2012 21:49:22 GMT

     [ 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

        

Mime
View raw message