directory-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Emmanuel Lecharny (JIRA)" <>
Subject [jira] [Commented] (DIRSERVER-1719) [Perf] Modify the way we process entries to be returned
Date Wed, 02 May 2012 14:08:51 GMT


Emmanuel Lecharny commented on DIRSERVER-1719:

One other idea :
- we could modify the way the filters so that they don't process Entry, but Attribute. Now
when we loop on all the original entry (the one we fetched from the backend) attributes, we
will go through all the filters to know if we should return the attribute, or discard it.
- we will have to process the collective attribute in a bit different way, as they are added
to the result entry, but basically, this is quite the same mechanism. We get back the added
attributes, then we check against the other filters if the attribute should be returned or
- the ACI filter is also a bit different, because it checks the Values too. Here, the filter
could return a copy of the modified Attribute, if and only if the Attribute has already been
accepted by all the other filters (considering that the ACI filter will be the last one to
proceed, this is ok).

At the end, we don't have to clone the full entry, ot do we have to store intermediary modifications.
We will just do that once, just when we generate the entry to return. If this is called by
the network layer, we won't even create an entry, but serialize it directly into a ByteBuffer.
> [Perf] Modify the way we process entries to be returned
> -------------------------------------------------------
>                 Key: DIRSERVER-1719
>                 URL:
>             Project: Directory ApacheDS
>          Issue Type: Improvement
>    Affects Versions: 2.0.0-M6
>            Reporter: Emmanuel Lecharny
>             Fix For: 2.0.0-M8
> Right now, we clone the entries we will return to the client just after having fetched
them from the backend. This is necessary as we will remove and add some attributes and values
from those entries, to comply with the user request.
> Another idea would be to compute the attributes (and values) to return, and when done,
create a new entry with all those attributes.
> As a user rarely requires all the attributes (including the operational ones), this might
save some processing, as in the current system we copy all the attributes, then we remove
some of them.
> Even better, when the CoreSession is called from the LdapProtocol layer, we don't have
to copy the attributes at all, we just have to write on the socket only the required attributes.
This will be even faster than what we currently do.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message