[
https://issues.apache.org/jira/browse/DIRSERVER-1719?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13266576#comment-13266576
]
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 not
- 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: https://issues.apache.org/jira/browse/DIRSERVER-1719
> 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:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira