From bd39bee8907029e182efb24be9c0b160fd1b55a3 Mon Sep 17 00:00:00 2001
From: Ludovic Poitou <ludovic.poitou@forgerock.com>
Date: Mon, 28 May 2012 15:46:54 +0000
Subject: [PATCH] Fix OPENDJ-507: Index may go untrusted without a message in the errors log. Added log message in all places we call setTrusted(tnx, false).

---
 opends/src/server/org/opends/server/backends/jeb/Index.java |   29 +++++++++++++----------------
 1 files changed, 13 insertions(+), 16 deletions(-)

diff --git a/opends/src/server/org/opends/server/backends/jeb/Index.java b/opends/src/server/org/opends/server/backends/jeb/Index.java
index abcdc97..92a1588 100644
--- a/opends/src/server/org/opends/server/backends/jeb/Index.java
+++ b/opends/src/server/org/opends/server/backends/jeb/Index.java
@@ -23,6 +23,7 @@
  *
  *
  *      Copyright 2006-2010 Sun Microsystems, Inc.
+ *      Portions Copyright 2012 ForgeRock AS
  */
 package org.opends.server.backends.jeb;
 
@@ -569,6 +570,7 @@
           }
 
           setTrusted(txn, false);
+          logError(ERR_JEB_INDEX_CORRUPT_REQUIRES_REBUILD.get(name));
         }
 
         if((rebuildRunning || trusted) && addedIDs != null &&
@@ -690,6 +692,7 @@
         }
 
         setTrusted(txn, false);
+        logError(ERR_JEB_INDEX_CORRUPT_REQUIRES_REBUILD.get(name));
       }
 
       if((rebuildRunning || trusted) && addedIDs != null && addedIDs.size() > 0)
@@ -785,8 +788,6 @@
         // will probably not be rebuilt.
         if(trusted && !rebuildRunning)
         {
-          setTrusted(txn, false);
-
           if(debugEnabled())
           {
             StringBuilder builder = new StringBuilder();
@@ -795,6 +796,7 @@
                 "index %s.\nKey:%s", name, builder.toString());
           }
 
+          setTrusted(txn, false);
           logError(ERR_JEB_INDEX_CORRUPT_REQUIRES_REBUILD.get(name));
         }
       }
@@ -832,23 +834,19 @@
       EntryIDSet entryIDList = new EntryIDSet(key.getData(), data.getData());
       // Ignore failures if rebuild is running since the entry ID is
       // probably already removed.
-      if (!entryIDList.remove(entryID) && !rebuildRunning)
+      if (!entryIDList.remove(entryID) && !rebuildRunning && trusted)
       {
-        if(trusted)
+        if(debugEnabled())
         {
-          setTrusted(txn, false);
-
-          if(debugEnabled())
-          {
-            StringBuilder builder = new StringBuilder();
-            StaticUtils.byteArrayToHexPlusAscii(builder, key.getData(), 4);
-            TRACER.debugError("The expected entry ID does not exist in " +
+          StringBuilder builder = new StringBuilder();
+          StaticUtils.byteArrayToHexPlusAscii(builder, key.getData(), 4);
+          TRACER.debugError("The expected entry ID does not exist in " +
                 "the entry ID list for index %s.\nKey:%s",
                 name, builder.toString());
-          }
-
-          logError(ERR_JEB_INDEX_CORRUPT_REQUIRES_REBUILD.get(name));
         }
+
+        setTrusted(txn, false);
+        logError(ERR_JEB_INDEX_CORRUPT_REQUIRES_REBUILD.get(name));
       }
       else
       {
@@ -873,8 +871,6 @@
       // will probably not be rebuilt.
       if(trusted && !rebuildRunning)
       {
-        setTrusted(txn, false);
-
         if(debugEnabled())
         {
           StringBuilder builder = new StringBuilder();
@@ -883,6 +879,7 @@
               "index %s.\nKey:%s", name, builder.toString());
         }
 
+        setTrusted(txn, false);
         logError(ERR_JEB_INDEX_CORRUPT_REQUIRES_REBUILD.get(name));
       }
     }

--
Gitblit v1.10.0