|
From: <fab...@us...> - 2009-03-17 16:51:58
|
Revision: 4142
http://nhibernate.svn.sourceforge.net/nhibernate/?rev=4142&view=rev
Author: fabiomaulo
Date: 2009-03-17 16:51:43 +0000 (Tue, 17 Mar 2009)
Log Message:
-----------
Fix NH-1671
Modified Paths:
--------------
trunk/nhibernate/src/NHibernate/Util/SoftLimitMRUCache.cs
trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
Added Paths:
-----------
trunk/nhibernate/src/NHibernate.Test/UtilityTest/SoftLimitMRUCacheFixture.cs
Modified: trunk/nhibernate/src/NHibernate/Util/SoftLimitMRUCache.cs
===================================================================
--- trunk/nhibernate/src/NHibernate/Util/SoftLimitMRUCache.cs 2009-03-17 05:01:00 UTC (rev 4141)
+++ trunk/nhibernate/src/NHibernate/Util/SoftLimitMRUCache.cs 2009-03-17 16:51:43 UTC (rev 4142)
@@ -32,8 +32,8 @@
// actual cache of the entries. soft references are used for both the keys and the
// values here since the values pertaining to the MRU entries are kept in a
// separate hard reference cache (to avoid their enqueuement/garbage-collection).
- [NonSerialized]
- private readonly IDictionary softReferenceCache = new Hashtable();
+ [NonSerialized]
+ private readonly IDictionary softReferenceCache = new WeakHashtable();
// the MRU cache used to keep hard references to the most recently used query plans;
// note : LRU here is a bit of a misnomer, it indicates that LRU entries are removed, the
Modified: trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-17 05:01:00 UTC (rev 4141)
+++ trunk/nhibernate/src/NHibernate.Test/NHibernate.Test.csproj 2009-03-17 16:51:43 UTC (rev 4142)
@@ -1113,6 +1113,7 @@
<Compile Include="UtilityTest\SafetyEnumerableFixture.cs" />
<Compile Include="UtilityTest\SequencedHashMapFixture.cs" />
<Compile Include="UtilityTest\SingletonEnumerableFixture.cs" />
+ <Compile Include="UtilityTest\SoftLimitMRUCacheFixture.cs" />
<Compile Include="UtilityTest\StringHelperFixture.cs" />
<Compile Include="UtilityTest\StringTokenizerFixture.cs" />
<Compile Include="UtilityTest\ThreadSafeDictionaryFixture.cs" />
Added: trunk/nhibernate/src/NHibernate.Test/UtilityTest/SoftLimitMRUCacheFixture.cs
===================================================================
--- trunk/nhibernate/src/NHibernate.Test/UtilityTest/SoftLimitMRUCacheFixture.cs (rev 0)
+++ trunk/nhibernate/src/NHibernate.Test/UtilityTest/SoftLimitMRUCacheFixture.cs 2009-03-17 16:51:43 UTC (rev 4142)
@@ -0,0 +1,29 @@
+using System;
+using NHibernate.Util;
+using NUnit.Framework;
+using NUnit.Framework.SyntaxHelpers;
+
+namespace NHibernate.Test.UtilityTest
+{
+ [TestFixture]
+ public class SoftLimitMRUCacheFixture
+ {
+ [Test]
+ public void DontFillUp()
+ {
+ // NH-1671
+ const int count = 32;
+ var s = new SoftLimitMRUCache(count);
+ for (int i = 0; i < count+10; i++)
+ {
+ s.Put(new object(), new object());
+ }
+ Assert.That(s.Count, Is.EqualTo(count));
+
+ GC.Collect();
+ s.Put(new object(), new object());
+
+ Assert.That(s.SoftCount, Is.EqualTo(count + 1));
+ }
+ }
+}
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|