commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Sebb (JIRA)" <j...@apache.org>
Subject [jira] Commented: (POOL-113) Inconsistent synch in InvalidEvictorLender, GenericKeyedObjectPool, GenericObjectPool
Date Tue, 11 Dec 2007 10:53:43 GMT

    [ https://issues.apache.org/jira/browse/POOL-113?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12550393
] 

Sebb commented on POOL-113:
---------------------------

The report was generated by Findbugs. I've just re-run it against current trunk, and it shows
the same errors (amongst others).

If the class is intended for use from multiple threads, then it is vital that all fields that
can be updated in one thread and read in another are synchronised on the same object. The
Findbugs report shows that some fields can be accessed without synchronisation. The Java memory
model only guarantees that such accesses see the most recent value if the accesses to the
field are all synch on the same object (or volatile is used). Synchronisation is necessary
for visibility as well as mutual exclusion.

In fact in this case, the fields are mainly primitive booleans, so synch is not needed for
exclusion when updating. However it is needed for visibility between threads.

> Inconsistent synch in InvalidEvictorLender, GenericKeyedObjectPool, GenericObjectPool
> -------------------------------------------------------------------------------------
>
>                 Key: POOL-113
>                 URL: https://issues.apache.org/jira/browse/POOL-113
>             Project: Commons Pool
>          Issue Type: Bug
>            Reporter: Sebb
>             Fix For: 1.4
>
>         Attachments: InvalidEvictorLender.txt
>
>
> InvalidEvictorLender does not always synchronize referant field.
> Patch to follow - please check that the correct synch object is used.
> Similar problems apply to GenericKeyedObjectPool:
> Inconsistent synchronization of org.apache.commons.pool.impl.GenericKeyedObjectPool._testOnBorrow;
locked 66% of time
> GenericKeyedObjectPool.java	line 913
> Inconsistent synchronization of org.apache.commons.pool.impl.GenericKeyedObjectPool._testOnReturn;
locked 66% of time
> GenericKeyedObjectPool.java	line 1096
> And to GenericObjectPool:
> Inconsistent synchronization of org.apache.commons.pool.impl.GenericObjectPool._testOnBorrow;
locked 66% of time
> GenericObjectPool.java	line 915
> Inconsistent synchronization of org.apache.commons.pool.impl.GenericObjectPool._testOnReturn;
locked 66% of time
> GenericObjectPool.java	line 1017

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message