[ 
https://issues.apache.org/jira/browse/DIRSERVER-2049?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14310599#comment-14310599
 ] 

Emmanuel Lecharny commented on DIRSERVER-2049:
----------------------------------------------

Sigh...

The pb here is that the search request uses an index which get modified while 
being used. We have tried to protect such request from concurrent modification 
by adding locks, but it's a very heavy weight 'solution' (so heavy that it's 
not really a solution). Actually, what we do is that we build a set of 
candidates (which is just a list of UUIDs) and we iterate over it to check if 
this list is valid or not. Constructing this list is fast, and we can do it 
using a lock too, but this lock will be hold for a shortest period of time. 
Then, we have to check that each entry we pull from the server exists.

Seems like we are missing a step here, and we need to check either the lock or 
the way we fetch the entry.

OTOH, those are just workarounds, and we are expecting to get rid of the lock 
and the check with the new Backend (Mavibot) which is a MVCC btree : you will 
always have access to the data, whatever changes occurs after the search is 
started - even if those data are not anymore up to date -

> Queries interrupted with delete/add operations
> ----------------------------------------------
>
>                 Key: DIRSERVER-2049
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-2049
>             Project: Directory ApacheDS
>          Issue Type: Bug
>    Affects Versions: 2.0.0-M19
>         Environment: RHEL6 / Java jdk1.7.0_55
>            Reporter: David Foust
>
> We were testing ApacheDS again here in our organization since DIRSERVER-1992 
> was resolved. I'm finding that with 10000 people entries, if I perform the 
> following in order my query fails:
> 1. Query all objectClass=person
> 2. (while query is still running) - Delete any single person
> 3. (while query is still running) - Recreate same entry
> 4. Query will stop, error reports:
> 02:50:37 PM: List failed
> Root error: [LDAP: error code 80 - OTHER: failed for MessageType : 
> SEARCH_REQUEST
> Message ID : 5
> The delete and add operation performs as expected. The query works as 
> expected if the del/add operation doesn't happen before it is finished.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to