[ 
https://issues.apache.org/jira/browse/POOL-151?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12770539#action_12770539
 ] 

Hassan Sajjad commented on POOL-151:
------------------------------------


Thanks for looking up Mark.

bq. there is no way the same object could get returned to the pool twice

This is verifiable from the {{debug}} log output, as we print session id's when 
we borrow/return them from/to the pool. Here's the expanded version of the 
[earlier log | 
https://issues.apache.org/jira/browse/POOL-151?focusedCommentId=12765140&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#action_12765140],
 showing the second use-case where we may end-up borrowing an *evicted* object. 
PS: I have left some additional info in the log output (Event ID etc) as they 
may in clarity.

{noformat}
2009-10-13 14:52:13,043 DEBUG [asyncDelivery84] [] 
[EVENT-ID-28571391-7851-4db8-a691-faf336a52039] Borrowed session 
com.ibm.mq.jms.mqqueuesess...@1902242 for jms connector 
moboSub2JmsConnector-LNDSBUS1
2009-10-13 14:52:13,043 DEBUG [asyncDelivery84] [] 
[EVENT-ID-28571391-7851-4db8-a691-faf336a52039] Creating a proxy for 
com.ibm.mq.jms.mqqueuesess...@1902242
2009-10-13 14:52:13,943 DEBUG [asyncDelivery84] [] [] Returning session 
com.ibm.mq.jms.mqqueuesess...@1902242 for jms connector 
moboSub2JmsConnector-LNDSBUS1

2009-10-13 14:52:14,120 DEBUG [asyncDelivery64] [] 
[EVENT-ID-32e26d85-95c9-4aa5-8ce3-af4eee3ba68f] Borrowed session 
com.ibm.mq.jms.mqqueuesess...@1902242 for jms connector 
moboSub2JmsConnector-LNDSBUS1
2009-10-13 14:52:14,121 DEBUG [asyncDelivery64] [] 
[EVENT-ID-32e26d85-95c9-4aa5-8ce3-af4eee3ba68f] Creating a proxy for 
com.ibm.mq.jms.mqqueuesess...@1902242
2009-10-13 14:52:14,407 DEBUG [asyncDelivery64] [] [] Returning session 
com.ibm.mq.jms.mqqueuesess...@1902242 for jms connector 
moboSub2JmsConnector-LNDSBUS1

2009-10-13 14:52:14,875 DEBUG [Timer-0] [] [] Physically closing 
com.ibm.mq.jms.mqqueuesess...@1902242 for connector 
moboSub2JmsConnector-LNDSBUS1


2009-10-13 14:52:14,876 DEBUG [asyncDelivery64] [] 
[EVENT-ID-bc393545-9bde-452c-b36c-c8f6a6e0c650] Borrowed session 
com.ibm.mq.jms.mqqueuesess...@1902242 for jms connector 
moboSub2JmsConnector-LNDSBUS1
2009-10-13 14:52:14,876 DEBUG [asyncDelivery64] [] 
[EVENT-ID-bc393545-9bde-452c-b36c-c8f6a6e0c650] Pool 
moboSub2JmsConnector-LNDSBUS1 active/idle count is [21/16], ABC [22]
2009-10-13 14:52:14,876 DEBUG [asyncDelivery64] [] 
[EVENT-ID-bc393545-9bde-452c-b36c-c8f6a6e0c650] Creating a proxy for 
com.ibm.mq.jms.mqqueuesess...@1902242
2009-10-13 14:52:14,931 FATAL [asyncDelivery64] [] 
[EVENT-ID-bc393545-9bde-452c-b36c-c8f6a6e0c650] Failed to dispatch message to 
audit [javax.jms.IllegalStateException: MQJMS1024: session 
closed]javax.jms.IllegalStateException: MQJMS1024: session closed
{noformat}

bq. there is no way the object factory could close an object except in the 
destroyObject() method
I can assure there is only single place where the sessions are closed, and 
that's {{destroyObject}} method of the factory.

I agree, looking at the {{evict}} method, I don't see how/where this could 
possibly happen. The issue could lie in the layer below e.g. the concurrency 
libraries!?

I'll look into creating a reproducible test case that is decoupled from our 
client code. May not be quick though, as it is dependent on threading, 
concurrent high use etc.



> Eviction thread is able to remove (destroy) in-flight (borrowed) objects
> ------------------------------------------------------------------------
>
>                 Key: POOL-151
>                 URL: https://issues.apache.org/jira/browse/POOL-151
>             Project: Commons Pool
>          Issue Type: Bug
>    Affects Versions: 1.5.3
>            Reporter: Hassan Sajjad
>            Priority: Blocker
>
> Under high concurrent use, the eviction thread can temper with an in-use 
> object from the pool, potentially causing catastrophic results, as illustrate 
> in the below log from our use. Note the object - in our case JMSSession is 
> closed in-flight (after message send but before commit), causing the commit 
> to fail with {{javax.jms.IllegalStateException: MQJMS1024: session closed}} 
> error.
> {noformat}
> 2009-10-12 15:08:40,254 DEBUG [asyncDelivery59] Borrowed session 
> com.ibm.mq.jms.mqqueuesess...@40bc88 for jms connector 
> 2009-10-12 15:08:40,341 DEBUG [Timer-0] Physically closing 
> com.ibm.mq.jms.mqqueuesess...@40bc88 for connector 
> 2009-10-12 15:08:40,669 DEBUG [asyncDelivery59] Returning session 
> com.ibm.mq.jms.mqqueuesess...@40bc88 for jms conn
> ector
> 2009-10-12 15:08:40,433 ERROR [asyncDelivery59] Exception caught while 
> committing transaction [com.ibm.mq.jms.mqqueuesess...@40bc88]
> {noformat}

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

Reply via email to