From 7b44fa6b33c5441b25e900fb906e280641ce3737 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 24 Apr 2015 09:14:28 +0000
Subject: [PATCH] (CR-6756) Fixed IllegalArgumentException when import triggers index entry limits
---
opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java | 26 ++++++++++++++++++--------
1 files changed, 18 insertions(+), 8 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java
index 90868d3..e7d0eda 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/Importer.java
@@ -30,6 +30,7 @@
import static org.opends.messages.JebMessages.*;
import static org.opends.server.admin.std.meta.LocalDBIndexCfgDefn.IndexType.*;
import static org.opends.server.backends.jeb.IndexOutputBuffer.*;
+import static org.opends.server.backends.pluggable.SuffixContainer.*;
import static org.opends.server.util.DynamicConstants.*;
import static org.opends.server.util.ServerConstants.*;
import static org.opends.server.util.StaticUtils.*;
@@ -2417,7 +2418,8 @@
*/
private final class ScratchFileWriterTask implements Callable<Void>
{
- private final int DRAIN_TO = 3;
+ private static final int DRAIN_TO = 3;
+
private final IndexManager indexMgr;
private final BlockingQueue<IndexOutputBuffer> queue;
private final ByteArrayOutputStream insertByteStream = new ByteArrayOutputStream(2 * bufferSize);
@@ -2642,9 +2644,10 @@
{
if (insertKeyCount > indexMgr.getLimit())
{
+ // special handling when index entry limit has been exceeded
insertKeyCount = 1;
insertByteStream.reset();
- writePackedInt(insertByteStream, -1);
+ writePackedLong(insertByteStream, IndexInputBuffer.UNDEFINED_SIZE);
}
int insertSize = writePackedInt(bufferStream, insertKeyCount);
@@ -2693,6 +2696,14 @@
return writeSize;
}
+ private int writePackedLong(OutputStream stream, long value) throws IOException
+ {
+ int writeSize = PackedInteger.getWriteLongLength(value);
+ PackedInteger.writeLong(tmpArray, 0, value);
+ stream.write(tmpArray, 0, writeSize);
+ return writeSize;
+ }
+
/** {@inheritDoc} */
@Override
public String toString()
@@ -3404,11 +3415,11 @@
for (String index : rebuildList)
{
final String lowerName = index.toLowerCase();
- if ("dn2id".equals(lowerName))
+ if (DN2ID_INDEX_NAME.equals(lowerName))
{
indexCount += 3;
}
- else if ("dn2uri".equals(lowerName))
+ else if (DN2URI_INDEX_NAME.equals(lowerName))
{
indexCount++;
}
@@ -3420,8 +3431,8 @@
}
indexCount++;
}
- else if ("id2subtree".equals(lowerName)
- || "id2children".equals(lowerName))
+ else if (ID2SUBTREE_INDEX_NAME.equals(lowerName)
+ || ID2CHILDREN_INDEX_NAME.equals(lowerName))
{
throw attributeIndexNotConfigured(index);
}
@@ -4148,8 +4159,7 @@
public String toString()
{
return getClass().getSimpleName()
- + "(attributeType=" + attributeType
- + ", indexType=" + indexType
+ + "(index=" + attributeType.getNameOrOID() + "." + indexType
+ ", entryLimit=" + entryLimit
+ ")";
}
--
Gitblit v1.10.0