19 Jan, 2015

2 commits


03 Dec, 2014

1 commit


08 Oct, 2014

1 commit


04 Sep, 2014

1 commit

  • …should not return the base changelog entry
    
    I did the following changes:
    
    - Persistent searches on cn=changelog with changesOnly=true no longer return the base changelog entry
    - Fixed a functional bug with setting hasSubordinates on the base changelog entry:
    -- hasSubordinates must be computed regardless of the search parameters, result can also be cached in memory once and for all
    - As a consequence, it means we can immediately return the base changelog entry for initial searches without even looking for any subordinate changelog entries.
    - Fixed a race condition when registering persistent searches: first set the cookie in the attachments then register the persistent searches
    - implementing numSubordinates() was not required and it might be buggy, so returned -1 instead.
    
    
    ChangelogBackend.java:
    In notifyEntryAdded() (a.k.a. persistent search phase), never return the base changelog entry.
    Removed EntrySender and moved all its methods back into ChangelogBackend + stored the MultiDomainServerState cookie as an attachment of the SearchOperation.
    Renamed search*() to internalSearch*().
    In hasSubordinates(), reimplemented it in a more efficient way + added baseChangelogHasSubordinates() and baseEntryHasSubordinates field to memoize its result.
    In numSubordinates(), is not required, so just returned -1 + removed NumSubordinatesSearchOperation.
    In registerPersistentSearch(), register the persistent searches after setting the cookie attachment on the search operation
    Completed javadocs.
    
    In registerPersistentSearch(), forced changesOnly=true persistent searches to never return the changelog base entry.
    Renamed Entry.hasReturnedBaseEntry field to mustReturnBaseEntry to fit the fact the changelog base entry might never be returned + inverted all the boolean expressions related to this field.
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10990 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

21 Aug, 2014

1 commit

  • to support cn=changelog
    CR-4083
    
    Implementation of core features of the changelog backend:
    * Initialization and finalization of the backend
    * Search of the changelog, in cookie mode (with a cookie control) and
      draft compat mode (by change number)
    
    Note that :
    * The support for persistent searches is not implemented yet.
    * The changelog backend is currently not branched into code, i.e
     the directory server still uses the ECL workflow for "cn=changelog",
     because it is not possible to enable both changelog backend and ECL
     workflow at the same time (waiting for psearches implementation
    before branching the new code)
    
    Code changes:
    * ChangelogBackend.java: 
       - implementation of search(), hasSubordinates(),  numSubordinates(),
         and getEntryCount() methods 
    
    * ReplicationServer.java:
       - new dependency on ChangelogBackend and ECLEnabledDomainPredicate
       - new constructor with ECLEnabledDomainPredicate argument
       - new methods enableExternalChangeLog() and shutdownExternalChangelog()
         as future replacement of enabledECL() and shutdownECL()
       - new method getDomainDNs(Set<DN>) for retrieval of domain DNs but an 
         excluded set of dns
       - new method validateServerState(MultiDomainServerState, Set<DN>) for 
         checking coherency of given state with the replication server
    
    * ReplicationDomainDB.java: 
       - new method getCursorFrom(MultiDomainServerState, PositionStrategy, Set<DN>)
         that exclude a given set of domain DNs from the cursor obtained
    
    * FileChangelogDB.java, JEChangelogDB.java:
       - implementation of new method 
         getCursorFrom(MultiDomainServerState, PositionStrategy, Set<DN>)
    
    * ECLEnabledDomainPredicate.java, ECLMultiDomainDBCursor.java:
      - update visibility to public in order to use these classes in ChangelogBackend
    
    * ChangelogBackedTestCase.java:
       - test of ChangelogBackend class, built from ExternalChangeLogTest.java,
         with lots of renaming, refactoring, cleaning compared to original class
       - majority of tests are disabled until the changelog backend is branched into
         code (as these tests require a running server)
    
    * MonitorTest.java:
      - update creation of  ReplicationServer class to use a custom 
        ECLEnabledDomainPredicate
      
     * replication.properties:
       - add messages for changelog backend
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10970 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     

