From 8ce2ccf4110c3847927334138646795dfe50acce Mon Sep 17 00:00:00 2001
From: Matthew Swift <matthew.swift@forgerock.com>
Date: Mon, 22 Dec 2014 23:13:32 +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/DN2URI.java |   17 ++++-------------
 1 files changed, 4 insertions(+), 13 deletions(-)

diff --git a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/DN2URI.java b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/DN2URI.java
index 34d8cc5..d25e7ec 100644
--- a/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/DN2URI.java
+++ b/opendj3-server-dev/src/server/org/opends/server/backends/pluggable/DN2URI.java
@@ -580,7 +580,6 @@
     suffix.append((byte) 0x00);
     end.append((byte) 0x01);
 
-    ByteSequence startKey = suffix;
     try
     {
       final Cursor cursor = txn.openCursor(treeName);
@@ -588,23 +587,15 @@
       {
         // Initialize the cursor very close to the starting value then
         // step forward until we pass the ending value.
-        boolean success = cursor.positionToKey(startKey);
-        while (success)
+        boolean success = cursor.positionToKey(suffix);
+        while (success && cursor.getKey().compareTo(end) < 0)
         {
-          ByteString key = cursor.getKey();
-          int cmp = ByteSequence.COMPARATOR.compare(key, end);
-          if (cmp >= 0)
-          {
-            // We have gone past the ending value.
-            break;
-          }
-
           // We have found a subordinate referral.
-          DN dn = JebFormat.dnFromDNKey(key, entryContainer.getBaseDN());
+          DN dn = JebFormat.dnFromDNKey(cursor.getKey(), entryContainer.getBaseDN());
 
           // Make sure the referral is within scope.
           if (searchOp.getScope() == SearchScope.SINGLE_LEVEL
-              && JebFormat.findDNKeyParent(key) != baseDN.length())
+              && JebFormat.findDNKeyParent(cursor.getKey()) != baseDN.length())
           {
             continue;
           }

--
Gitblit v1.10.0