opendj-server-legacy/src/main/java/org/opends/server/api/Backend.java
@@ -975,6 +975,22 @@ } /** * Returns if <tt>exclude</tt> contains at least a DN or <tt>include</tt> contains anything else than one of * <tt>baseDNs</tt>. * * @param baseDNs the baseDNs of a backend * @param includeBranches a set of include DNs * @param excludeBranches a set of exclude DNs * @return true if <tt>exclude</tt> contains at least a DN or <tt>include</tt> contains anything else than one of * <tt>baseDNs</tt> */ public static boolean importIncludesOrExcludesBranches(Collection<DN> baseDNs, Collection<DN> includeBranches, Collection<DN> excludeBranches) { return !excludeBranches.isEmpty() || includeBranches.size() != 1 || !baseDNs.containsAll(includeBranches); } /** * Indicates whether a backend should be used to handle operations * for the provided entry given the set of base DNs and exclude DNs. * opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/BackendImpl.java
@@ -664,6 +664,12 @@ { throw new DirectoryException(getServerErrorResultCode(), ERR_IMPORT_BACKEND_ONLINE.get()); } if (importIncludesOrExcludesBranches(cfg.getBaseDN(), importConfig.getIncludeBranches(), importConfig.getExcludeBranches())) { // fail-fast to avoid ending up in an unrecoverable state for the server throw new DirectoryException(ResultCode.UNWILLING_TO_PERFORM, ERR_IMPORT_UNSUPPORTED_WITH_BRANCH.get()); } try { opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeBufferImporter.java
@@ -97,6 +97,7 @@ import org.opends.server.admin.std.server.BackendIndexCfg; import org.opends.server.admin.std.server.PDBBackendCfg; import org.opends.server.admin.std.server.PluggableBackendCfg; import org.opends.server.api.Backend; import org.opends.server.backends.RebuildConfig; import org.opends.server.backends.RebuildConfig.RebuildMode; import org.opends.server.backends.pdb.PDBStorage; @@ -682,9 +683,8 @@ } } if (excludeBranches.isEmpty() && includeBranches.size() == 1 && includeBranches.get(0).equals(baseDN)) if (!Backend.importIncludesOrExcludesBranches(Collections.singleton(baseDN), includeBranches, excludeBranches)) { // This entire base DN is explicitly included in the import with // no exclude branches that we need to migrate. opendj-server-legacy/src/main/java/org/opends/server/backends/pluggable/OnDiskMergeStorageImporter.java
@@ -48,6 +48,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.HashSet; @@ -84,6 +85,7 @@ import org.opends.server.admin.std.meta.BackendIndexCfgDefn.IndexType; import org.opends.server.admin.std.server.BackendIndexCfg; import org.opends.server.admin.std.server.PluggableBackendCfg; import org.opends.server.api.Backend; import org.opends.server.backends.pluggable.AttributeIndex.MatchingRuleIndex; import org.opends.server.backends.pluggable.ImportLDIFReader.EntryInformation; import org.opends.server.backends.pluggable.OnDiskMergeBufferImporter.DNCache; @@ -1456,9 +1458,7 @@ } } if (excludeBranches.isEmpty() && includeBranches.size() == 1 && includeBranches.get(0).equals(baseDN)) if (!Backend.importIncludesOrExcludesBranches(Collections.singleton(baseDN), includeBranches, excludeBranches)) { // This entire base DN is explicitly included in the import with // no exclude branches that we need to migrate. opendj-server-legacy/src/messages/org/opends/messages/backend.properties
@@ -1336,3 +1336,5 @@ backup in '%s'. A full backup will be executed ERR_VERIFY_BACKEND_ONLINE_579=The backend must be disabled before \ verification process can start ERR_IMPORT_UNSUPPORTED_WITH_BRANCH_580=Import operation is not supported \ when exclude or include sub-branches have been specified opendj-server-legacy/src/test/java/org/opends/server/backends/pluggable/PluggableBackendImplTestCase.java
@@ -40,6 +40,7 @@ import java.io.File; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.Random; @@ -898,6 +899,7 @@ importConf.setInvokeImportPlugins(true); importConf.setClearBackend(true); importConf.writeRejectedEntries(rejectedEntries); importConf.setIncludeBranches(Collections.singleton(testBaseDN)); backend.importLDIF(importConf, DirectoryServer.getInstance().getServerContext()); } assertEquals(rejectedEntries.size(), 0, "No entries should be rejected");