22 Jul, 2014

1 commit

  • …kend to support cn=changelog
    
    Merged + corrected backend error messages by passing in the backendID into the error messages + fixed translations (!?!)
    Started implementing ChangelogBackend by adding error messages.
    Used Collections.emptySet() for supported controls and / or features, where applicable.
    Generecized Backend class with the type of the configuration object + applied specific types to sub-classes of Backend.
    Code cleanups + factorized code by extracting methods + ran AutoRefactor.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10923 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

21 Jul, 2014

2 commits

  • to support cn=changelog
    CR-4052
    
    Revert previous changes corresponding to CR-4052 as a better approach is to implement 
    the processing of  "Changelog Exchange Control" directly in the changelog backend.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10921 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     
  • to support cn=changelog
    CR-4052
    
    Preparatory work for the changelog backend: make the "Changelog Exchange Control"
     available to the backend when search(SearchOperation) method is called 
    
    * LocalBackendSearchOperation#handleRequestControls() method:
       handle the "Changelog Exchange Control" : add it to the SearchOperation 
       if provided in the request
    
    * SearchOperation, SearchOperationBasis and SearchOperationWrapper classes:
       add getter and setter for the "Changelog Exchange Control" (ECLRequestControl class)
    
    * core.properties : add new message for case when  "Changelog Exchange Control" is requested
     but not supported by a backend
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10917 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     

07 Jul, 2014

1 commit

  • In r10840, the change to JE/FileChangelogDB.getCursorFrom(DN, ServerState) unnecessarily triggers a lot of calls to the underlying DB (JE or file based) to retrieve the ChangelogState.
    As an optimization, keeping an in-memory version of the ChangelogState in synch with the on-disk version will help.
    
    
    ChangelogState.java:
    Now thread safe.
    Added removeOfflineReplica(), isEqualTo().
    Changed domainToServerIds from Map<DN, List<Integer>> to Map<DN, Set<Integer>>.
    In getOfflineReplicas(), now return a MultiDomainServerState.
    
    ChangeNumberIndexer.java:
    Consequence of the changes to ChangelogState.
    
    
    ReplicationDbEnv.java:
    Added changelogState field, updated at the same time as the on-disk changelogstate DB
    Added getChangelogState(), called by client code instead of readChangelogState().
    Renamed readChangelogState() to private readOnDiskChangelogState().
    Added stateLock field to sync updates to in-memory and on-disk changelog state.
    
    ReplicationEnvironment.java:
    Added changelogState field, updated at the same time as the on-disk changelogstate DB
    Added getChangelogState(), called by client code instead of readChangelogState().
    Renamed readChangelogState() to private readOnDiskChangelogState().
    Renamed domainLock field to domainsLock.
    
    replication.properties:
    Removed now unused error message.
    
    FileChangelogDB.java, JEChangelogDB.java:
    Consequence of the changes to ChangelogState and ReplicationEnvironment/ReplicationDbEnv.
    
    
    MultiDomainServerState.java, ServerState.java:
    Added getSnapshot() for unit tests.
    
    ReplicationEnvironmentTest.java, ReplicationDbEnvTest.java:
    Consequence of the changes to ReplicationEnvironment and ChangelogState.
    Used the fake server.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10868 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

26 Jun, 2014

