Thanks to Kiran and Emmanuel we were able to get the big bang branch (bbb) compiling and passing all unit tests and integration tests over the course of the last week. A job well done thanks to some great collaboration.
The bbb now holds a version of ApacheDS which uses Cursors instead of NamingEnumerations to carry the results of list() and search() operations. Also the JDBM store and partition implementation was revamped with various new optimizations along with an additional system index. Search has been considerably altered and simplified as a result of these changes. Note that we decided to use our own Cursor interface instead of the JNDI NamingEnumerations because of a few reasons:
(1) Cursors can be positioned after creation.
- This prevents many problems and opens the door for some new
features in the server. NamingEnumeration creation requests to
the search engine must specify direction.
- Extraction of search from Partitions will now be possible which is
needed to be able to implement virtualization.
(2) Cursors decouple advances (i.e. next()) from object lookups (get()).
- Allows for lazy candidate evaluation which enables us to add
filters for entries after creation without missing entries due to
prefetch operations used NamingEnumerations. NEs need unlike
Cursors need to prefetch entries since they must return entries
on next() operations.
(3) Cursors support element positioning and bi-directional traversal.
(4) Remove the JNDI dependency for NamingEnumeration and it's limitations.
Now we have some options. We can continue removing JNDI constructs and workarounds introduced to handle it's shortcommings. This can finish the rest of Phase III in the big bang effort. Hopefully at this point we can (with some other changes on our roadmap) release (1.5.4) the big bang after promoting it to the trunk. Until then we can release 1.5.3 which is siting in the trunk now.
We could merge what's been altered in the trunk into the bbb and just release 1.5.3 after Phase III but I personally think we should just release 1.5.3 ASAP.