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/IndexInputBuffer.java | 20 ++++++++++++++++----
1 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/IndexInputBuffer.java b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/IndexInputBuffer.java
index 1466cef..c7f4912 100644
--- a/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/IndexInputBuffer.java
+++ b/opendj-server-legacy/src/main/java/org/opends/server/backends/jeb/IndexInputBuffer.java
@@ -51,6 +51,7 @@
}
private static final LocalizedLogger logger = LocalizedLogger.getLoggerForThisClass();
+ static final long UNDEFINED_SIZE = -1;
private final IndexManager indexMgr;
private final FileChannel channel;
@@ -206,7 +207,13 @@
}
indexID = getInt();
+ readKey();
+ recordState = RecordState.NEED_INSERT_ID_SET;
+ }
+
+ private void readKey() throws IOException
+ {
ensureData(20);
byte[] ba = cache.array();
int p = cache.position();
@@ -221,8 +228,6 @@
keyBuf.clear();
cache.get(keyBuf.array(), 0, keyLen);
keyBuf.limit(keyLen);
-
- recordState = RecordState.NEED_INSERT_ID_SET;
}
private int getInt() throws IOException
@@ -261,14 +266,21 @@
p = cache.position();
}
len = PackedInteger.getReadLongLength(ba, p);
- long l = PackedInteger.readLong(ba, p);
+ long entryID = PackedInteger.readLong(ba, p);
p += len;
cache.position(p);
// idSet will be null if skipping.
if (idSet != null)
{
- idSet.addEntryID(l);
+ if (entryID == UNDEFINED_SIZE)
+ {
+ idSet.setUndefined();
+ }
+ else
+ {
+ idSet.addEntryID(entryID);
+ }
}
}
--
Gitblit v1.10.0