Backport CR-4302 Fix for OPENDJ-1515: Update password storage section to show PKCS5S2 support

git-svn-id: https://svn.forgerock.org/opendj/trunk@10947 41b1ffd8-f28e-4786-ab96-9950f0a78031
CR-4304 Fix for OPENDJ-1521: Document addrate tool

git-svn-id: https://svn.forgerock.org/opendj/trunk@10950 41b1ffd8-f28e-4786-ab96-9950f0a78031
Backport CR-4304 Fix for OPENDJ-1521: Document addrate tool

git-svn-id: https://svn.forgerock.org/opendj/trunk@10952 41b1ffd8-f28e-4786-ab96-9950f0a78031
Backport CR-4305 Fix for OPENDJ-1522: Admin Guide missing instructions on how to create a new suffix on existing backend

git-svn-id: https://svn.forgerock.org/opendj/trunk@10954 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1441 (CR-4303) Persistent searches on external changelog do not return changes for new replicas and new domains

Fixing a deadlock situation with ExternalChangeLogTest.
When removing domains, the cursors were not properly closed by ChangeNumberIndexer.run() before calling Object.wait().
Relied on the fact that DBCursors are not thread safe so if client code calls MultiDomainDBCursor.removeDomain(), then the cursor is immediately removed.
I did not see the problem before because unit tests on trunk execute by default with file based changelog db.


ChangeNumberIndexer.java:
In run(), simplified the code that removes the domain cursors.

CompositeDBCursor.java:
Removed removeNoLongerNeededCursors() and removedCursorsIterator() + extracted method removeCursor() from it.
Added another removeCursor() which also removes from the exhaustedCursors.

MultiDomainDBCursor.java
Consequence of the change to CompositeDBCursor.
Removed removeDomains field and removedCursorsIterator().
In removeDomain(), now call CompositeDBCursor.removeCursor().

DomainDBCursor.java:
Consequence of the change to CompositeDBCursor.

git-svn-id: https://svn.forgerock.org/opendj/trunk@10955 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1441 (CR-4244) Persistent searches on external changelog do not return changes for new replicas and new domains

Follow up of r10944 (and r10912 originally).
Update ReplicaCursors with new replica offline information (For example, when replica came online or when there is more up to date replica offline information).
Renamed ReplicaOfflineCursor(Test) to ReplicaCursor(Test)



FileChangelogDB.java, JEChangelogDB.java:
Added replicaCursors Map field.
In getCursorFrom(), registered replicaCursors.
In unregisterCursor(), handled ReplicaCursors.
In notifyReplicaOnline() and notifyReplicaOffline(), called new method updateCursorsWithOfflineCSN().

ReplicaOfflineCursor.java: RENAMED to ReplicaCursor
Removed returnReplicaOfflineMsg field.
Changed replicaOfflineMsg field from ReplicaOfflineMsg to AtomicReference<ReplicaOfflineMsg>.
In next(), rewrote the code to support resetting the replica offline CSN + added isReplicaOfflineMsgOutdated() and setOfflineCSN()
Added replicaID and domainDB fields + called ReplicationDomainDB.unregisterCursor() in close() + added getReplicaID().

ReplicaOfflineCursorTest.java: RENAMED to ReplicaOfflineCursorTest
Consequence of the change to ReplicaCursor.

ChangeNumberIndexer.java:
Removed outdated TODO

git-svn-id: https://svn.forgerock.org/opendj/trunk@10958 41b1ffd8-f28e-4786-ab96-9950f0a78031
Fix OPENDJ-1190: Under rare circumstances the DS replication recovery thread (RSUpdater) can spin

git-svn-id: https://svn.forgerock.org/opendj/trunk@10959 41b1ffd8-f28e-4786-ab96-9950f0a78031
CR-4307 Fix for OPENDJ-1525: Document new maxDuration and warmUpDuration options for xxxrate tools

git-svn-id: https://svn.forgerock.org/opendj/trunk@10961 41b1ffd8-f28e-4786-ab96-9950f0a78031
OPENDJ-1206 (CR-4261) Create a new ReplicationBackend/ChangelogBackend to support cn=changelog

Implemented PositionStrategy.ON_MATCHING_KEY for JEChangelogDB.getCursorFrom(DN baseDN, int serverId).



JEChangelogDB.java, JEReplicaDB.java:
Implemented PositionStrategy.ON_MATCHING_KEY.

JEReplicaDBCursor.java:
Added new field positionStrategy.
Simplified code in next() + added gotoNext().

ReplicationDB.java:
In openReadCursor(), added PositionStrategy parameter.
Made createReplicationKey() handle null CSNs.
Inner class ReplServerDBCursor now implement DBCursor + Added getRecord() + Made next(), now return boolean instead of UpdateMsg + Extracted method computeCurrentRecord().
Added new field "UpdateMsg currentRecord".
Added PositionStrategy parameter to ReplServerDBCursor ctor + protected special code for PositionStrategy.AFTER_MATCHING_KEY.


JEReplicaDBTest.java:
Added test cases for new PositionStrategy ON_MATCHING_KEY.
Split assertFoundInOrder() in two: one each for AFTER_MATCHING_KEY and ON_MATCHING_KEY.
In testGenerateCursorFrom(), changed the code to cover all CSNs.
Extracted method assertNextCSN() and shutdown().
Used SoftAssertions.

git-svn-id: https://svn.forgerock.org/opendj/trunk@10964 41b1ffd8-f28e-4786-ab96-9950f0a78031