From b12119c55b89ece2495e84fba229d96439e8219b Mon Sep 17 00:00:00 2001
From: ludovicp <ludovicp@localhost>
Date: Fri, 30 Jul 2010 14:52:40 +0000
Subject: [PATCH] Implements index analysis features. There are 2 components: Index Filter Analyzer : Part of DatabaseEnvironmentProvider, it gathers search filter statistics and displays the index filter, number of hits, max matching entries, and a message. Compound filters are broken down to their basic elements. f an index was not utilized while evaluating the search filter, max matching entries will be -1 and a diagnostic message will be included. The monitor entry also includes when the analyzer was enabled along with the number of total index and unindexed searches processed.
---
opends/src/server/org/opends/server/backends/jeb/IndexQueryFactoryImpl.java | 61 ++++++++++++++++++++++++++++--
1 files changed, 56 insertions(+), 5 deletions(-)
diff --git a/opends/src/server/org/opends/server/backends/jeb/IndexQueryFactoryImpl.java b/opends/src/server/org/opends/server/backends/jeb/IndexQueryFactoryImpl.java
index 4811e06..1f54213 100644
--- a/opends/src/server/org/opends/server/backends/jeb/IndexQueryFactoryImpl.java
+++ b/opends/src/server/org/opends/server/backends/jeb/IndexQueryFactoryImpl.java
@@ -22,7 +22,7 @@
* CDDL HEADER END
*
*
- * Copyright 2009 Sun Microsystems, Inc.
+ * Copyright 2009-2010 Sun Microsystems, Inc.
*/
package org.opends.server.backends.jeb;
@@ -32,10 +32,19 @@
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.LockMode;
import java.util.Collection;
+import java.util.List;
import java.util.Map;
+
+import org.opends.messages.Message;
import org.opends.server.api.IndexQueryFactory;
import org.opends.server.types.ByteSequence;
+import static org.opends.messages.JebMessages.
+ INFO_JEB_INDEX_FILTER_INDEX_LIMIT_EXCEEDED;
+import static org.opends.messages.JebMessages.
+ INFO_JEB_INDEX_FILTER_INDEX_NOT_TRUSTED;
+import static org.opends.messages.JebMessages.
+ INFO_JEB_INDEX_FILTER_INDEX_REBUILD_IN_PROGRESS;
/**
@@ -76,7 +85,7 @@
{
@Override
- public EntryIDSet evaluate()
+ public EntryIDSet evaluate(List<Message> debugMessages)
{
// Read the database and get Record for the key.
DatabaseEntry key = new DatabaseEntry(value.toByteArray());
@@ -85,6 +94,27 @@
Index index = indexMap.get(indexID);
EntryIDSet entrySet =
index.readKey(key, null, LockMode.DEFAULT);
+ if(debugMessages != null && !entrySet.isDefined())
+ {
+ if(!index.isTrusted())
+ {
+ debugMessages.add(
+ INFO_JEB_INDEX_FILTER_INDEX_NOT_TRUSTED.get(
+ index.getName()));
+ }
+ else if(index.isRebuildRunning())
+ {
+ debugMessages.add(
+ INFO_JEB_INDEX_FILTER_INDEX_REBUILD_IN_PROGRESS.get(
+ index.getName()));
+ }
+ else
+ {
+ debugMessages.add(
+ INFO_JEB_INDEX_FILTER_INDEX_LIMIT_EXCEEDED.get(
+ index.getName()));
+ }
+ }
return entrySet;
}
};
@@ -103,13 +133,34 @@
{
@Override
- public EntryIDSet evaluate()
+ public EntryIDSet evaluate(List<Message> debugMessages)
{
// Find the right index.
Index index = indexMap.get(indexID);
EntryIDSet entrySet =
index.readRange(lowerBound.toByteArray(), upperBound
.toByteArray(), includeLowerBound, includeUpperBound);
+ if(debugMessages != null && !entrySet.isDefined())
+ {
+ if(!index.isTrusted())
+ {
+ debugMessages.add(
+ INFO_JEB_INDEX_FILTER_INDEX_NOT_TRUSTED.get(
+ index.getName()));
+ }
+ else if(index.isRebuildRunning())
+ {
+ debugMessages.add(
+ INFO_JEB_INDEX_FILTER_INDEX_REBUILD_IN_PROGRESS.get(
+ index.getName()));
+ }
+ else
+ {
+ debugMessages.add(
+ INFO_JEB_INDEX_FILTER_INDEX_LIMIT_EXCEEDED.get(
+ index.getName()));
+ }
+ }
return entrySet;
}
};
@@ -150,10 +201,10 @@
{
@Override
- public EntryIDSet evaluate()
+ public EntryIDSet evaluate(List<Message> debugMessages)
{
return new EntryIDSet();
}
};
}
-}
\ No newline at end of file
+}
--
Gitblit v1.10.0