19 Dec, 2013

8 commits

  • git-svn-id: https://svn.forgerock.org/opendj/trunk@10031 41b1ffd8-f28e-4786-ab96-9950f0a78031
    matthew
     
  • 
    ReplicationBroker.java
    Moved session field to ConnectedRS.
    Removed field protocolVersion (useless, superseded by ConnectedRS)
    Reworked ConnectedRS class: removed connected field.
    In ReplicationServerInfo, added setServerURL() + internally stored a RSInfo object + changed connectedDSs from List to Set.
    Used 
    Improved javadocs + removed comments redundant with javadocs.
    
    ComputeBestServerTest.java:
    Consequence of the change to ReplicationBroker.ReplicationServerInfo ctor.
    
    UnbindOperationTestCase.java, ReplicationDomain.java:
    Code cleanup.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10030 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@10029 41b1ffd8-f28e-4786-ab96-9950f0a78031
    matthew
     
  • ReplicationBroker.java:
    Changed monitorResponse from MutableBoolean to AtomicBoolean.
    Replaced fields rsGroupId, rsServerId, rsServerUrl, replicationServer and connected by a single connectedRS + added immutable inner class ConnectedRS.
    Renamed updateRSInfoLocallyConfiguredStatus() to setLocallyConfiguredFlag().
    In receiveTopo(), used Collections.retainAll().
    
    MutableBoolean.java: REMOVED
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10028 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • ReplicationServerTest.java:
    In windowProbeTest(), code only expected to receive a WindowMsg in answer to a WindowProbeMsg sent out. The twist is that it only cares about receiving a WindowMsg which means it can discard every other type of messages in the interim, particularly the ones coming from the protocol: MonitorMsgs, HeartbeatMsgs, etc. Used ReplicationTestCase.waitForSpecificMsg() to achieve this.
    
    AssuredReplicationPluginTest.java:
    Code cleanup.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10027 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@10026 41b1ffd8-f28e-4786-ab96-9950f0a78031
    matthew
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@10025 41b1ffd8-f28e-4786-ab96-9950f0a78031
    mark
     
  • 
    ExtendedOperationHandler.java:
    Added ctor ExtendedOperationHandler(Set<String> supportedControlOIDs).
    Implemented initializeExtendedOperationHandler() and finalizeExtendedOperationHandler() by moving common code here from subclasses impls.
    Made registerControlsAndFeatures() and deregisterControlsAndFeatures() private.
    Added overridable method getExtendedOperationOID().
    
    GetSymmetricKeyExtendedOperation.java, CancelExtendedOperation.java, GetConnectionIDExtendedOperation.java, PasswordModifyExtendedOperation.java, PasswordPolicyStateExtendedOperation.java, StartTLSExtendedOperation.java, WhoAmIExtendedOperation.java:
    Removed getSupportedControls() + supportedControlOIDs field member where present - superseded by the superclass ones.
    In initializeExtendedOperationHandler(), delegated to superclass method. Cannot replace it fully because method signatures do not match.
    Removed finalizeExtendedOperationHandler(), rely on superclass implementation where possible.
    Implemented getExtendedOperationOIDI() and getExtendedOperationName() sometimes.
    Code cleanup.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10024 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

18 Dec, 2013

2 commits


17 Dec, 2013

