directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Pierre-Arnaud Marcelot (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (DIRAPI-52) Connection seems to remain opened, leading to 'Too many open files' on some servers
Date Wed, 27 Jul 2011 16:07:10 GMT

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

Pierre-Arnaud Marcelot commented on DIRAPI-52:
----------------------------------------------

After some debugging session with Emmanuel, we found out the following things:
- A connector is initialized at first when the connection is bound.
- Calling the unbind causes the server to close the session with the connection.
- With the connection being closed, the sessionClose() method of the LdapNetworkConnection
class is called
- This method is not disposing the connector but setting it to null
- Afterwards when the close() method is called on the LdapNetworkConnection, it can't dispose
the connector as it has been nullified by the other method.
=> Thus, the connection is still open.

Calling the connector.dispose() method in the sessionClosed() method seem to resolve the issue,
but the following comment found in that method make us think that this change needs to be
double checked:
// DO NOT call connector.dispose(), it is hanging when there is no network connection

We were able to increase to loop to 10,000 iterations with a successful ending.
However, from time to time, we are hitting some NPEs, mainly due to concurrency (one method
nullifying a field used in another method at the same time).

We are currently trying to find the best way to schedule the connector.dispose() method call.

> Connection seems to remain opened, leading to 'Too many open files' on some servers
> -----------------------------------------------------------------------------------
>
>                 Key: DIRAPI-52
>                 URL: https://issues.apache.org/jira/browse/DIRAPI-52
>             Project: Directory Client API
>          Issue Type: Bug
>    Affects Versions: 1.0.0-M4, 1.0.0-M5
>         Environment: various, see description
>            Reporter: Martin Zdila
>            Priority: Critical
>
> Testcase:
> 		final LdapConnectionConfig lcc = new LdapConnectionConfig();
> 		lcc.setLdapHost("ad.example.com");
> 		lcc.setUseSsl(true);
> 		lcc.setLdapPort(LdapConnectionConfig.DEFAULT_LDAPS_PORT);
> 		lcc.setTrustManagers(new NoVerificationTrustManager());
> 		for (int i = 0; i < 100; i++) {
> 			System.out.println(i);
> 			final LdapNetworkConnection connection = new LdapNetworkConnection(lcc);
> 			connection.bind();
> 			final EntryCursor cursor = connection.search("ou=something,dc=example.com", "(&(cn=comeCommonName)(objectClass=person)(sn=*)(givenName=*))",
SearchScope.SUBTREE, "cn");
> 			while (cursor.next()) {
> 				cursor.get();
> 			}
> 			connection.unBind();
> 			connection.close();
> 			Thread.sleep(1000);
> 		}
> Running this on some servers causes many open files and they are growing on each iteration:
> lsof -p <pid>:
> ...
> java    18719 gofer   37u  0000        0,7        0      13 anon_inode
> java    18719 gofer   38r  FIFO        0,6      0t0 9155974 pipe
> java    18719 gofer   39w  FIFO        0,6      0t0 9155974 pipe
> java    18719 gofer   40u  0000        0,7        0      13 anon_inode
> java    18719 gofer   41r  FIFO        0,6      0t0 9155976 pipe
> java    18719 gofer   42w  FIFO        0,6      0t0 9155976 pipe
> java    18719 gofer   43u  0000        0,7        0      13 anon_inode
> java    18719 gofer   44r  FIFO        0,6      0t0 9155977 pipe
> java    18719 gofer   45w  FIFO        0,6      0t0 9155977 pipe
> java    18719 gofer   46u  0000        0,7        0      13 anon_inode
> java    18719 gofer   47r  FIFO        0,6      0t0 9155978 pipe
> java    18719 gofer   48w  FIFO        0,6      0t0 9155978 pipe
> java    18719 gofer   49u  0000        0,7        0      13 anon_inode
> java    18719 gofer   50r  FIFO        0,6      0t0 9155980 pipe
> java    18719 gofer   51w  FIFO        0,6      0t0 9155980 pipe
> java    18719 gofer   52u  0000        0,7        0      13 anon_inode
> java    18719 gofer   53r  FIFO        0,6      0t0 9155981 pipe
> java    18719 gofer   54w  FIFO        0,6      0t0 9155981 pipe
> java    18719 gofer   55u  0000        0,7        0      13 anon_inode
> java    18719 gofer   56r  FIFO        0,6      0t0 9155982 pipe
> java    18719 gofer   57w  FIFO        0,6      0t0 9155982 pipe
> java    18719 gofer   58u  0000        0,7        0      13 anon_inode
> java    18719 gofer   59r  FIFO        0,6      0t0 9155984 pipe
> java    18719 gofer   60w  FIFO        0,6      0t0 9155984 pipe
> java    18719 gofer   61u  0000        0,7        0      13 anon_inode
> java    18719 gofer   62r  FIFO        0,6      0t0 9155985 pipe
> java    18719 gofer   63w  FIFO        0,6      0t0 9155985 pipe
> java    18719 gofer   64u  0000        0,7        0      13 anon_inode
> java    18719 gofer   65r  FIFO        0,6      0t0 9155986 pipe
> java    18719 gofer   66w  FIFO        0,6      0t0 9155986 pipe
> ... and many many more
> This happens on:
> Linux somedns1 2.6.26-2-xen-686 #1 SMP Thu Jan 27 05:44:37 UTC 2011 i686 GNU/Linux
> java version "1.6.0_26"
> Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
> Java HotSpot(TM) Client VM (build 20.1-b02, mixed mode, sharing)
> Also on another platform, but there are slightly less open pipes and anon_inodes:
> Linux somedns2 2.6.26-2-686-bigmem #1 SMP Wed Nov 4 21:12:12 UTC 2009 i686 GNU/Linux
> java version "1.6.0_12"
> Java(TM) SE Runtime Environment (build 1.6.0_12-b04)
> Java HotSpot(TM) Server VM (build 11.2-b01, mixed mode)
> On my local computer I see only couple of open pipes and anon_inodes and they don't grow:
> Linux bono 2.6.38-10-generic #46-Ubuntu SMP Tue Jun 28 15:07:17 UTC 2011 x86_64 x86_64
x86_64 GNU/Linux
> java version "1.6.0_26"
> Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
> Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)
> I've found slightly similar isse here: http://issues.opennms.org/browse/NMS-4631
> New file handlers are being opened by Apache Mina. I am not sure who is responsible for
closing it. In my testcase the connection is properly closed.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Mime
View raw message