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

Thomas Vandahl resolved JCS-115.
--------------------------------

       Resolution: Fixed
    Fix Version/s: jcs-2.0.0
         Assignee: Thomas Vandahl

Fixed in SVN

> JDBCDiskCachePoolAccessManager is thread hostile
> ------------------------------------------------
>
>                 Key: JCS-115
>                 URL: https://issues.apache.org/jira/browse/JCS-115
>             Project: Commons JCS
>          Issue Type: Bug
>            Reporter: Sebb
>            Assignee: Thomas Vandahl
>            Priority: Critical
>             Fix For: jcs-2.0.0
>
>
> JDBCDiskCachePoolAccessManager is currently designed as a singleton.
> However, it contains a mutable field, props, with a protected setter.
> This just does not work in a multi-threaded environment.
> It looks like the reason for the singleton is to share a the HashMap of 
> JDBCDiskCachePoolAccess instances.
> So one possible fix would be to make the HashMap static instead of using a 
> singleton, replace getInstance with a public constructor.
> AFAICT this won't affect garbage collection of the pool as there is no way to 
> clear the singleton reference. 
> Another would be to eliminate the props field, adding it as a parameter to 
> methods that need it.
> It looks as though the props field is only used when creating the entry for 
> the map, so it should be supplied at the same time as the pool name. It does 
> not appear to be possible to delete a pool entry once created, so a given set 
> of props can only be used once to create a pool of a given name.
> In any case, the setter for props should be removed and the field should be 
> made final (if it is kept).
> Note: this was found when investigating JCS-114 - one of the tests fails to 
> invoke JDBCDiskCachePoolAccessManager.setProps



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to