From aa160386929ecf4162592214c75ae577a019be50 Mon Sep 17 00:00:00 2001
From: dugan <dugan@localhost>
Date: Thu, 19 Oct 2006 16:17:53 +0000
Subject: [PATCH] Add support for collecting verifyBackend statistics such as error-count and key-count in an Entry class, so calling methods can access to that information.

---
 opends/src/server/org/opends/server/tools/VerifyIndex.java        |    2 +-
 opends/src/server/org/opends/server/backends/jeb/BackendImpl.java |    5 +++--
 opends/src/server/org/opends/server/backends/jeb/VerifyJob.java   |   33 +++++++++++++++++++++++++++++++--
 3 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java b/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
index 9271dc7..aab7133 100644
--- a/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
+++ b/opends/src/server/org/opends/server/backends/jeb/BackendImpl.java
@@ -1120,6 +1120,7 @@
    * @param configEntry The backend instance configuration entry.
    * @param  baseDNs      The set of base DNs that have been configured for this
    *                      backend.
+   * @param statEntry Optional entry to save stats into.
    * @throws  ConfigException  If an unrecoverable problem arises during
    *                           initialization.
    * @throws  InitializationException  If a problem occurs during initialization
@@ -1128,7 +1129,7 @@
    * @throws DirectoryException If a Directory Server error occurs.
    */
   public void verifyBackend(VerifyConfig verifyConfig, ConfigEntry configEntry,
-                            DN[] baseDNs)
+                            DN[] baseDNs, Entry statEntry)
        throws InitializationException, ConfigException, DirectoryException
   {
     assert debugEnter(CLASS_NAME, "verifyBackend");
@@ -1154,7 +1155,7 @@
       }
 
       VerifyJob verifyJob = new VerifyJob(config, verifyConfig);
-      verifyJob.verifyBackend(rootContainer);
+      verifyJob.verifyBackend(rootContainer, statEntry);
     }
     catch (DatabaseException e)
     {
diff --git a/opends/src/server/org/opends/server/backends/jeb/VerifyJob.java b/opends/src/server/org/opends/server/backends/jeb/VerifyJob.java
index f9bbe75..05e72a2 100644
--- a/opends/src/server/org/opends/server/backends/jeb/VerifyJob.java
+++ b/opends/src/server/org/opends/server/backends/jeb/VerifyJob.java
@@ -201,10 +201,11 @@
    * Verify the backend.
    *
    * @param rootContainer The root container that holds the entries to verify.
+   * @param statEntry Optional statistics entry.
    * @throws DatabaseException If an error occurs in the JE database.
    * @throws JebException If an error occurs in the JE backend.
    */
-  public void verifyBackend(RootContainer rootContainer) throws
+  public void verifyBackend(RootContainer rootContainer, Entry statEntry) throws
       DatabaseException, JebException
   {
 
@@ -325,6 +326,10 @@
       rate = 1000f*keyCount / totalTime;
     }
 
+    addStatEntry(statEntry, "verify-error-count",
+              String.valueOf(errorCount));
+    addStatEntry(statEntry, "verify-key-count",
+              String.valueOf(keyCount));
     if (cleanMode)
     {
       int msgID = MSGID_JEB_VERIFY_CLEAN_FINAL_STATUS;
@@ -345,21 +350,29 @@
         message = getMessage(msgID, multiReferenceCount);
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.NOTICE,
                  message, msgID);
+        addStatEntry(statEntry, "verify-multiple-reference-count",
+                String.valueOf(multiReferenceCount));
 
         msgID = MSGID_JEB_VERIFY_ENTRY_LIMIT_EXCEEDED_COUNT;
         message = getMessage(msgID, entryLimitExceededCount);
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.NOTICE,
                  message, msgID);
+        addStatEntry(statEntry, "verify-entry-limit-exceeded-count",
+                String.valueOf(entryLimitExceededCount));
 
         msgID = MSGID_JEB_VERIFY_AVERAGE_REFERENCE_COUNT;
         message = getMessage(msgID, averageEntryReferences);
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.NOTICE,
                  message, msgID);
+        addStatEntry(statEntry, "verify-average-reference-count",
+                String.valueOf(averageEntryReferences));
 
         msgID = MSGID_JEB_VERIFY_MAX_REFERENCE_COUNT;
         message = getMessage(msgID, maxEntryPerValue);
         logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.NOTICE,
                  message, msgID);
+        addStatEntry(statEntry, "verify-max-reference-count",
+                   String.valueOf(maxEntryPerValue));
       }
     }
     else
@@ -369,7 +382,7 @@
                                   totalTime/1000, rate);
       logError(ErrorLogCategory.BACKEND, ErrorLogSeverity.NOTICE,
                message, msgID);
-
+      //TODO add entry-limit-stats to the statEntry
       if (entryLimitMap.size() > 0)
       {
         msgID = MSGID_JEB_VERIFY_ENTRY_LIMIT_STATS_HEADER;
@@ -1601,4 +1614,20 @@
       previousTime = latestTime;
     }
   }
+
+    /**
+     * Adds an attribute of type t and value v to the statEntry, only if the
+     * statEntry is not null.
+     * @param statEntry passed in from backentryImpl.verifyBackend.
+     * @param t String to be used as the attribute type.
+     * @param v String to be used as the attribute value.
+     */
+    private void addStatEntry(Entry statEntry, String t, String v)
+    {
+        if (statEntry != null)
+        {
+            Attribute a = new Attribute(t, v);
+            statEntry.addAttribute(a, null);
+        }
+    }
 }
diff --git a/opends/src/server/org/opends/server/tools/VerifyIndex.java b/opends/src/server/org/opends/server/tools/VerifyIndex.java
index 26c0c9f..1302c2a 100644
--- a/opends/src/server/org/opends/server/tools/VerifyIndex.java
+++ b/opends/src/server/org/opends/server/tools/VerifyIndex.java
@@ -456,7 +456,7 @@
     try
     {
       BackendImpl jebBackend = (BackendImpl)backend;
-      jebBackend.verifyBackend(verifyConfig, configEntry, baseDNArray);
+      jebBackend.verifyBackend(verifyConfig, configEntry, baseDNArray, null);
     }
     catch (Exception e)
     {

--
Gitblit v1.10.0