From db4a0e0b9584ca69724f0492ad9e091aa02d01fc Mon Sep 17 00:00:00 2001
From: davidely <davidely@localhost>
Date: Sun, 02 Sep 2007 04:00:42 +0000
Subject: [PATCH] There are several improvements to the unit test framework in this commit.

---
 opendj-sdk/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java |   21 +++++++++++++++++----
 1 files changed, 17 insertions(+), 4 deletions(-)

diff --git a/opendj-sdk/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java b/opendj-sdk/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java
index 788deb4..82974fc 100644
--- a/opendj-sdk/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java
+++ b/opendj-sdk/opends/src/server/org/opends/server/extensions/SoftReferenceEntryCache.java
@@ -100,7 +100,9 @@
   // reference is freed.
   private ReferenceQueue<CacheEntry> referenceQueue;
 
+  private Thread cleanerThread;
 
+  private volatile boolean shutdown = false;
 
   static
   {
@@ -131,8 +133,7 @@
     setLockTimeout(LockManager.DEFAULT_TIMEOUT);
     referenceQueue = new ReferenceQueue<CacheEntry>();
 
-    Thread cleanerThread =
-         new Thread(this, "Soft Reference Entry Cache Cleaner");
+    cleanerThread = new Thread(this, "Soft Reference Entry Cache Cleaner");
     cleanerThread.setDaemon(true);
     cleanerThread.start();
   }
@@ -167,10 +168,22 @@
   /**
    * {@inheritDoc}
    */
-  public void finalizeEntryCache()
+  public synchronized void finalizeEntryCache()
   {
+    shutdown = true;
     dnMap.clear();
     idMap.clear();
+    if (cleanerThread != null) {
+      for (int i = 0; cleanerThread.isAlive() && (i < 5); i++) {
+        cleanerThread.interrupt();
+        try {
+          cleanerThread.join(10);
+        } catch (InterruptedException e) {
+          // We'll exit eventually.
+        }
+      }
+      cleanerThread = null;
+    }
   }
 
 
@@ -595,7 +608,7 @@
    */
   public void run()
   {
-    while (true)
+    while (!shutdown)
     {
       try
       {

--
Gitblit v1.10.0