30 Jan, 2007

1 commit

  • The root cause is a concurrent access to the db resource of the
    changelog server when the shutdown() method is called.
    
       [testng] Java stack information for the threads listed above:
       [testng] ===================================================
       [testng] "Changelog Server 11 zone35.gridzones.com:43150 dc=example,dc=com reader":
       [testng] 	at com.sleepycat.je.Database.removeCursor(Database.java:1055)
       [testng] 	- waiting to lock <0xf4f36310> (a com.sleepycat.je.Database)
       [testng] 	at com.sleepycat.je.Cursor.close(Cursor.java:254)
       [testng] 	- locked <0xf4f36430> (a com.sleepycat.je.Cursor)
       [testng] 	at org.opends.server.synchronization.changelog.ChangelogDB.readFirstChange(ChangelogDB.java:212)
       [testng] 	at org.opends.server.synchronization.changelog.DbHandler.<init>(DbHandler.java:103)
       [testng] 	at org.opends.server.synchronization.changelog.Changelog.newDbHandler(Changelog.java:600)
       [testng] 	at org.opends.server.synchronization.changelog.ChangelogCache.put(ChangelogCache.java:167)
       [testng] 	- locked <0xf4f57688> (a java.util.concurrent.ConcurrentHashMap)
       [testng] 	at org.opends.server.synchronization.changelog.ServerReader.run(ServerReader.java:111)
       [testng] "main":
       [testng] 	at com.sleepycat.je.Cursor.close(Cursor.java:251)
       [testng] 	- waiting to lock <0xf4f36430> (a com.sleepycat.je.Cursor)
       [testng] 	at com.sleepycat.je.Database.closeInternal(Database.java:273)
       [testng] 	at com.sleepycat.je.Database.close(Database.java:238)
       [testng] 	- locked <0xf4f36310> (a com.sleepycat.je.Database)
       [testng] 	at com.sleepycat.je.Environment.close(Environment.java:273)
       [testng] 	- locked <0xf4f124a8> (a com.sleepycat.je.Environment)
       [testng] 	at org.opends.server.synchronization.changelog.ChangelogDbEnv.shutdown(ChangelogDbEnv.java:234)
       [testng] 	at org.opends.server.synchronization.changelog.Changelog.shutdown(Changelog.java:583)
       [testng] 	at org.opends.server.synchronization.changelog.ChangelogTest.changelogChaining(ChangelogTest.java:724)
    
    
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@1059 41b1ffd8-f28e-4786-ab96-9950f0a78031
    pgamba
     

29 Jan, 2007

