[
https://issues.apache.org/jira/browse/DIRSERVER-1642?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Selcuk Aya updated DIRSERVER-1642:
----------------------------------
Attachment: jdbm1.diff
A basic working version for the jdbm versioned Btree.
SnapshotBtree: unit test for the versioned btree. Demonstrates consistent
browsing actions while tree is modified.
LRUCache:implements a versioned lru cache. As new versions are created, part of
the cache is used for storing previous versions of Btree pages. Concurrent
read/write to a BPage is synchronized here.
ActionContext.java, ActionVersioning.java: basically keeps track of the
versionassigned to the action. When client enters an action, its action context
is stored in a thread local variable. ActionVersioning keeps track of the next
readwrite action version and the minimum read version.
BPage and BTree:as updates are done to a page, they are copied on write at
thislevel. Also browser keeps track of its action context.
> 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: DIRSERVER-1642.patch, IndexTest.java, jdbm1.diff
>
>
> 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