[ 
https://issues.apache.org/jira/browse/DIRAPI-342?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16835190#comment-16835190
 ] 

Emmanuel Lecharny commented on DIRAPI-342:
------------------------------------------

Just ran your test on my Mac OS X box, and I can run it more than 500 000 times 
in the loop before getting an error. Teh onkly thing I have to tune is the tcp 
TIME_WAIT parameter ({{net.inet.tcp.msl}} which default to 15s, and that I set 
to 1s (otherwise with the default value, it blocks after 16 000 loops).

But this is not a bug: at some point, all the socket are in TIME_WAIT, and the 
file_descriptor limit is reached on my machine (It's set to 16 000 more or 
less). There is nothing we can do, and chaningh the TIME_WAIT delay is not 
reasonnable.

On linux, the config for this parameter is given by :
{code}
cat /proc/sys/net/ipv4/tcp_fin_timeout
{code}

Which value do you have ?

> Unbind breaks connection
> ------------------------
>
>                 Key: DIRAPI-342
>                 URL: https://issues.apache.org/jira/browse/DIRAPI-342
>             Project: Directory Client API
>          Issue Type: Bug
>    Affects Versions: 2.0.0.AM2
>            Reporter: Stefan Seelmann
>            Priority: Major
>             Fix For: 2.0.0.AM3, 2.0.0
>
>
> The DelegatedAuthIT/DelegatedAuthOverSslIT/DelegatedAuthOverTlsIT tests fail 
> randomly (I try to stabilize tests on Windows, but also happens on Jenkins). 
> They all do multiple bind() and unbind() on the same connection, it seems the 
> unbind() is the reason.
> A simple test to reproduce the problem (on Linux):
> {code}
>     @Test
>     public void testSimpleBindAndUnbindLoop() throws Exception
>     {
>         try ( LdapConnection connection = new LdapNetworkConnection( 
> Network.LOOPBACK_HOSTNAME,
>             getLdapServer().getPort() ) )
>         {
>             for ( int i = 0; i < 10000; i++ )
>             {
>                 System.out.println( i );
>                 connection.bind( "uid=admin,ou=system", "secret" );
>                 assertTrue( connection.isAuthenticated() );
>                 connection.unBind();
>                 assertFalse( connection.isAuthenticated() );
>                 // Thread.sleep( 10L );
>             }
>         }
>     }
> {code}
> Without the unbind() or when sleeping for 10ms it works fine.
> Otherwise I saw 3 different errors:
> {code}
> org.apache.directory.ldap.client.api.exception.InvalidConnectionException: 
> ERR_04108_INVALID_CONNECTION Cannot connect on the server, the connection is 
> invalid
>       at 
> org.apache.directory.ldap.client.api.LdapNetworkConnection.checkSession(LdapNetworkConnection.java:574)
>       at 
> org.apache.directory.ldap.client.api.LdapNetworkConnection.bindAsync(LdapNetworkConnection.java:1596)
>       at 
> org.apache.directory.ldap.client.api.LdapNetworkConnection.bind(LdapNetworkConnection.java:1488)
>       at 
> org.apache.directory.ldap.client.api.AbstractLdapConnection.bind(AbstractLdapConnection.java:134)
>       at 
> org.apache.directory.ldap.client.api.AbstractLdapConnection.bind(AbstractLdapConnection.java:118)
> {code}
> {code}
> org.apache.directory.api.ldap.model.exception.LdapException: 
> ERR_04169_RESPONSE_QUEUE_EMPTIED The response queue has been emptied, no 
> response was found.
>       at 
> org.apache.directory.ldap.client.api.LdapNetworkConnection.bind(LdapNetworkConnection.java:1534)
>       at 
> org.apache.directory.ldap.client.api.AbstractLdapConnection.bind(AbstractLdapConnection.java:134)
>       at 
> org.apache.directory.ldap.client.api.AbstractLdapConnection.bind(AbstractLdapConnection.java:118)
> Caused by: org.apache.directory.api.ldap.model.exception.LdapException: 
> ERR_04170_TIMEOUT_OCCURED TimeOut occurred
>       at 
> org.apache.directory.ldap.client.api.LdapNetworkConnection.bind(LdapNetworkConnection.java:1505)
> {code}
> {code}
> org.apache.directory.api.ldap.model.exception.LdapProtocolErrorException: 
> PROTOCOL_ERROR: The server will disconnect!
>       at 
> org.apache.directory.api.ldap.model.message.ResultCodeEnum.processResponse(ResultCodeEnum.java:2137)
>       at 
> org.apache.directory.ldap.client.api.AbstractLdapConnection.bind(AbstractLdapConnection.java:136)
>       at 
> org.apache.directory.ldap.client.api.AbstractLdapConnection.bind(AbstractLdapConnection.java:118)
>       at 
> org.apache.directory.shared.client.api.operations.bind.SimpleBindRequestTest.testSimpleBindAndUnbindLoop(SimpleBindRequestTest.java:664)
> {code}



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to