Issue Details (XML | Word | Printable)

Key: DIRSERVER-175
Type: Improvement Improvement
Status: Closed Closed
Resolution: Fixed
Priority: Major Major
Assignee: Unassigned
Reporter: Emmanuel Lecharny
Votes: 0
Watchers: 0
Operations

If you were logged in you would be able to see more operations.
Directory ApacheDS

Basic operations are very costly

Created: 18/Oct/05 08:44 AM   Updated: 31/Aug/06 08:32 AM
Return to search
Component/s: ldap
Affects Version/s: None
Fix Version/s: None

Time Tracking:
Not Specified

Resolution Date: 31/Aug/06 08:32 AM


 Description  « Hide
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 org.apache.asn1.ber.digester.rules.PrimitiveIntDecodeRule@194df96 fired successfully by digester org.apache.asn1.ber.digester.BERDigester@e2fbeb
    4947> --BERDigesterLoggingMonitor -- [DEBUG] Rule org.apache.ldap.common.berlib.asn1.decoder.modify.ModifyRequestEntryDnRule@11c55bb fired successfully by digester org.apache.asn1.ber.digester.BERDigester@e2fbeb
    4949> --BERDigesterLoggingMonitor -- [DEBUG] Rule org.apache.asn1.ber.digester.rules.PrimitiveIntDecodeRule@1406eb6 fired successfully by digester org.apache.asn1.ber.digester.BERDigester@e2fbeb
    4949> --BERDigesterLoggingMonitor -- [DEBUG] Rule org.apache.ldap.common.berlib.asn1.decoder.modify.ModificationItemRule@1248f2b fired successfully by digester org.apache.asn1.ber.digester.BERDigester@e2fbeb
    4950> --BERDigesterLoggingMonitor -- [DEBUG] Rule org.apache.ldap.common.berlib.asn1.decoder.modify.ModifyRequestAttributeValueRule@1336006 fired successfully by digester org.apache.asn1.ber.digester.BERDigester@e2fbeb
    4950> --BERDigesterLoggingMonitor -- [DEBUG] Rule org.apache.asn1.ber.digester.rules.PopOnFinish@1e536d6 fired successfully by digester org.apache.asn1.ber.digester.BERDigester@e2fbeb
    4951> --BERDigesterLoggingMonitor -- [DEBUG] Rule org.apache.ldap.common.berlib.asn1.decoder.modify.ModifyRequestRule@1735b26 fired successfully by digester org.apache.asn1.ber.digester.BERDigester@e2fbeb
    4952> --BERDigesterLoggingMonitor -- [DEBUG] Rule org.apache.ldap.common.berlib.asn1.decoder.search.AndRule@1e708b2 fired successfully by digester org.apache.asn1.ber.digester.BERDigester@e2fbeb
    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

 All   Comments   Work Log   Change History   Subversion Commits      Sort Order: Ascending order - Click to sort in descending order
Emmanuel Lecharny added a comment - 12/Feb/06 06:31 PM
Again, not a bug !

Emmanuel Lecharny added a comment - 31/Aug/06 08:32 AM
Fixed