3 commits

  • NameFormSyntax class.
    
    OpenDS Issue Number:  1169
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@1057 41b1ffd8-f28e-4786-ab96-9950f0a78031
    neil_a_wilson
     
  • The synchronization server is flushing all the queues of the messages
    received from a LDAP server each time a server needs to retrieve some
    changes that are not in memory anymore.
    
    This cause the reading process of old changes very slow when there is also new changes coming in.
    
    The servers that are already late can therefore become more and more late.
    
    The solution is to detect the conditions when a flush is necessary by comparing the date of the changeNumber where
    we want to start with the date of the first ChangeNumber
    and only flush in those cases.
    
    - Also fix some warning at compilation time and when using java 6
    
    - Also fix an problem between test ConfigurableComponentTestCase and the ChangelogTest
    because ConfigurableComponentTestCase expect all component to be configurable while
    the dynamic configuration code for the Changelog is not yet implemented.
    
    - 2 new unit tests are also included :
    
    . scalability test of a synchronization server when one LDAP server
    is used as a master and several other LDAP servers are used as
    read only servers :
    org.opends.server.synchronization.changelog.ChangelogTest.OneWriterMultipleReader()
    
    . scalability test of a sycnhronization server when several LDAP Servers are used as master simultaneously : org.opends.server.synchronization.changelog.ChangelogTest.MultipleWriterMultipleReader()
    
    These tests do not instantiate the LDAP servers but simulate them
    by using directly the ChangelogBroker API.
    
    The second is failing (issue 1162) and is therefore disabled. 
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@1056 41b1ffd8-f28e-4786-ab96-9950f0a78031
    gbellato
     
  • This does not allow to cover the code that deals with changelog server to
    changelog server communications.
    
    In order to have more than one changelog services running in the same instance
    and instance layout, the serverID has been added to the changelogstate dbName.
    
    Changelog db path is now configurable, 
    
    The 2 following tests have been implemented:
    
    +  /**
    +   * Chaining tests of the changelog code with 2 changelog servers involved
    +   * 2 tests are done here (itest=0 or itest=1)
    +   * 
    +   * Test 1
    +   * - Create changelog server 1
    +   * - Create changelog server 2 connected with changelog server 1
    +   * - Create and connect client 1 to changelog server 1
    +   * - Create and connect client 2 to changelog server 2
    +   * - Make client1 publish changes
    +   * - Check that client 2 receives the changes published by client 1
    +   * 
    +   * Test 2
    +   * - Create changelog server 1
    +   * - Create and connect client1 to changelog server 1
    +   * - Make client1 publish changes
    +   * - Create changelog server 2 connected with changelog server 1
    +   * - Create and connect client 2 to changelog server 2
    +   * - Check that client 2 receives the changes published by client 1
    +   * 
    +   */
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@1054 41b1ffd8-f28e-4786-ab96-9950f0a78031
    pgamba
     

28 Jan, 2007

2 commits

  • 2007 in their copyright notices.
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@1051 41b1ffd8-f28e-4786-ab96-9950f0a78031
    neil_a_wilson
     
  • interact with the Subversion workspace.  This includes three components:
    
    - A new Ant task that stores the current workspace revision number in an Ant
      property which gets built into DynamicConstants.java and exposed in the
      --fullversion and "cn=version,cn=monitor" information.
    
    - A new Ant task that checks all files that have been locally modified in the
      current workspace for potential cases in which a copyright date needs to be
      updated to include the current year.
    
    - A change to the coveragediff tool so that it uses the SVNKit library to
      obtain the diff rather than trying to execute the external svn/svn.exe
      command.
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@1047 41b1ffd8-f28e-4786-ab96-9950f0a78031
    neil_a_wilson
     

26 Jan, 2007

1 commit


25 Jan, 2007

