[
https://issues.apache.org/jira/browse/DIRAPI-200?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14194310#comment-14194310
]
Emmanuel Lecharny commented on DIRAPI-200:
------------------------------------------
Like we are not checking the connection status before we push it back to the
pool :
{code}
public void releaseConnection( LdapConnection connection ) throws
LdapException
{
try
{
super.returnObject( connection );
{code}
This is super bad. The connection might be in an intermediary state, which
forbids it to be used again for a few ms. With the test, we are hitting thise
use case.
> unBind() followed by bind() on the same connection may throw an
> IllegalStateException
> -------------------------------------------------------------------------------------
>
> Key: DIRAPI-200
> URL: https://issues.apache.org/jira/browse/DIRAPI-200
> Project: Directory Client API
> Issue Type: Bug
> Affects Versions: 1.0.0-M23
> Reporter: lucas theisen
>
> Not sure if this even should be allowed but the fact that it can result in an
> exception is disconcerting. I added a test case to
> {{LdapConnectionPoolTest}} (with the {{unBind()}} currently commented out)
> that can be used to reproduce this issue.
> The main question here, in my mind, is whether or not this should be allowed.
> If not allowed, we should immediately throw a more reasonable exception if
> any operation is attempted on an {{LdapConnection}} that has had {{unBind()}}
> called on it. Perhaps still an {{IllegalStateException}}, but maybe with a
> message stating _connection no longer valid after unBind()_. More
> importantly, this should happen every time, rather than just when the race
> condition bears its ugly face. For more discussion, see [this email
> chain|http://mail-archives.apache.org/mod_mbox/directory-dev/201407.mbox/%3CEE6ADC61AF2D71408E4FA7F9517DB7710A9C07E5%40IMCMBX03.MITRE.ORG%3E].
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)