You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2020/01/30 08:15:51 UTC
[lucenenet] 02/09: Lucene.Net.TestFramework.Search.AssertingScorer:
Reverted back to using WeakReference for the value,
since values are strongly referenced in ConditionalWeakTable
This is an automated email from the ASF dual-hosted git repository.
nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git
commit e73e44b977a2863f1cdabe372c389d7f837bf525
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Sun Jan 26 20:15:27 2020 +0700
Lucene.Net.TestFramework.Search.AssertingScorer: Reverted back to using WeakReference for the value, since values are strongly referenced in ConditionalWeakTable
---
src/Lucene.Net.TestFramework/Search/AssertingScorer.cs | 11 +++--------
1 file changed, 3 insertions(+), 8 deletions(-)
diff --git a/src/Lucene.Net.TestFramework/Search/AssertingScorer.cs b/src/Lucene.Net.TestFramework/Search/AssertingScorer.cs
index e15df60..023378e 100644
--- a/src/Lucene.Net.TestFramework/Search/AssertingScorer.cs
+++ b/src/Lucene.Net.TestFramework/Search/AssertingScorer.cs
@@ -32,8 +32,8 @@ namespace Lucene.Net.Search
// could loose references because of eg.
// AssertingScorer.Score(Collector) which needs to delegate to work correctly
#if FEATURE_CONDITIONALWEAKTABLE_ADDORUPDATE
- private static readonly ConditionalWeakTable<Scorer, AssertingScorer> ASSERTING_INSTANCES =
- new ConditionalWeakTable<Scorer, AssertingScorer>();
+ private static readonly ConditionalWeakTable<Scorer, WeakReference<AssertingScorer>> ASSERTING_INSTANCES =
+ new ConditionalWeakTable<Scorer, WeakReference<AssertingScorer>>();
#else
private static readonly IDictionary<Scorer, WeakReference<AssertingScorer>> ASSERTING_INSTANCES =
new ConcurrentHashMapWrapper<Scorer, WeakReference<AssertingScorer>>(new WeakDictionary<Scorer, WeakReference<AssertingScorer>>());
@@ -47,7 +47,7 @@ namespace Lucene.Net.Search
}
AssertingScorer assertScorer = new AssertingScorer(random, other);
#if FEATURE_CONDITIONALWEAKTABLE_ADDORUPDATE
- ASSERTING_INSTANCES.AddOrUpdate(other, assertScorer);
+ ASSERTING_INSTANCES.AddOrUpdate(other, new WeakReference<AssertingScorer>(assertScorer));
#else
ASSERTING_INSTANCES[other] = new WeakReference<AssertingScorer>(assertScorer);
#endif
@@ -61,13 +61,8 @@ namespace Lucene.Net.Search
{
return other;
}
-
-#if FEATURE_CONDITIONALWEAKTABLE_ADDORUPDATE
- if (!ASSERTING_INSTANCES.TryGetValue(other, out AssertingScorer assertingScorer) || assertingScorer == null)
-#else
if (!ASSERTING_INSTANCES.TryGetValue(other, out WeakReference<AssertingScorer> assertingScorerRef) || assertingScorerRef == null ||
!assertingScorerRef.TryGetTarget(out AssertingScorer assertingScorer) || assertingScorer == null)
-#endif
{
// can happen in case of memory pressure or if
// scorer1.Score(collector) calls