Basic operations are very costly
--------------------------------

         Key: DIRLDAP-61
         URL: http://issues.apache.org/jira/browse/DIRLDAP-61
     Project: Directory LDAP
        Type: Improvement
    Reporter: Emmanuel Lecharny


A basic operation like adding a single attribute call many times methods like 
parsing the DN, or lookup the database. 

For instance, in the following test, where the attribute Description is added 
to an existing entry, there are :
26 alls to DnParser("cn=tori amos,ou=system") method,
8 calls to DnParser("ou=services,ou=configuration,ou=system") method,
8 calls to DnParser("ou=configuration,ou=system") method,
8 calls to DnParser("ou=system") method.

For information, on my computer, 1 000 000 parsing of the DN "cn=tori 
amos,ou=system" is done in 24,490s, so doing it 26 times cost around 0,6 ms.

Here are some logs demonstrating this issue :

    4945> --ModifyAddTest                 -- [ INFO] --------------> 
testAddExistingAttributeValue 
    4946> --BERDigesterLoggingMonitor     -- [DEBUG] Rule [EMAIL PROTECTED] 
fired successfully by digester [EMAIL PROTECTED]
    4947> --BERDigesterLoggingMonitor     -- [DEBUG] Rule [EMAIL PROTECTED] 
fired successfully by digester [EMAIL PROTECTED]
    4949> --BERDigesterLoggingMonitor     -- [DEBUG] Rule [EMAIL PROTECTED] 
fired successfully by digester [EMAIL PROTECTED]
    4949> --BERDigesterLoggingMonitor     -- [DEBUG] Rule [EMAIL PROTECTED] 
fired successfully by digester [EMAIL PROTECTED]
    4950> --BERDigesterLoggingMonitor     -- [DEBUG] Rule [EMAIL PROTECTED] 
fired successfully by digester [EMAIL PROTECTED]
    4950> --BERDigesterLoggingMonitor     -- [DEBUG] Rule [EMAIL PROTECTED] 
fired successfully by digester [EMAIL PROTECTED]
    4951> --BERDigesterLoggingMonitor     -- [DEBUG] Rule [EMAIL PROTECTED] 
fired successfully by digester [EMAIL PROTECTED]
    4952> --BERDigesterLoggingMonitor     -- [DEBUG] Rule [EMAIL PROTECTED] 
fired successfully by digester [EMAIL PROTECTED]
    4952> --DnParser                      -- [DEBUG] Parsing DN 'cn=Tori 
Amos,ou=system'
    4953> --DnParser                      -- [DEBUG] Parsing DN 'cn=Tori 
Amos,ou=system'
    4955> --DnParser                      -- [DEBUG] Parsing DN 
'ou=services,ou=configuration,ou=system'
    4955> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4956> --DnParser                      -- [DEBUG] Parsing DN 
'ou=configuration,ou=system'
    4957> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4957> --DnParser                      -- [DEBUG] Parsing DN 'ou=system'
    4959> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4962> --DefaultDirectoryPartitionNexus-- [DEBUG] Check if DN 'cn=tori 
amos,ou=system' exists.
    4963> --DnParser                      -- [DEBUG] Parsing DN 
'ou=services,ou=configuration,ou=system'
    4965> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4966> --DnParser                      -- [DEBUG] Parsing DN 
'ou=configuration,ou=system'
    4967> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4971> --DnParser                      -- [DEBUG] Parsing DN 'ou=system'
    4972> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4973> --DnParser                      -- [DEBUG] Parsing DN 
'ou=services,ou=configuration,ou=system'
    4974> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4975> --DnParser                      -- [DEBUG] Parsing DN 
'ou=configuration,ou=system'
    4977> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4978> --DnParser                      -- [DEBUG] Parsing DN 'ou=system'
    4979> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4980> --DnParser                      -- [DEBUG] Parsing DN 
'ou=services,ou=configuration,ou=system'
    4981> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4981> --DnParser                      -- [DEBUG] Parsing DN 
'ou=configuration,ou=system'
    4984> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4984> --DnParser                      -- [DEBUG] Parsing DN 'ou=system'
    4985> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4986> --DnParser                      -- [DEBUG] Parsing DN 
'ou=services,ou=configuration,ou=system'
    4987> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4990> --DnParser                      -- [DEBUG] Parsing DN 
'ou=configuration,ou=system'
    4991> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4992> --DnParser                      -- [DEBUG] Parsing DN 'ou=system'
    4993> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4994> --DnParser                      -- [DEBUG] Parsing DN 
'ou=services,ou=configuration,ou=system'
    4996> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4997> --DnParser                      -- [DEBUG] Parsing DN 
'ou=configuration,ou=system'
    4998> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    4998> --DnParser                      -- [DEBUG] Parsing DN 'ou=system'
    4999> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    5001> --DnParser                      -- [DEBUG] Parsing DN 
'ou=services,ou=configuration,ou=system'
    5002> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    5003> --DnParser                      -- [DEBUG] Parsing DN 
'ou=configuration,ou=system'
    5004> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    5006> --DnParser                      -- [DEBUG] Parsing DN 'ou=system'
    5007> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    5009> --DnParser                      -- [DEBUG] Parsing DN 
'ou=services,ou=configuration,ou=system'
    5010> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    5011> --DnParser                      -- [DEBUG] Parsing DN 
'ou=configuration,ou=system'
    5014> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    5015> --DnParser                      -- [DEBUG] Parsing DN 'ou=system'
    5016> --DnParser                      -- [DEBUG] Parsing DN 'cn=tori 
amos,ou=system'
    5018> --ModifyAddTest                 -- [ INFO] <-------------- 
testAddExistingAttributeValue with error

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to