[
https://issues.apache.org/jira/browse/DIRSERVER-1642?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13086692#comment-13086692
]
Stefan Seelmann commented on DIRSERVER-1642:
--------------------------------------------
I think Kiran is right and the problem is in JDBM. I looked into BPage.Browser.
There an integer "int index" is used to store the current position. But if the
BTree is modified the elements may be re-ordered in the BPage and the pointer
now points to the wrong element. One idea I have is to modify the BPage.Browser
to not use an int pointer, but to store the key element. Then for the next call
of getNext() or getPrevious() the stored key element is used to lookup the
actual index in the BTree. Of course such a lookup is more expensive than just
incrementing an integer. I'm too tired to test that now.
> Unexpected behaviour in JdbmIndex
> ---------------------------------
>
> Key: DIRSERVER-1642
> URL: https://issues.apache.org/jira/browse/DIRSERVER-1642
> Project: Directory ApacheDS
> Issue Type: Bug
> Reporter: Stefan Seelmann
> Attachments: IndexTest.java
>
>
> During my experiments and tests of removing one-level and sub-level indices
> at least one integration test "SearchAuthorizationIT" failed (the test fails
> recursivelyDelete()). A debugging session showed that the follwing:
> - in recursivelyDelete() multiple search requests are done which leads to
> multiple open cursors in the XDBM search engine
> - an entry is deleted
> - when the open cursors are advanced wrong/unexpected entries are returned
> I was able to create a small test that shows the problem:
> - the index contains six tuples:
> (a,1)
> (b,2)
> (c,3)
> (d,4)
> (e,5)
> (f,6)
> - a cursor over the index is created and advanced two times, the expected
> tuples (a,1) and (b,2) were returned
> - now tuple (c,3) is deleted
> - when the cursor is advanced again the tuple (b,2) is returned again! I had
> expected (d,4).
> Note that this doesn't happen with AvlIndex.
--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira