OPENDJ-1602 New pluggable storage based backend

Removed Storage.openCursor() in order to always open a cursor from a ReadableStorage object.
IndexQueryFactoryImpl required some rejuggling: Previously, we had one IndexQueryFactory object for each AttributeIndex in resident memory. After current change we will create one IndexQueryFactory object before evaluating each leaf sub filters. It would be worth revisiting this at some point in the future.


Storage.java:
Removed openCursor().

ExportJob.java:
In exportLDIF() and exportContainer(), created and used a ReadableStorage to open a cursor.



Index.java, NullIndex.java:
In readRange(), added a ReadableStorage parameter to open a cursor.

AttributeIndex.java:
Added a ReadableStorage parameter to the constructor.
Removed indexQueryFactory field.
Added indexingOptions field which was previously held inside the indexQueryFactory.
Extracted method getIndexById() and made it public.
In several evaluate*() methods, added an IndexQueryFactory parameter.

EntryContainer.java:
Consequence of the change to the AttributeIndex constructor.

IndexFilter.java:
In evaluate*Filter(), created a new IndexQueryFactoryImpl before calling AttributeIndex.evaluate*() methods.

IndexQueryFactoryImpl.java:
Changed the constructor to accept an AttributeIndex parameter + removed the two previous parameters which can be inferred from the new parameter.
In several methods, make use of AttributeIndex.getIndexById() method.
In getIndexingOptions(), now call AttributeIndex.getIndexingOptions().

git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11480 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 New pluggable storage based backend

Changed TreeName implementation from a List<String> names to a String baseDN + a String indexId.

TreeName.java:
Removed of(), child(), isSuffixOf().
Renamed getSuffix() to getBaseDN().
Renamed replaceSuffix() to replaceBaseDN().
Renamed getIndex() to getIndexId().

*.java:
Consequence of the changes to TreeName.

git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11481 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 New pluggable storage based backend

Index.java:
In updateWithRMW(), we must read with RMW. How did that bug go through the cracks?

git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11482 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 (CR-5566) New pluggable storage based backend

Split Persistit backend configuration into two:

* PluggableBackendConfiguration: configuration expected to be common for all pluggable backends
* PersistitBackendConfiguration: configuration expected to be specific to the Persistit backend.



git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11483 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 (CR-5566) New pluggable storage based backend

Add LDAP schema for PluggableBackend.


git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11484 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1701 Add upgrade task to remove "File System Entry Cache" 

Upgrade.java, tools.properties:
Added an upgrade task to remove config entry "dn: cn=File System,cn=Entry Caches,cn=config".
Changed messages by removing unneeded "_1" from the message names. Use of "_1" in name should be reserved when there are multiple upgrade tasks in a single commit.

git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11486 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 (CR-5566) New pluggable storage based backend

Add index configuration definitions for pluggable backends because the configuration framework doesn't like it when we reuse the indexes from the local DB backend.


git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11487 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 New pluggable storage based backend

Reduced the number of compilation errors in package "org.opends.server.backends.pluggable".
Fixed NPEs where we passed null txn values as parameters.

git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11490 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 (CR-5566) New pluggable storage based backend

Minor code cleanup of VLV indexing:

* remove unused method parameters
* add missing constructor.


git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11491 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 (CR-5566) New pluggable storage based backend

Minor code cleanup of VLV indexing:

* remove unused code
* align IndexBuffer method and class naming.



git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11492 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 (CR-5566) New pluggable storage based backend

Add a reminder to revisit the IndexBuffer flushing algorithm because it is quite surprising.


git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11493 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 (CR-5566) New pluggable storage based backend

Clean up VLV indexing:

* VLVKeyComparator is no longer needed because our storage engines won't need custom comparators. Move remaining functionality into VLVIndex
* improve encapsulation in VLVIndex
* remove duplicate code from VLVIndex.

This change is just code cleanup: the VLV indexes will not work until we have fixed up the key normalization to be compatible with memcmp().


git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11494 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 (CR-5566) New pluggable storage based backend

Enable build of Pluggable/Persistit backend with the following restrictions:

* these packages are excluded from Checkstyle
* JECompressedSchema is excluded from compilation.


git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11495 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 (CR-5566) New pluggable storage based backend

Fix bug in config framework that prevented creation of Persistit backends.


git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11496 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1602 (CR-5566) New pluggable storage based backend

Generate a more helpful error message when storage errors occur.

git-svn-id: https://svn.forgerock.org/opendj/branches/opendj3-server-dev@11497 41b1ffd8-f28e-4786-ab96-9950f0a78031