1 commit

  • Added a new ReplicaOfflineMsg to communicate that a replica is offline. ReplicaOfflineMsg extends UpdateMsg. It is possible that OPENDJ-1260 will piggy back on this new message type.
    This patch makes a DS send a ReplicaOfflineMsg to its preferred RS on shutdown.
    This works when we have split DS-RS, but works only 50% (guesstimate) of the time with combined DS-RS. There is a race condition between shutdown and the ReplicaOfflineMsg being forwarded by the collocated RS.
    Last but not least, RSs can communicate such ReplicaOfflineMsg to other RSs via ServerWriter / ServerReader.
    
    Another last item: Due to current change, replication is querying the changelogstate a lot more often. This is not playing nice with ExternalChangeLogTest and GenerationIdTest and required changing the File-based changelog ReplicationEnvironment class.
    It might be necessary to reduce I/O to maintain an in memory copy of the changelogstate. I might do this in a subsequent commit.
    
    
    
    
    ReplicaOfflineMsg.java: ADDED
    
    ReplicationMsg.java:
    Added support for ReplicaOfflineMsg.
    
    ProtocolVersion.java:
    Updated javadoc for REPLICATION_PROTOCOL_V8.
    
    LDAPReplicationDomain.java, ReplicationDomain.java:
    Added publishReplicaOfflineMsg().
    
    ReplicationBroker.java:
    In stop(), called ReplicationDomain.publishReplicaOfflineMsg().
    
    ReplicationServerDomain.java:
    In publishUpdateMsg(UpdateMsg), handled ReplicaOfflineMsg.
    
    
    
    PendingChange.java:
    Changed msg field + getMsg() return type from LDAPUpdateMsg to UpdateMsg.
    Added getLDAPUpdateMsg().
    
    PendingChanges.java:
    Added putReplicaOfflineMsg().
    In pushCommittedChanges(), changed the code as a consequence of the change to PendingChange.getMsg().
    
    RemotePendingChanges.java:
    Changed the code as a consequence of the change to PendingChange.getMsg().
    
    
    
    JEChangelogDB.java:
    Added ReplicaOfflineCursor inner class, decorator for a DBCursor + used it in getCursorFrom() to return ReplicaOfflineMsg to ServerWriter thread.
    
    JEChangelogDBTest.java: ADDED
    Tested ReplicaOfflineCursor.
    
    ECLServerHandler.java:
    In getNextMessage(), ignore ReplicaOfflineMsg which are useless to searches on cn=changelog.
    
    
    
    SynchronizationMsgTest.java:
    Added a test for ReplicaOfflineMsg (de)serialization.
    
    FakeUpdateMsg.java: ADDED, extracted from CompositeDBCursorTest
    
    CompositeDBCursorTest.java:
    Replaced call to newUpdateMsg() by calling FakeUpdateMsg ctor.
    
    
    
    ReplicationEnvironment.java:
    Fixes to make ExternalChangeLogTest and GenerationIdTest work.
    
    replication.properties:
    Removed now useless messages.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10840 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

23 Jun, 2014

3 commits


20 Jun, 2014

1 commit

  • * config.ldiff
    ** Add the 'changelog-read' value to the 'ds-default-root-privilege-name' multi-valued attribute
    * GlobalConfiguration.xml RootDNConfiguration.xml ADSContext.java Privilege.java RootPrivilegeChangeListener.java
    ** Add the 'changelog-read' privilege where is was needed
    * GlobalCfgDefn.properties RootDNCfgDefn.properties
    ** Add 'changelog-read' privilege definition
    * replication.properties replication_fr.properties
    ** Add messages to prevent user that he needs to have the 'changelog-read' privilege if he wants to search on changelog
    * ECLSearchOperation.java
    ** Add a check to verify that the current connection has the 'changelog-read' privilege before starting the changelog search
    * ExternalChangeLogTest.java
    ** Unit test which ensure that is not possible to perform a changelog search without the 'changelog-read' privilege 
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10820 41b1ffd8-f28e-4786-ab96-9950f0a78031
    gaetan
     

17 Jun, 2014

1 commit

  • …ver from a previous failure
    CR-3768
    
    * LogFile.java
    ** Add a check of file validity in constructor when log file is write-enabled
    ** Recover the file if it is corrupted (partially written record) by truncating it
    
    * BlockLogReader.java
    ** Add method checkLogIsValid() to check validity of file
     
    * replication.properties
    ** Add new messages related to check and recovery
    
    * LogFileTest.java
    ** Add tests for recovery after log file corruption
    
    * Minor changes in other files
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10816 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     

