From 8dc42dce4649dd52d4f85b161cd09350fce60920 Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Mon, 22 Dec 2014 18:03:37 +0000
Subject: [PATCH] OPENDJ-1710: NPE performing deletes and potentially other indexed updates against Persistit backend

---
 opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VLVIndex.java |   16 ++++++++++------
 1 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VLVIndex.java b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VLVIndex.java
index 1735314..da4d0a1 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VLVIndex.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/VLVIndex.java
@@ -230,7 +230,7 @@
     {
       while (cursor.next())
       {
-        count.getAndAdd(SortValuesSet.getEncodedSize(cursor.getValue()));
+        count.getAndAdd(getEncodedSize(cursor.getValue()));
       }
     }
     finally
@@ -239,6 +239,12 @@
     }
   }
 
+  // Matches encoding from SortValuesSet.
+  private int getEncodedSize(ByteString bytes)
+  {
+    return bytes.toInt();
+  }
+
   /**
    * Close the VLV index.
    *
@@ -826,7 +832,7 @@
               }
               else
               {
-                targetOffset += SortValuesSet.getEncodedSize(cursor.getValue());
+                targetOffset += getEncodedSize(cursor.getValue());
               }
             }
 
@@ -1090,15 +1096,13 @@
       }
       else
       {
-        byte[] valueBytes = new byte[valueLength];
-        System.arraycopy(keyBytes, vBytesPos, valueBytes, 0, valueLength);
-        attributeValues[i] = ByteString.wrap(valueBytes);
+        attributeValues[i] = keyBytes.subSequence(vBytesPos, vBytesPos + valueLength);
       }
 
       vBytesPos += valueLength;
     }
 
-    final long id = JebFormat.toLong(keyBytes.toByteArray(), vBytesPos, keyBytes.length());
+    final long id = keyBytes.subSequence(vBytesPos, keyBytes.length()).toLong();
     return new SortValues(new EntryID(id), attributeValues, sortOrder);
   }
 

--
Gitblit v1.10.0