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