12 Jun, 2014

1 commit

  • CR-3727
    
    Implements read and write with blocks, to enable binary search.
    
    * New BlockLogReader class: read records sequentially or using
     binary search provided a key
     
    * New BlockLogWriter class: write records by blocks
    
    * New BlockLogReaderWriterTest class : tests read/write with blocks
    
    * Update LogFile : delegate responsibility for read/write to BlockLogXXX
    
    * Add method ByteStringBuilder#append(DataInput, int) to avoid 
     byte array copy
    
    * Minor changes in other files
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10805 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     

11 Jun, 2014

1 commit

  • …ing ReplicationBackend class
    
    Added upgrade tasks for:
    - Removing 'dc=replicationchanges' backend
    - Removing ACI for 'dc=replicationchanges'
    
    
    Upgrade.java:
    Registered upgrade tasks.
    
    UpgradeTasks.java:
    Added deleteConfigEntry().
    Factorized code by extracting method perform0().
    Fixed javadocs.
    
    UpgradeUtils.java:
    In updateConfigFile(), renamed lines parameter to ldifLines + changed String dn local variable to DN ldifDN + added support for deleting entries.
    
    tools.properties:
    Added messages for upgrade tasks.
    Fixed typos.
    
    
    admin_tool.properties:
    Fixed typos.
    
    SaltedMD5PasswordStorageSchemeTestCase.java:
    Removed unused import.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10800 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

04 Jun, 2014

1 commit

  • replication topology with file-based changelog
    OPENDJ-1487 : File based changelog : cursors opened when clearing the log
    
    Log.java :
    * Ensure cursors opened on log are temporarily disabled before rotating
     the head (to avoid renaming the file while reader are opened on it)
    * Allow cursors to be opened on log when performing a clear on the log, 
     turning them into empty cursors. 
       
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10778 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     

03 Jun, 2014

2 commits


21 May, 2014

1 commit

  • Implemented a log based on multiple log files 
    
    * Add Log class that manage a log as a set of log files:
    ** it contains at least one log file, the head log file, 
         where new records are appended
    ** it contains from zero to multiple read-only log files, 
        issued from rotation of the head log file when it reaches
        a given size
    * Update LogFile class to act as part of a Log.
    * Add purging feature
    * Update other classes from file package with minor changes
    * Add unit tests for new Log class and purging feature
    
    * Update MeteredStream class to use it in changelog
    * Add new interface RotatableLogFile (to be used later by changelog)
    * Update Policy classes to use this new interface
    
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10746 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     

14 May, 2014

1 commit

  • 
    LDAPReplicationDomain.java:
    Changed numReplayedPostOpCalled field from int to AtomicInteger.
    Extracted methods newSet(), newList(), exists(), canRemoveAttribute().
    Inlined getPendingUpdatesCount(), getNumReplayedPostOpCalled(), getNumResolvedModifyConflicts(), getNumResolvedNamingConflicts() and getNumUnresolvedNamingConflicts().
    In contains(), changed parameter names.
    Added javadocs to instance variables.
    Reduced visibilities to default or private.
    Added braces to if statements.
    Used static imports.
    Fixed Eclipse warnings.
    Replaced unnecessary use of MessageBuilder by adding arguments to replication messages.
    
    replication*.properties:
    Modified messages to include arguments.
    
    PendingChanges.java:
    Updated copyright year after r10722.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10723 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

07 May, 2014

