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