Jonathan Wilbur created DIRSTUDIO-1294:
------------------------------------------

             Summary: ADS queries all first-level DSEs one-by-one at the start 
of the session
                 Key: DIRSTUDIO-1294
                 URL: https://issues.apache.org/jira/browse/DIRSTUDIO-1294
             Project: Directory Studio
          Issue Type: Bug
    Affects Versions: 2.0.0-M17
         Environment: OS Name:                   Microsoft Windows 10 Pro
OS Version:                10.0.19044 N/A Build 19044
OS Manufacturer:           Microsoft Corporation
OS Configuration:          Standalone Workstation
OS Build Type:             Multiprocessor Free
Registered Owner:          Windows User
Registered Organization:
Product ID:                00330-80000-00000-AA967

            Reporter: Jonathan Wilbur


I have an LDAP server that has many first-level DSEs. (One for each country.) 
When I connect  / start a session / click on the "DIT Root," it takes about 30 
seconds the application to display entries. When I look in the LDAP server's 
logs, I see that ADS:
 * Makes a base-object-scoped request for the Root DSE.
 * Makes a base-object-scoped request for the Root DSE's subschema subentry.
 * Makes a one-level-scoped request for the Root DSE's subordinates.
 * {color:#FF0000}Makes a single base-object-scoped request for each of the 
Root DSE's subordinates.{color}

The last bullet point is the problem, and from what I can see it is totally 
unnecessary: both the one-level search (bullet point 3) and the one-by-one 
base-object searches (bullet point 4) both request the same single attribute: 
`objectClass`.

This probably went unnoticed, because in most LDAP servers, there is just a 
single subordinate under the root, such as `DC=com` or `O=Acme, Inc.` or 
`C=US`, but in my case, I have several hundred. This means that, after querying 
all of these entries with the one-level search, it performs several hundred 
base-object searches for the same exact information again before the UI becomes 
responsive.
h3. Code Location

I believe this issue stems from this section of code within 
{{{}plugins\ldapbrowser.core\src\main\java\org\apache\directory\studio\ldapbrowser\core\jobs\InitializeRootDSERunnable.java{}}}:

 
{{        for ( IEntry entry : rootDseEntries.values() )}}
{{        {}}
{{            initBaseEntry( entry, dummyMonitor );}}
{{        }}}
I am currently experimenting with commenting out this section of the code, and 
it didn't seem to work, but I am not really sure that I actually fully rebuilt 
the application, and I also get the impression that there are actually two code 
locations that do this, but I have yet to confirm this.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to