mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

pgamba
15.36.2008 f0db4ef0f870cd995ac0d11e0a4ed4d4591627e6
Fix 2904: "dsreplication enable" cannot initialize b11 from b10 because the schema initialization fails on the config schema.
The code already tests whether the new objectclass is part of the config schema and then excludes it from the import. That's fine.
Except that the test relies on the decoding of the OC and fails if the new OC comes with a new attribute.
The fix consists in relaxing the decoding when doing the test .. and really doing a strict decoding after the test once we know the new OC is not a config OC.

1 files modified
9 ■■■■ changed files
opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java 9 ●●●● patch | view | raw | blame | history
opendj-sdk/opends/src/server/org/opends/server/backends/SchemaBackend.java
@@ -4345,8 +4345,10 @@
      {
        for (AttributeValue v : a.getValues())
        {
          // It IS important here to allow the unknown elements that could
          // appear in the new config schema.
          ObjectClass newObjectClass = ObjectClassSyntax.decodeObjectClass(
              v.getValue(), newSchema, false);
              v.getValue(), newSchema, true);
          String schemaFile = newObjectClass.getSchemaFile();
          if (schemaFile.equals(CONFIG_SCHEMA_ELEMENTS_FILE))
          {
@@ -4356,6 +4358,11 @@
            continue;
          }
          // Now we know we are not in the config schema, let's check
          // the unknown elements ... sadly but simply by redoing the
          // whole decoding.
          newObjectClass = ObjectClassSyntax.decodeObjectClass(
              v.getValue(), newSchema, false);
          oidList.add(newObjectClass.getOID());
          try
          {