02 Oct, 2013

1 commit

  • Added toString(), that displays the entry field.
    Comments => Javadoc.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9639 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

01 Oct, 2013

4 commits

  • git-svn-id: https://svn.forgerock.org/opendj/trunk@9633 41b1ffd8-f28e-4786-ab96-9950f0a78031
    ludo
     
  • The refreshToken was updated on each add/mod/delete regardless of the type of entry, causing intensive contention on group membership evaluation.
    Changes include reduction of the critical section as well as moving the update of refreshToken only when groups are modified.
    CR-2400, thanks to the nice reviewers.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9632 41b1ffd8-f28e-4786-ab96-9950f0a78031
    ludo
     
  • 
    Removed ReplicationServer.removeDb() + let the exceptions propagate up in ChangelogDB.shutdownDB() and ChangelogDB.removeDB().
    
    
    ReplicationServer.java:
    Removed removeDb(), instead use JEChangelogDB.removeDB().
    
    ChangelogDB.java:
    shutdownDB() and removeDB() can now throw ChangelogException.
    
    JEChangelogDB.java:
    shutdownCNIndexDB(), shutdownDB() and removeDB() can now throw ChangelogException + ensured code proceed till the end of the methods before throwing the first caught exception.
    In removeDB(), called shutdownDB().
    
    *Test[Case].java:
    Allowed exceptions to propagate up, this will allow detecting issues in tests suite.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9629 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • 
    Removed clearDB() from ChangelogDB API because it is only used in tests.
    
    
    ReplicationServer.java:
    Removed clearDb(), instead use JEChangelogDB.cleanDB().
    
    ChangelogDB.java:
    Removed clearCNIndexDB(). Test only: do not expose it via interface.
    
    JEChangelogDB.java
    Renamed clearCNIndexDB() to clearDB().
    
    ReplicationTestCase.java:
    Added clearChangelogDB().
    
    *Test.java:
    Called clearChangelogDB() instead of ReplicationServer.clearDb().
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9628 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

30 Sep, 2013

