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

Kiran Ayyagari commented on DIRAPI-13:
--------------------------------------

Recursively browsing a directory containing large number of entries is not a 
good idea cause the cursors will be left open (and the client keep receiving the
entries) which will definitely lead to OOM.


> Recursively drilling into the directory structure causes 
> java.lang.OutOfMemoryError
> -----------------------------------------------------------------------------------
>
>                 Key: DIRAPI-13
>                 URL: https://issues.apache.org/jira/browse/DIRAPI-13
>             Project: Directory client API
>          Issue Type: Bug
>    Affects Versions: 0.1.0
>         Environment: Windows XP SP3
>            Reporter: Sebu Koleth
>
>         private static void recursivelyDescend(LdapConnection connection, 
> String dn) {
>               System.out.println("Searching for children of dn : " + dn);
>               try 
>               {
>                       Cursor<SearchResponse> cursor = connection.search(dn, 
> "(objectclass=*)", SearchScope.ONELEVEL, "*");
>                       while (cursor.next())
>                       {
>                               SearchResponse response = cursor.get();
>                               if(response instanceof SearchResultEntry) {
>                                       recursivelyDescend(connection, 
> ((SearchResultEntry)response).getObjectName().getName());
>                               } else {
>                                       System.out.println("Unusable response 
> type " + response);
>                               }
>                       }
>               } catch (LdapException le) {
>                       le.printStackTrace();
>               } catch (Exception e) {
>                       e.printStackTrace();
>               }
>       }
> The above piece of code is exercised after obtaining an SSL-based LDAP 
> connection. The target server has hundreds of thousands of records at 
> different levels. Logging at WARN level shows a *lot* of messages :
> WARN NioProcessor-1 org.apache.directory.shared.asn1.ber.Asn1Decoder - The 
> PDU has been fully decoded but there are still bytes in the buffer.
> The code chokes at processing the 52nd entry that is two levels deep from the 
> base DN. At this level there are around 1000 sub-levels.

-- 
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