On 01/09/2011 00:57, sebb wrote: > On 1 September 2011 00:10, <ma...@apache.org> wrote: >> Author: markt >> Date: Wed Aug 31 23:10:53 2011 >> New Revision: 1163864 >> >> URL: http://svn.apache.org/viewvc?rev=1163864&view=rev >> Log: >> Stop multiple calls to close() triggering an JMX error >> >> Modified: >> >> commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java >> >> Modified: >> commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java >> URL: >> http://svn.apache.org/viewvc/commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java?rev=1163864&r1=1163863&r2=1163864&view=diff >> ============================================================================== >> --- >> commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java >> (original) >> +++ >> commons/proper/pool/trunk/src/java/org/apache/commons/pool2/impl/GenericKeyedObjectPool.java >> Wed Aug 31 23:10:53 2011 >> @@ -1098,7 +1098,10 @@ public class GenericKeyedObjectPool<K,T> >> evictionIterator = null; >> evictionKeyIterator = null; >> startEvictor(-1L); >> - ManagementFactory.getPlatformMBeanServer().unregisterMBean(oname); >> + if (oname != null) { >> + >> ManagementFactory.getPlatformMBeanServer().unregisterMBean(oname); >> + oname = null; >> + } >> } > > If close() can be called from mulitple threads, then it's still > possible to unregister the bean twice.
Yep. This was more a quick fix to get past the unit test failures. > I think the only way to fix this would be to synchronise the block - > making oname volatile would not help here. > Alternatively, use an atomic boolean to record the fact that the bean > has been registered. I'll take a look and see what is cleanest. I'd rather not introduce a sync on the pool if I can help it. Mark --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@commons.apache.org For additional commands, e-mail: dev-h...@commons.apache.org