5 commits

  • 
    Moved the cnIndexDB + related code to the ChangelogDB implementation because under its responsibility.
    
    
    ReplicationServer.java:
    Moved cnIndexDB + related code to JEChangelogDB.
    Moved clearGenerationId() code to JEChangelogDB.removeDomain().
    
    ReplicationServerDomain.java:
    The code ReplicationServer.clearGenerationId().
    
    
    ChangelogDB.java:
    Temporarily added clearCNIndexDB until I can sort out the can of worms created by folding this method into other methods.
    Renamed newChangeNumberIndexDB() to getChangeNumberIndexDB().
    
    JEChangelogDB.java
    Moved cnIndexDB + related code here from ReplicationServer.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9626 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • 
    Moved the lastGeneratedChangeNumber to the ChangeNumberIndexDB implementation because it is the responsibility of the DB to manage such field (think of it like relational databases's sequence numbers).
    
    
    ReplicationServer.java:
    Moved lastGeneratedChangeNumber + relevant code to DraftCNDbHandler.
    Removed getNewChangeNumber(), replaced with TODO ChangeNumberIndexDB.getLastGeneratedChangeNumber()
    
    DraftCNDbHandler.java
    Moved lastGeneratedChangeNumber here and converted it to AtomicLong + moved relevant code here from ReplicationServer.
    In getMonitorData(), extracted methods, createChangeNumberAttribute() and getChangeNumber().
    
    ChangeNumberIndexDB.java:
    Added nextChangeNumber() and getLastGeneratedChangeNumber().
    
    ECLServerHandler.java:
    Consequence of the changes to ReplicationServer.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9624 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • … should never be called this way in production, so I moved it back to tests.
    
    CSNGenerator.java:
    Moved newCSNs() to DbHandlerTest.
    
    CSNGeneratorTest.java:
    Renamed newCSNs() test to newCSN()
    
    DbHandlerTest.java:
    Moved newCSNs() here from CSNGenerator.
    
    DraftCNDbHandlerTest.java:
    Used DbHandlerTest.newCSNs().
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9621 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • 
    ChangelogDB.java:
    Updated javadoc for getCSNAfter().
    
    
    CSNGenerator.java
    Added newCSNs(int) to generate a certain number of CSNs in one go. It is very useful in tests.
    
    CSNGeneratorTest.java
    Added a test for newCSNs(int).
    
    ReplicationServer.java:
    In getChangelogDB(), weakened visibility from private to default for unit tests access.
    
    JEChangelogDB.java:
    In getOrCreateDbHandler(), weakened visibility from private to default for unit tests access.
    
    DbHandlerTest.java:
    Cleaned up the tests by relying on production code methods cleanups.
    Used CSNGenerator(.newCSNs().
    Added newDbHandler(), testGenerateCursorFrom().
    Renamed/inlined a few local variables.
    
    DraftCNDbHandlerTest.java:
    Cleaned up the tests by relying on production code methods cleanups.
    Used CSNGenerator(.newCSNs().
    Added newDbHandler().
    
    
    PendingChange.java, ExternalChangeLogTest.java:
    Renamed "changeNumber" to "csn".
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9620 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • In parseJsonConfiguration(), removed an outdated comment (already implemented).
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9619 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

26 Sep, 2013

6 commits

  • …annot be found in this JVM.
    CertAndKeyGen class was moved from sun.security.x509 to sun.security.tools.keytool in openjdk8.
    Now checking JVM version to figure out the path.
    CR-2376.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9610 41b1ffd8-f28e-4786-ab96-9950f0a78031
    ludo
     
  • 
    Changes after review from Matt.
    
    
    ChangelogDB.java:
    Added removeDB().
    Renamed clearDomain() to removeDomain().
    In getCursorFrom(), never return a null Cursor anymore.
    Updated many javadocs.
    
    
    
    MessageHandler.java, ReplicationBackend.java:
    Removed null checks for cursor (consequence of the changes to ChangelogDB)
    
    ReplicationServerDomain.java, JEChangelogDB.java, JEReplicaDBCursor.java:
    Consequence of the changes to ChangelogDB.
    
    
    ReplicationServer.java:
    Added removeDb().
    Removed getDbDirName(), superseded in usage by removeDb().
    
    ReplicationTestCase.java, ReplicationServerTest.java:
    Consequence of the change to ReplicationServer.
    
    
    DbHandler.java, ReplicationDB.java:
    Renamed setCounterWindowSize() to setCounterRecordWindowSize() + updated javadoc.
    
    DbHandlerTest.java:
    Improved the tests.
    Added testGetCountNoCounterRecords() to assess code behaviour.
    Extracted method assertCount()
    
    CSNGenerator.java:
    Fixed ugly parameter name.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9609 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • Undoing the rushed r9606 because:
    - In buildAndPublishMissingChanges(), the parameter was used in the tests
    - There were unintended changes in this
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9607 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • 
    LDAPReplicationDomain.java:
    In buildAndPublishMissingChanges(), removed ReplicationBroker parameter and used broker field instead.
    
    
    *Test.java:
    Removed try / catch / fail test anti pattern.
    Inlined local variables.
    
    AssuredReplicationPluginTest.java:
    Extracted methods assertBlockedForLessThanTimeout() assertBlockedLongerThanTimeout(), 
    Inlined sleep().
    In getErrorsByServers(), improved the code.
    
    ReplicationServerTest.java:
    Split changelogChaining() test into changelogChaining0() and changelogChaining1() to match the previous double testing + then simplified the code.
    Extracted methods receiveReplicationMsgs(), assertOnlyTopologyMsgsReceived().
    Used CSNGenerator.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9606 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • *Msg.java:
    Used DN.toNormalizedString() instead of DN.toString() for better perfs.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9605 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • String baseDn => DN baseDN
    
    The change mostly affects package org.opends.server.replication.protocol and dependent classes.
    
    
    ModifyCommonMsg.java:
    In getMods(), called decodeMods()
    
    ReplicationTestCase.java:
    Converted removeDomain(Entry) to removeDomain(Entry...).
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9601 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

25 Sep, 2013

3 commits

  • Extracted toServerState() method.
    Renamed getDbServerState() to getLatestServerState().
    
    ReplicationDomainCfgDefn_fr.properties:
    Upgraded "property.replication-server.description" to match the latest english description.
    
    *.java:
    Consequence of renaming ReplicationServerDomain.getDbServerState().
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9600 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • Now the replication code uses HostPort class for comparisons instead of "host:port" Strings.
    Changed all the HostPort variable/parameter names to *Address instead of *URL. Left all the relevant String variable/parameter names to *URL.
    
    
    HostPort.java:
    Removed LocalAddress(String), not used anymore.
    Moved getLocalAddress() here from ReplicationServer.
    Created localAddress() static method.
    Extracted method toInetSocketAddress() and moved it here.
    
    ReplicationServer.java:
    Created converting method toHostPorts() + used it everywhere replicationServerUrls was accessed.
    Replaced getNormalizedLocalURL() and normalizeServerURL() with simply calling HostPort.localAddress() and HostPort.valueOf().
    In getConnectedRSUrls(), changed return type from Set<String> to Set<HostPort>.
    In connect() and disconnectRemovedReplicationServers(), used HostPort as a parameter instead of String.
    
    ReplicationServerDomain.java:
    In stopReplicationServers(), used HostPort as a parameter instead of String.
    
    ReplicationServerHandler.java:
    Extracted method toServerAddressURL().
    
    ReplicationBroker.java:
    Consequence of the change to HostPort.
    
    
    ReplSessionSecurity.java:
    In isSslEncryption() removed unused parameter.
    Used StaticUtils.close().
    
    ReplicationServerConfiguration.xml, ReplicationServerCfgDefn.properties:
    Added precisions on how to specify the "replication-server" property.
    
    ReplicationServerDynamicConfTest.java, ReplServerFakeConfiguration.java:
    Updated because this test was failing.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9599 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • Review CR-2353
    
    * Removed constraints on the mandatory presence of a PIN, to allow use of empty PIN. 
       These contraints were implemented in several places :
      - configuration files : FileBasedKeyManagerProviderConfiguration.xml, PKCS11KeyManagerProviderConfiguration.xml
      - corresponding provider classes : FileBasedKeyManagerProvider.java, PKCS11KeyManagerProvider.java
      - setup tool : CertificateManager.java, InstallDS.java (for CLI), SecurityOptionsDialog.java (for GUI) 
    
    * Removed corresponding admin messages that are no more used in FileBasedKeyManagerProviderCfgDefn.properties and PKCS11KeyManagerProviderCfgDefn.properties
    * Removed corresponding messages that are no more used in extension.properties and quicksetup.properties
    * Added management of issue JDK-6879539 that prevents usage of empty PIN. This issue occurs on JDK older than JDK7.
    * Modified unit tests according to new behavior : FileBasedKeyManagerProviderTestCase.java, CertificateManagerTestCase.java
    
    * Added a new utility method StaticUtils#stackTraceContainsCause to check if an exception contains a given cause.
    
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9598 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     

24 Sep, 2013

4 commits

  • Changes after review from Matt.
    
    *.java:
    Changed terminology for easier reading:
    - First => Oldest
    - Last => Newest
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9590 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • Changes after review from Matt.
    
    *.java:
    Changed terminology for easier reading:
    - First => Oldest
    - Last => Newest
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9589 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • Changed after review from Matt.
    
    ChangelogDB.java:
    Removed setReplicationDBDirectory(), now set in JEChangelogDB constructor.
    Renamed getDBDirName() to getDBDirectoryName().
    Improved javadocs.
    
    JEChangelogDB.java:
    Consequence of the changes to ChangelogDB.
    Renamed dbDirName to dbDirectoryName.
    Made 2 fields final.
    Added makeDir().
    
    ReplicationServer.java:
    Consequence of the changes to ChangelogDB.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9581 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • HostPort.java:
    Improved javadocs.
    Improved host normalization for and used remote IP addresses for remote hosts (complies with code from ReplicationServer.java.disconnectRemovedReplicationServers()).
    Renamed normalizedHost() tpo normalizeHost().
    Removed trimming for serverURLs.
    In valueOf(), added a special case to reject unbracketed IPV6 addresses.
    Extracted constant LOCALHOST to avoid typos.
    Reworked the code from isLocalAddress(), equals(), hashCode().
    
    HostPortTest.java:
    Reworked some tests.
    Added new tests.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9580 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

23 Sep, 2013

3 commits

  • LDAPURL.java:
    Weakened urlDecode() visibility from private to package to allow easy unit testing.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9578 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • Review CR-2344
    
    NPE occurs in AdministrationConnector#createSelfSignedCertificateIfNeeded method.
    To avoid this, now attempt to create certificate only if initial setup has not been changed. 
    
    * AdministrationConnector.java : 
      - completed method createSelfSignedCertificateIfNeeded to add more checks to detect when initial setup has changed
      - added method hasDefaultConfigChanged to isolate the check
    
    * No unit test added, functional test to be added
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9577 41b1ffd8-f28e-4786-ab96-9950f0a78031
    nicolas.capponi@forgerock.com
     
  • Augmented HostPort class to support the use cases mentioned in OPENDJ-1134.
    Moved host splitting and port range validation to HostPort class.
    
    
    HostPort.java:
    Added valueOf() to parses a "host:port" URL + Added extractPort(), normalizePort(), normalizedHost(), removeExtraChars().
    Moved isLocalAddress() code here from StaticUtils.
    Added normalizedHost field, toNormalizedString() and toString(String) + modified hashCode() and equals() to ensure stability of the results returned by hashCode() and equals().
    Added allAddresses() to hide HostPort(int).
    Moved isEquivalentTo() code here from ReplicationBroker.isSameReplicationServerUrl().
    
    HostPortTest.java:
    Added.
    
    StaticUtils.java:
    Moved isLocalAddress() and related code to the HostPort class.
    
    ReplicationBroker.java:
    Moved some isSameReplicationServerUrl() to HostPort as isEquivalentTo().
    
    *.java:
    Used the new HostPort ctor everywhere.
    It simplified the code in many places and also helped remove duplicated code.
    
    ComputeBestServerTest.java:
    Added ports to serverURLs to ensure tests still pass.
    
    *Test.java:
    Removed the test anti-pattern try/catch/fail.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9575 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

20 Sep, 2013

1 commit


19 Sep, 2013

4 commits

  • JEChangelogDB.java:
    In getCursorFrom(), renamed local variable "it" to "cursor".
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9556 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • 
    Note this change does not cater for:
    - the bind operations where the password is used to authenticate. The password is held in memory for as long as it takes to complete the bind operation (and the OS flushing the network packets, etc.)
    - REST operations where the web container (and the OS network stack) holds a HTTPServletRequest object for as long as it takes to process the request.
    
    
    AuthenticationInfo.java:
    Removed simplePassword and saslCredentials fields + getters (never used) to ensure they are not held for the lifetime of an LDAP connection.
    In few methods, reversed conditions to ensure accessed variables are all directly put under a null check.
    
    CollectClientConnectionsFilter.java
    Wiped out the password ASAP, even though this is a bit pointless since the password is held by the web container for the lifetime of a REST call, either in the headers or via HTTP basic authentication.
    
    *.java:
    Consequence of the changes to AuthenticationInfo ctors.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9554 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • In findCookie(), reverted an if statement to use an early exit in case of error. It improves readability by making this code consistent with the other code in this method.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9553 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • In replication converted the use of String for baseDN to use actual DNs.
    
    LDAPReplicationDomain.java:
    Used getBaseDNString() instead of getBaseDN() in String context. It will use toNormalizedString() instead of using toString() which is safer.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9551 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

18 Sep, 2013

5 commits

  • * update Rest2LDAP documentation due to new configuration options.
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9549 41b1ffd8-f28e-4786-ab96-9950f0a78031
    matthew
     
  • Removed ReplicationServer.disableEligibility() stateful method and instead passed this list down as parameter in the methods that require it which is 1- cleaner and 2- safer with regards to concurrent programming (Particularly in ECLServerHandler).
    In ECLServerHandler.initialize(), called refreshEligibleCSN() to remove duplicate code.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9547 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • 
    In replication converted the use of String for baseDN to use actual DNs.
    
    By looking at the code, I am a bit afraid that some paths in the code were doing DN.equals(String) or vice-versa. Problem is that the current changes might change the behaviour of these paths. One example I spotted is in LDAPReplicationDomain.isSolveConflict().
    
    
    LDAPReplicationDomain.java:
    Removed fields serverId and baseDn already held in parent class + Used getServerId(), getBaseDN() and getBaseDNString() + moved getBaseDN() to ReplicationDomain.
    
    ReplicationDomain.java:
    Moved getBaseDN() here from LDAPReplicationDomain.
    
    
    ReplicationServer.java:
    In getECLChangeNumberLimits(), removed unnecessary code parsing a String. Now, the code will not throw a DirectoryException when the cookie cannot be parsed. I do not think this is a problem since the result of the parsing was never used anyway.
    
    ReplicationBroker.java:
    In performPhaseOneHandshake(), used StaticUtils.close().
    In performECLPhaseTwoHandshake(), changed return type to void.
    
    *.java:
    Converted baseDNs from String type to DN type.
    Renamed a few getBaseDn() to getBaseDN().
    
    *Test.java:
    Removed useless try / catch / fail test anti patterns.
    Changed some fake DNs to have DN-valid syntaxes.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9546 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • Checkstyle mi amor
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9545 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • In toNormalizedString(), complemented the javadoc.
    Comments => javadocs.
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9544 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     

17 Sep, 2013

4 commits

  • Investigating ExternalChangeLogTest.ECLReplicationServerFullTest(), I found a bug introduced by r9538.
    In DraftCNDBCursor(long) ctor, when returning null, the code did not release the readLock anymore. Previously, it threw an exception that was caught, then released the readLock and rethrown.
    Problem is there was an underlying bug in the previous code too: when the DB was already closed, the readLock would not be released at all.
    
    Now by introducing the cursorHeld local variable, the readLock is appropriately released in the finally clause when no cursor is held at all.
    Also fixed the code in DraftCNDBCursor().
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9542 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@9541 41b1ffd8-f28e-4786-ab96-9950f0a78031
    cjr
     
  • Added a debug statement to help diagnose a ClassCastException in ReplicationServerTest.windowProbeTest().
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@9540 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac
     
  • git-svn-id: https://svn.forgerock.org/opendj/trunk@9539 41b1ffd8-f28e-4786-ab96-9950f0a78031
    JnRouvignac