17 commits

  • Don't register configuration change listener in constructor since the constructor is invoked during configuration validation as well as when applying the configuration change. Instead register the listener once the index has been opened, which is only done during backend init and when adding new indexes, and which is also symmetric with listener deregistration which is performed when closing indexes.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10021 41b1ffd8-f28e-4786-ab96-9950f0a78031
    matthew
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@10020 41b1ffd8-f28e-4786-ab96-9950f0a78031
    matthew
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@10019 41b1ffd8-f28e-4786-ab96-9950f0a78031
    csovant
     
  • 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@10017 41b1ffd8-f28e-4786-ab96-9950f0a78031
    violette
     
  • 
    Code cleanup: removed code that has been obsoleted by having the separate ChangeNumberIndexer thread.
    Matt and I think that this code was necessary because the change number was computed lazily.
    Now that the change number is computed eagerly, there is no need for this obsolete code.
    
    
    Additional potential work that might be done later:
    - Could we remove the counter records from the replicaDBs?
    - Could we remove ECLServerHandler.eligibleCSN()?
    
    
    ReplicationServer.java:
    In getECLChangeNumberLimits():
    - removed the for loop inferring the "eligibleCount", i.e. the number of changes that are in the replicaDBs but not yet in the ChangeNumberIndexDB
    - removed all the parameters which are now useless
    
    ReplicationServerDomain.java, ReplicationDomainDB.java, JEChangelogDB.java, JEReplicaDB.java, ReplicationDB.java:
    Transitively removed all the methods that were called by ReplicationServer.getECLChangeNumberLimits().
    
    ECLServerHandler.java, FirstChangeNumberVirtualAttributeProvider.java, LastChangeNumberVirtualAttributeProvider.java:
    Removed all the code that was getting and passing in the parameters of ReplicationServer.getECLChangeNumberLimits().
    
    ExternalChangeLogTest.java:
    Removed now useless test ECLReplicationServerFullTest10().
    
    JEReplicaDBTest.java:
    Renamed testDbCounts() to testGetOldestNewestCSNs().
    Removed now useless test testGetCountNoCounterRecords()
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10016 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@10015 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@10014 41b1ffd8-f28e-4786-ab96-9950f0a78031
    violette
     
  • * Migrate all tests from org.opends.server.admin.client.ldap package
    ** Remove server start from all tests
    
    * Fixes in LDAPManagedObject and LDAPNameBuilder classes :
     wrong code conversion from javax.naming classes to SDK DN/RDN classes
     
    
    
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10013 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     
  • ease creation of entries from LDIF lines in test cases.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10012 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     
  • …n of a replicated server
    
    Code review: Matthew Swift
    
    
    Problem lied in the MonitoringPublisher thread which sends the monitoring information at regular intervals (60s by default).
    In run(), code was waiting for 60s then happily sending the monitor message regardless of whether the server was shutting down.
    However, if the thread is notified by shutdown process while waiting 60s, then it will immediately try to send the monitor message.
    Since the shutdown is initiated, it will receive a SocketException when trying to send a monitor message. This exception is then logged.
    
    Fix consisted in checking whether the server is shutting down right after being notified.
    
    
    MonitoringPublisher.java:
    Removed shutdown instance field (superseded by initiateShutdown() and isShuttingDown()).
    In run(), moved the call to wait(long) at the end of the loop, so a notification will be immediately followed by a check on whether the server is shutting down + also added a shutdown check in the body of the loop.
    In shutdown(), called initiateShutdown() before entering the synchronized block + moved the logging code outside of the synchronized block.
    In waitForShutdown(), used Thread.join(long) instead of ill looking code.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10010 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • * change to 3 seconds.
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10009 41b1ffd8-f28e-4786-ab96-9950f0a78031
    matthew
     
  • …ts and replicas shutting down
    
    
    Replica heartbeats are now making the medium consistency point move forward.
    This brings trunk implementation to be on par with OpenDJ 2.6.0.
    
    
    ReplicationServerDomain.java:
    In getEligibleCSN(), used ReplicationDomainDB.getDomainLastAliveCSNs().
    Removed field ctHeartbeatState + methods getChangeTimeHeartbeatState() and storeReceivedCTHeartbeat(), all superseded by ChangeNumberIndexer.
    
    ExternalChangeLogTest.java
    Consequence of removing ReplicationServerDomain.getChangeTimeHeartbeatState().
    Improved the code readability with waitOpResult() + moved calls to waitOpResult() inside searchOnChangelog().
    
    
    ReplicationDomainDB.java, JEChangelogDB.java:
    Added and implemented getDomainLastAliveCSNs().
    In getDomainOldestCSNs() and getDomainNewestCSNs(), improved javadocs.
    
    ChangeNumberIndexer.java:
    Remain lastSeenUpdates field to lastAliveCSNs + improved javadoc.
    Added getDomainLastAliveCSNs().
    
    
    MultiDomainServerState.java
    Added getServerState(DN).
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10008 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • 
    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
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@10005 41b1ffd8-f28e-4786-ab96-9950f0a78031
    mark
     
  • …gning password policy via collective attribute
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10004 41b1ffd8-f28e-4786-ab96-9950f0a78031
    mark
     
  • This commit means we are temporarily on the release candidate doc build plugin, which I'm leaving at 2.0.0-SNAPSHOT.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@10003 41b1ffd8-f28e-4786-ab96-9950f0a78031
    mark
     

16 Dec, 2013

5 commits


13 Dec, 2013

8 commits