1 commit

  • umbrella of issue #1163.  The individual issues addressed include:
    
    * 1139 -- Properly handle OBSOLETE flag in schema elements.  The OBSOLETE flag
    is now recognized when processing matching rules, attribute types, object
    classes, name forms, DIT content rules, DIT structure rules, and matching rule
    uses.  It essentially provides a way to "deprecate" a schema element so that
    existing data that makes use of them will still be treated properly, but the
    server will not allow newly-created elements to reference them.
    
    * 1145 -- Consider updating X-ORIGIN to reference newer RFCs.  When the schema
    configuration files were originally written, there were a number of references
    to RFC 2252 and RFC 2256 that were updated in RFC 4512 and RFC 4519, among
    others.  The X-ORIGIN extension for each element in the 00-core.ldif schema
    configuration file should now reference the latest specification that contains
    that element.
    
    * 1146 -- Consider enforcing object class inheritance restrictions.  The server
    will now ensure that abstract classes can only inherit from other abstract
    classes, that auxiliary classes can only inherit from abstract classes and
    other auxiliary classes, and that structural classes can only inherit from
    abstract classes and other structural classes.  Further, all structural object
    classes must include the "top" abstract class as the root of their inheritance
    chain.
    
    * 1147 -- Consider enforcing attribute type inheritance restrictions.  The
    server will now ensure that a subordinate attribute type will have the same
    usage as its superior type.  Further, the server will enforce that a
    subordinate attribute type may be collective if and only if its superior type
    is collective.  Due to the subjective nature of the "refinement" clause for
    syntax inheritance, no check will be made regarding the syntax relationship
    between a superior and subordinate attribute type.
    
    * 1151 -- DIT content rule validation isn't handled correctly.  The server will
    now allow attribute types to appear in an entry if they are included in the
    required or optional attribute type lists for a DIT content rule even if those
    attributes are not allowed by any of the entry's associated object classes.
    Further, the DIT content rule validation process will now ensure that none of
    the prohibited attribute types are required by the structural object class or
    any of the allowed auxiliary object classes.
    
    * 1158 -- Attribute syntaxes describing schema elements aren't strict enough.
    Previously, in most cases that one schema element referenced another element
    that was not defined (e.g., an object class allows an attribute type that is
    not defined in the server schema), the server would ignore the unresolved
    dependency.  The server will now fail to validate schema elements that depend
    on other schema elements which are not defined in the server schema.
    Similarly, there were cases in which the server did not properly validate that
    an object class was of the appropriate type (e.g., for a DIT content rule,
    there was no check to ensure that the structural object class was actually
    declared structural, or that all of the allowed auxiliary objectclasses were
    actually declared auxiliary).  The server will also fail to validate schema
    elements with these kinds of problems.
    
    * 1159 -- Incomplete attribute type usage constraints.  The server did not
    properly ensure that COLLECTIVE attribute types had a usage of
    userApplications, and that NO-USER-MODIFICATION attribute types had an
    operational usage.
    
    * 1164 -- Need more complete DIT structure rule validation.  The server did not
    properly ensure that if an entry's parent was associated with a DIT structure
    rule, that entry would only be valid if it was covered by a DIT structure rule
    which listed the parent's DIT structure rule as a superior rule.
    
    * 1165 -- Consider reduced name form and DIT structure rule checking.  The
    server would often perform more schema validation than necessary for most types
    of operations.  In particular, name form and DIT structure rule validation
    should not be required for modify operations, and DIT structure rule validation
    should also not be required for LDIF import operations since we cannot
    guarantee that the parent will be accessible.
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@1036 41b1ffd8-f28e-4786-ab96-9950f0a78031
    neil_a_wilson
     

24 Jan, 2007

1 commit

  • When doing scalability tests I've noticed that some of the code inside
    the SynchronizationDomain.pendingChanges lock is not usefull.
    
    I've therefore moved it outside of the lock.
    There are no tests for this because this is only a small perf improvement. 
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@1033 41b1ffd8-f28e-4786-ab96-9950f0a78031
    gbellato
     

23 Jan, 2007

2 commits


19 Jan, 2007

1 commit

  • modifiersName, and modifyTimestamp attributes are included in the subschema
    subentry as recommended in RFC 4512 section 4.2.  The create timestamp will be
    set to the oldest modification time of all the schema configuration files.  The
    modify timestamp will be initially set to the youngest modification time of all
    the schema configuration files, but if the schema is updated with the server
    online then the modifiersName and modifyTimestamp will be updated accordingly.
    
    OpenDS Issue Number:  1157
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@1004 41b1ffd8-f28e-4786-ab96-9950f0a78031
    neil_a_wilson
     

18 Jan, 2007

4 commits


17 Jan, 2007

2 commits


16 Jan, 2007

4 commits


12 Jan, 2007

1 commit


11 Jan, 2007

2 commits


10 Jan, 2007

2 commits


09 Jan, 2007

