From 415e28f088bb1f9e4800c74539d401548012eedd Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Wed, 12 Nov 2008 03:43:10 +0000
Subject: [PATCH] Fixed an issue where adding a local backend with dsconfig resulted in a number of erroneous messages printed to the error log. 

---
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java                 |   47 ++++++++++++---
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VLVIndex.java                       |   15 +++--
 opendj-sdk/opends/src/server/org/opends/server/authorization/dseecompat/AciListenerManager.java |    3 
 opendj-sdk/opends/src/server/org/opends/server/core/GroupManager.java                           |    2 
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java                 |   91 +++++++++++++++++++++++-------
 opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java                          |    6 --
 6 files changed, 119 insertions(+), 45 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/authorization/dseecompat/AciListenerManager.java b/opendj-sdk/opends/src/server/org/opends/server/authorization/dseecompat/AciListenerManager.java
index 98e74ec..c99571e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/authorization/dseecompat/AciListenerManager.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/authorization/dseecompat/AciListenerManager.java
@@ -226,7 +226,8 @@
       // the ACI attribute.  If it does not, then log a warning message because
       // this processing could be very expensive.
       AttributeType aciType = DirectoryServer.getAttributeType("aci", true);
-      if (! backend.isIndexed(aciType, IndexType.PRESENCE))
+      if (backend.getEntryCount() > 0 &&
+          ! backend.isIndexed(aciType, IndexType.PRESENCE))
       {
         logError(WARN_ACI_ATTRIBUTE_NOT_INDEXED.get(backend.getBackendID(),
                                                     "aci"));
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java
index 7506cc7..6b90b13 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/AttributeIndex.java
@@ -1420,9 +1420,12 @@
                                     entryContainer);
           equalityIndex.open();
 
-          adminActionRequired = true;
-          messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
-                  name + ".equality"));
+          if(!equalityIndex.isTrusted())
+          {
+            adminActionRequired = true;
+            messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+                equalityIndex.getName()));
+          }
 
         }
         else
@@ -1434,7 +1437,7 @@
             adminActionRequired = true;
             Message message =
                     NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(
-                            name + ".equality");
+                            equalityIndex.getName());
             messages.add(message);
             this.equalityIndex.setIndexEntryLimit(indexEntryLimit);
           }
@@ -1480,10 +1483,12 @@
                                     entryContainer);
           presenceIndex.open();
 
-          adminActionRequired = true;
-
-          messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
-                  name + ".presence"));
+          if(!presenceIndex.isTrusted())
+          {
+            adminActionRequired = true;
+            messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+                presenceIndex.getName()));
+          }
         }
         else
         {
@@ -1494,7 +1499,7 @@
 
             Message message =
                     NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(
-                            name + ".presence");
+                            presenceIndex.getName());
             messages.add(message);
           }
         }
@@ -1540,9 +1545,12 @@
                                      entryContainer);
           substringIndex.open();
 
-          adminActionRequired = true;
-          messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
-                  name + ".substring"));
+          if(!substringIndex.isTrusted())
+          {
+            adminActionRequired = true;
+            messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+                substringIndex.getName()));
+          }
         }
         else
         {
@@ -1552,7 +1560,7 @@
             adminActionRequired = true;
             Message message =
                     NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(
-                            name + ".substring");
+                            substringIndex.getName());
             messages.add(message);
           }
 
@@ -1605,9 +1613,12 @@
                                     entryContainer);
           orderingIndex.open();
 
-          adminActionRequired = true;
-          messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
-                  name + ".ordering"));
+          if(!orderingIndex.isTrusted())
+          {
+            adminActionRequired = true;
+            messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+                orderingIndex.getName()));
+          }
         }
         else
         {
@@ -1618,7 +1629,7 @@
 
             Message message =
                     NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(
-                            name + ".ordering");
+                            orderingIndex.getName());
             messages.add(message);
           }
         }
@@ -1664,10 +1675,12 @@
                                        entryContainer);
           approximateIndex.open();
 
-          adminActionRequired = true;
-
-          messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
-                  name + ".approximate"));
+          if(!approximateIndex.isTrusted())
+          {
+            adminActionRequired = true;
+            messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+                approximateIndex.getName()));
+          }
         }
         else
         {
@@ -1678,7 +1691,7 @@
 
             Message message =
                     NOTE_JEB_CONFIG_INDEX_ENTRY_LIMIT_REQUIRES_REBUILD.get(
-                            name + ".approximate");
+                            approximateIndex.getName());
             messages.add(message);
           }
         }