1 commit

  • * Add new package org.opends.server.replication.server.changelog.file 
     containing the log file implementation 
    
    * The new package contains the following classes :
    ** Classes implementing the log - independant from changelog and built from scratch
      - LogFile : implementation of log based on a single file
      - LogWriter : writer for the log
      - LogReaderPool : pool of readers for the log
      - Record : a (key, value) log record
      - RecordParser : interface for the convertion from record to bytes and bytes to record
      - DecodingException : exception thrown when record decoding fails
    ** Classes implementing the changelog API, based on the log implementation. 
     - FileChangelogDB
     - FileChangeNumberIndexDB
     - FileChangeNumberIndexDBCursor
     - FileReplicaDB
     - FileReplicaDBCursor
     - ReplicationEnvironment
    
    * Add unit tests for org.opends.server.replication.server.changelog.file package
    
    * Add new attribute 'ds-cfg-replication-db-implementation' in 
     ds-cfg-replication-server (ServerReplicationConfig class), allowing
     to choose the db implementation to use for changelog in directory server: 
     either je or log file. Default is 'je'.
    
    * Add new option 'org.opends.test.replicationDbImpl' for test target in build.xml
     to choose the db implementation to for changelog when running the tests.
     Default is 'log' (log file).
    
    * Update all replication unit tests to allow the selection of changelog db implementation
     to use in tests.
     
    * Fix the ReferentialIntegerityPluginTestCase to do better cleanup at end of test in
     order to avoid side-effect on other tests.
    
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10713 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     

30 Apr, 2014

1 commit


28 Mar, 2014

1 commit

  • In JEReplicaDB, simplified the logic that handled the internal queue that is used before actually persisting UpdateMsg changes to the underlying Berkeley JE DB.
    Simplified the publisher/consumer model (msgQueue.add() / msgQueue.remove()) by relying on a LinkedBlockingQueue and a semaphore, instead of many synchronized blocks and fields that cluttered this code.
    
    
    
    JEReplicaDB.java:
    Changed msgQueue from LinkedList to LinkedBlockingQueue.
    Removed fields queueMaxSize, queueLowmark, queueHimark, queueLowmarkBytes, queueHimarkBytes, queueByteSize and replaced them all with queueSizeBytes Semaphore.
    Removed clearQueue() and getChanges().
    Added collectAllPermits().
    Added immutable CSNLimits class to remove the need for synchronizing on oldest and newest CSNs.
    
    ReplicationDB.java:
    In addEntries(), now return the total size of the persisted messages (return type was void).
    
    JEReplicaDBTest.java:
    In testTrim(), allowed the test to finish + made the code clearer.
    
    replication.properties:
    Added an error message for adding a change to the JEReplicaDB.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10601 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

14 Mar, 2014

1 commit


10 Mar, 2014

1 commit


04 Mar, 2014

1 commit


19 Feb, 2014

2 commits

  • 
    Improved design for Replication Topology
    
    
    ReplicationBroker.java + *Test.java:
    Extracted the Topology class to encapsulate the dsList and replicationServerInfos fields + atomically set it via an AtomicReference + moved setLocallyConfiguredFlag(), isSameReplicationServerUrl(), computeConnectedDSs() to Topology class.
    Created methods computeNewTopology() and topologyChange() to compute and set the new topology.
    Removed generationID instance variable duplicated with the one from ReplicationDomain + updated ctor and setGenerationID().
    Improved debugging messages.
    Renamed getDsList() to getReplicaInfos() + changed return type from List<DSInfo> to Map<Integer, DSInfo>.
    Renamed getRsList() to getRsInfos().
    Extracted method toRSInfos().
    
    ReplicationBrokerTest.java: ADDED
    Added to test new ReplicationBroker.Topology class.
    
    
    DSInfo.java:
    Changed equals(Set<String>, Set<String>) to equals(Object, Object).
    In toString(), hid the assured fields if assured replication is off.
    
    RSInfo.java:
    Renamed fields id and serverUrl to rsServerId and rsServerURL.
    In toString(), relied on the compiler to generate the String.
    
    
    TopologyMsg.java:
    Renamed fields dsList and rsList to replicaInfos and rsInfos.
    Renamed getDsList() to getReplicaInfos() + changed return type from List<DSInfo> to Map<Integer, DSInfo>.
    Renamed getRsList() to getRsInfos().
    Extracted methods readStrings() and writeStrings().
    Code cleanup
    Used javadocs
    
    
    ReplicationDomain.java, replication*.properties:
    Extracted class ECLIncludes to replace eclIncludesLock, eclIncludesByServer, eclIncludesAllServers, eclIncludesForDeletesByServer, eclIncludesForDeletesAllServers + moved setEclIncludes() implementation to this class + removed synchronized blocks from all the getters.
    Added baseDN to ERR_INIT_NO_SUCCESS_START_FROM_SERVERS.
    Inlined initializeRemote().
    Removed unused initializeFromRemote().
    Reduced methods visibility.
    Renamed getReplicaList() to getReplicaInfos() + changed return type from List<DSInfo> to Map<Integer, DSInfo>.
    Renamed getRsList() to getRsInfos().
    In initializeRemote(), waitForRemoteEndOfInit(), isRemoteDSConnected() and getProtocolVersion(), simplified code.
    
    *.java:
    Consequence of the changes above.
    Simplified code in a number of places, particularly in the tests.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10405 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@10402 41b1ffd8-f28e-4786-ab96-9950f0a78031
    cjr
     