4 commits

  • for the target entry and its parent are released.  This fixes a problem in
    which deadlocks can occur if a task entry is added and then the client
    repeatedly retrieves the entry to keep up to date on the status of the task.
    
    OpenDS Issue Number:  1137
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@947 41b1ffd8-f28e-4786-ab96-9950f0a78031
    neil_a_wilson
     
  • which includes the following:
    
    - It is now possible to add attribute types, objectclasses, name forms, DIT
      content rules, DIT structure rules, and matching rule uses.  Adding a schema
      element that is already present but with a different definition will replace
      that element.
    
    - It is now also possible to remove existing attribute types, objectclasses,
      name forms, DIT content rules, DIT structure rules, and matching rule uses.
      If the element is removed and then re-added, then it is treated as adding the
      element with a a different definition (i.e., replacing the existing
      definition).
    
    - If an existing schema element is replaced or removed, then the update will be
      made in the schema file that contains that definition.  If a new attribute
      type is added and is not manually associated with a schema file, then the
      server will use a default schema file of 99-user.ldif.  The schema file to
      use can be manually overridden using the X-SCHEMA-FILE extension.
    
    - A significant amount of effort has been put into understanding dependencies
      between various schema elements and ensuring that those dependencies will be
      resolved correctly, and will also be updated whenever a dependent element is
      updated.
      
    - Note that the equality matching rule for the attributeTypes, objectClasses,
      nameForms, matchingRules, matchingRuleUse, ditContentRules, and 
      ditStructureRules attribute types has been changed to the caseIgnoreMatch
      rule.  This does deviate from the standard somewhat, but allows the server to
      provide notably better performance while still exhibiting correct behavior as
      far as clients are concerned.
    
    
    OpenDS Issue Number:  366
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@945 41b1ffd8-f28e-4786-ab96-9950f0a78031
    neil_a_wilson
     
  • 
    git-svn-id: https://svn.forgerock.org/opendj/trunk@943 41b1ffd8-f28e-4786-ab96-9950f0a78031
    jvergara
     
  • incrementing a monitor counter.
    
    Issue 1136.
    
    A unit test is already covering this part of the code.
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@937 41b1ffd8-f28e-4786-ab96-9950f0a78031
    gbellato
     

08 Jan, 2007

1 commit

  • found by a code review where this method can fail because it only increment the time
    by one unit even if the time difference is larger than this.
    
    This bug has not visible impact yet because the synchronization operation dependencies 
    is not yet implemented.
    
    Issue number 1134
    
    This commit also add a unit test for this adjust method
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@934 41b1ffd8-f28e-4786-ab96-9950f0a78031
    gbellato
     

06 Jan, 2007

1 commit


05 Jan, 2007

1 commit


03 Jan, 2007

1 commit

  • task entries when evaluating them during search operations, and to acquire
    write locks for the entries when they are being updated.  This should eliminate
    the possibility of concurrent modification exceptions being thrown in cases
    where a client issues a search for a task entry at the same time the task entry
    is being updated within the server.
    
    OpenDS Issue Number:  858
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@918 41b1ffd8-f28e-4786-ab96-9950f0a78031
    neil_a_wilson
     

01 Jan, 2007

1 commit

  • - org.opends.server.LockDirectory -- Specifies the path to the directory that
      should hold the server lock files
    
    - org.opends.server.SchemaDirectory -- Specifies the path to the directory that
      should hold the server schema files
    
    These properties can help make it easier for applications to embed OpenDS and
    use a filesystem layout that is different from the default layout used by the
    server.  If either of these properties is not provided, then the default
    location will be used (locks for the lock directory, and config/schema for the
    schema directory).
    
    OpenDS Issue Number:  649
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@914 41b1ffd8-f28e-4786-ab96-9950f0a78031
    neil_a_wilson
     

21 Dec, 2006

1 commit

  • server.  This is a very bare-bones API at the moment and is primarily intended
    to allow development of code that depends on the ability to make membership
    determinations (e.g., the access control subsystem).  A more thorough API and
    specific implementations will be added later.
    
    
    git-svn-id: https://svn.forgerock.org/opendj/trunk@911 41b1ffd8-f28e-4786-ab96-9950f0a78031
    neil_a_wilson
     

18 Dec, 2006

3 commits