@@ -1760,6 +1773,40 @@
   }
 
   /**
+   * Return true iff this index is trusted.
+   * @return the trusted state of this index
+   */
+  public boolean isTrusted()
+  {
+    if (equalityIndex != null && !equalityIndex.isTrusted())
+    {
+      return false;
+    }
+
+    if (presenceIndex != null && !presenceIndex.isTrusted())
+    {
+      return false;
+    }
+
+    if (substringIndex != null && !substringIndex.isTrusted())
+    {
+      return false;
+    }
+
+    if (orderingIndex != null && !orderingIndex.isTrusted())
+    {
+      return false;
+    }
+
+    if (approximateIndex != null && approximateIndex.isTrusted())
+    {
+      return false;
+    }
+
+    return true;
+  }
+
+  /**
    * Set the rebuild status of this index.
    * @param rebuildRunning True if a rebuild process on this index
    *                       is running or False otherwise.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
index ac18901..4f0cb6e 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/EntryContainer.java
@@ -58,6 +58,7 @@
 import org.opends.messages.MessageBuilder;
 import static org.opends.server.loggers.debug.DebugLogger.*;
 import org.opends.server.loggers.debug.DebugTracer;
+import static org.opends.server.loggers.ErrorLogger.logError;
 import static org.opends.server.util.ServerConstants.*;
 import org.opends.server.admin.std.server.LocalDBBackendCfg;
 import org.opends.server.admin.std.server.LocalDBIndexCfg;
@@ -225,6 +226,12 @@
         AttributeIndex index =
             new AttributeIndex(cfg, state, env, EntryContainer.this);
         index.open();
+        if(!index.isTrusted())
+        {
+          adminActionRequired = true;
+          messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+              cfg.getAttribute().getNameOrOID()));
+        }
         attrIndexMap.put(cfg.getAttribute(), index);
       }
       catch(Exception e)
@@ -236,9 +243,6 @@
         return ccr;
       }
 
-      adminActionRequired = true;
-      messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
-              cfg.getAttribute().getNameOrOID()));
       return new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired,
                                     messages);
     }
@@ -375,6 +379,12 @@
       {
         VLVIndex vlvIndex = new VLVIndex(cfg, state, env, EntryContainer.this);
         vlvIndex.open();
+        if(!vlvIndex.isTrusted())
+        {
+          adminActionRequired = true;
+          messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+              cfg.getName()));
+        }
         vlvIndexMap.put(cfg.getName().toLowerCase(), vlvIndex);
       }
       catch(Exception e)
@@ -386,10 +396,6 @@
         return ccr;
       }
 
-      adminActionRequired = true;
-
-      messages.add(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
-              cfg.getName()));
       return new ConfigChangeResult(ResultCode.SUCCESS, adminActionRequired,
                                     messages);
     }
@@ -540,12 +546,25 @@
                               config.getIndexEntryLimit(), 0, true,
                               env,this);
       id2children.open();
+
+      if(!id2children.isTrusted())
+      {
+        logError(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+            id2children.getName()));
+      }
+
       id2subtree = new Index(databasePrefix + "_" + ID2SUBTREE_DATABASE_NAME,
                              new ID2SIndexer(), state,
                              config.getIndexEntryLimit(), 0, true,
                              env, this);
       id2subtree.open();
 
+      if(!id2subtree.isTrusted())
+      {
+        logError(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+            id2subtree.getName()));
+      }
+
       dn2uri = new DN2URI(databasePrefix + "_" + REFERRAL_DATABASE_NAME,
                           env, this);
       dn2uri.open();
@@ -554,11 +573,14 @@
       {
         LocalDBIndexCfg indexCfg = config.getLocalDBIndex(idx);
 
-        //TODO: When issue 1793 is fixed, use inherited default values in
-        //admin framework instead for the entry limit.
         AttributeIndex index =
             new AttributeIndex(indexCfg, state, env, this);
         index.open();
+        if(!index.isTrusted())
+        {
+          logError(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+              index.getName()));
+        }
         attrIndexMap.put(indexCfg.getAttribute(), index);
       }
 
@@ -568,6 +590,13 @@
 
         VLVIndex vlvIndex = new VLVIndex(vlvIndexCfg, state, env, this);
         vlvIndex.open();
+
+        if(!vlvIndex.isTrusted())
+        {
+          logError(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(
+              vlvIndex.getName()));
+        }
+
         vlvIndexMap.put(vlvIndexCfg.getName().toLowerCase(), vlvIndex);
       }
     }
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java
index d26a70c..c3f01bf 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/Index.java
@@ -181,12 +181,6 @@
       setTrusted(null, true);
     }
 
-    // Issue warning if this index is not trusted
-    if(!trusted)
-    {
-      logError(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(name));
-    }
-
   }
 
   /**
diff --git a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VLVIndex.java b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VLVIndex.java
index b6b6fca..0060666 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VLVIndex.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/backends/jeb/VLVIndex.java
@@ -241,12 +241,6 @@
       setTrusted(null, true);
     }
 
-    // Issue warning if this vlvIndex is not trusted
-    if(!trusted)
-    {
-      logError(NOTE_JEB_INDEX_ADD_REQUIRES_REBUILD.get(name));
-    }
-
     this.count = new AtomicInteger(0);
     this.config.addChangeListener(this);
   }
@@ -1512,6 +1506,15 @@
   }
 
   /**
+   * Return true iff this index is trusted.
+   * @return the trusted state of this index
+   */
+  public boolean isTrusted()
+  {
+    return trusted;
+  }
+
+  /**
    * Set the rebuild status of this vlvIndex.
    * @param rebuildRunning True if a rebuild process on this vlvIndex
    *                       is running or False otherwise.
diff --git a/opendj-sdk/opends/src/server/org/opends/server/core/GroupManager.java b/opendj-sdk/opends/src/server/org/opends/server/core/GroupManager.java
index 592fb0b..b7f7687 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/core/GroupManager.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/core/GroupManager.java
@@ -590,7 +590,7 @@
       try
       {
         filter = groupImplementation.getGroupDefinitionFilter();
-        if (! backend.isIndexed(filter))
+        if (backend.getEntryCount() > 0 && ! backend.isIndexed(filter))
         {
           logError(WARN_GROUP_FILTER_NOT_INDEXED.get(String.valueOf(filter),
                         String.valueOf(configEntryDN), backend.getBackendID()));

--
Gitblit v1.10.0