31 Jan, 2014

1 commit


30 Jan, 2014

1 commit


28 Jan, 2014

1 commit

  • 
    replication*.properties:
    Added exception stacktraces to NOTICE_READER_EXCEPTION_53.
    
    ServerReader.java:
    In run(), logged the stacktrace when calling logError(). Removed redundant call to logException() which logged to debug logger.
    
    
    Session.java:
    Extracted method read().
    
    
    StaticUtils.java:
    In stackTraceToSingleLineString(), when this is not a debug build, added the exception type at the start of the message.
    
    StaticUtilsTest.java: ADDED
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10202 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

23 Jan, 2014

1 commit


13 Jan, 2014

1 commit


02 Jan, 2014

1 commit


17 Dec, 2013

3 commits

  • Review of the approach: Matthew Swift
    
    
    Problem is caused by code deep into method calls that calls ReplicationServer.shutdown().
    Thread 1 holds a lock on MessageHandler.msgQueue, an exception happens during processing and it then it calls ReplicationServer.shutdown() which then goes and tries to grab JEReplicaDB.msgQueue.
    Thread 2 holds a lock on JEReplicaDB.msgQueue and then tries to grab MessageHandler.msgQueue.
    
    The proper fix is to let the exceptions bubble up to the Thread.run() method, releasing all locks in the process, and call ReplicationServer.shutdown() from there.
    
    
    replication.properties
    Added stack traces to error messages.
    
    ReplicationServerDomain.java:
    Consequence of the change to the error messages, removed the use of MessageBuilder.
    
    JEUtils.java: ADDED
    Factorized all the code closing JE Transactions.
    
    DraftCNDB.java, JEChangeNumberIndexDB.java, ReplicationDB.java:
    Let ChangelogExceptions propagate up.
    Used JEUtils.abort().
    Consequence of the change to the error messages, removed the use of MessageBuilder.
    
    JEReplicaDB.java:
    Handled ChangelogException bubbling up here.
    Extracted stop(Exception) method.
    
    ReplicationDbEnv.java
    removed one shutdownOnException() method.
    Inlined innerShutdownOnException().
    Consequence of the change to the error messages, removed the use of MessageBuilder.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10018 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@10014 41b1ffd8-f28e-4786-ab96-9950f0a78031
    violette
     
  • 
    Checkpoint commit that:
    - adds i18n
    - improves comments and javadocs
    - improved ServerState class to internally use a lock free implementation
    
    
    replication.properties:
    Added 2 error messages.
    
    ServerState.java:
    Made the implementation use ConcurrentMap + removed all synchronized blocks + significantly change the code in update(), removeCSN() and toString().
    Removed getMaxCSN() (never used).
    
    ServerStateTest.java:
    Added asserts to testRemoveCSN().
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10007 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac