You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by sy...@apache.org on 2016/05/28 18:00:38 UTC
[1/9] lucenenet git commit: Adding NUnit project GUIDs to test
projects (automatically added by VS)
Repository: lucenenet
Updated Branches:
refs/heads/master 6533b77bd -> 0af102e74
Adding NUnit project GUIDs to test projects (automatically added by VS)
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/9185b0af
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/9185b0af
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/9185b0af
Branch: refs/heads/master
Commit: 9185b0afdae2c875e31d637dc211bacdd1ba3f55
Parents: 6533b77
Author: Connie Yau <co...@microsoft.com>
Authored: Wed Apr 27 13:58:16 2016 -0700
Committer: Connie Yau <co...@microsoft.com>
Committed: Mon May 2 17:05:21 2016 -0700
----------------------------------------------------------------------
.../Lucene.Net.Tests.Analysis.Common.csproj | 3 +++
.../Lucene.Net.Tests.Classification.csproj | 4 +++-
.../Lucene.Net.Tests.Expressions.csproj | 3 +++
src/Lucene.Net.Tests.Facet/Lucene.Net.Tests.Facet.csproj | 4 +++-
src/Lucene.Net.Tests.Join/Lucene.Net.Tests.Join.csproj | 3 +++
src/Lucene.Net.Tests.Queries/Lucene.Net.Tests.Queries.csproj | 4 +++-
6 files changed, 18 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/9185b0af/src/Lucene.Net.Tests.Analysis.Common/Lucene.Net.Tests.Analysis.Common.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.Analysis.Common/Lucene.Net.Tests.Analysis.Common.csproj b/src/Lucene.Net.Tests.Analysis.Common/Lucene.Net.Tests.Analysis.Common.csproj
index 722b345..92e2bff 100644
--- a/src/Lucene.Net.Tests.Analysis.Common/Lucene.Net.Tests.Analysis.Common.csproj
+++ b/src/Lucene.Net.Tests.Analysis.Common/Lucene.Net.Tests.Analysis.Common.csproj
@@ -116,6 +116,9 @@
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
+ <ItemGroup>
+ <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/9185b0af/src/Lucene.Net.Tests.Classification/Lucene.Net.Tests.Classification.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.Classification/Lucene.Net.Tests.Classification.csproj b/src/Lucene.Net.Tests.Classification/Lucene.Net.Tests.Classification.csproj
index 89f41d7..2d618e0 100644
--- a/src/Lucene.Net.Tests.Classification/Lucene.Net.Tests.Classification.csproj
+++ b/src/Lucene.Net.Tests.Classification/Lucene.Net.Tests.Classification.csproj
@@ -66,7 +66,9 @@
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
- <ItemGroup />
+ <ItemGroup>
+ <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/9185b0af/src/Lucene.Net.Tests.Expressions/Lucene.Net.Tests.Expressions.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.Expressions/Lucene.Net.Tests.Expressions.csproj b/src/Lucene.Net.Tests.Expressions/Lucene.Net.Tests.Expressions.csproj
index 476e3b5..d69d88d 100644
--- a/src/Lucene.Net.Tests.Expressions/Lucene.Net.Tests.Expressions.csproj
+++ b/src/Lucene.Net.Tests.Expressions/Lucene.Net.Tests.Expressions.csproj
@@ -76,6 +76,9 @@
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
+ <ItemGroup>
+ <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/9185b0af/src/Lucene.Net.Tests.Facet/Lucene.Net.Tests.Facet.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.Facet/Lucene.Net.Tests.Facet.csproj b/src/Lucene.Net.Tests.Facet/Lucene.Net.Tests.Facet.csproj
index 767e3d0..18ad7c8 100644
--- a/src/Lucene.Net.Tests.Facet/Lucene.Net.Tests.Facet.csproj
+++ b/src/Lucene.Net.Tests.Facet/Lucene.Net.Tests.Facet.csproj
@@ -85,7 +85,9 @@
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
- <ItemGroup />
+ <ItemGroup>
+ <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/9185b0af/src/Lucene.Net.Tests.Join/Lucene.Net.Tests.Join.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.Join/Lucene.Net.Tests.Join.csproj b/src/Lucene.Net.Tests.Join/Lucene.Net.Tests.Join.csproj
index 312fbdd..f49b920 100644
--- a/src/Lucene.Net.Tests.Join/Lucene.Net.Tests.Join.csproj
+++ b/src/Lucene.Net.Tests.Join/Lucene.Net.Tests.Join.csproj
@@ -71,6 +71,9 @@
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
+ <ItemGroup>
+ <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/9185b0af/src/Lucene.Net.Tests.Queries/Lucene.Net.Tests.Queries.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests.Queries/Lucene.Net.Tests.Queries.csproj b/src/Lucene.Net.Tests.Queries/Lucene.Net.Tests.Queries.csproj
index 125123d..3780567 100644
--- a/src/Lucene.Net.Tests.Queries/Lucene.Net.Tests.Queries.csproj
+++ b/src/Lucene.Net.Tests.Queries/Lucene.Net.Tests.Queries.csproj
@@ -77,7 +77,9 @@
<ItemGroup>
<None Include="packages.config" />
</ItemGroup>
- <ItemGroup />
+ <ItemGroup>
+ <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" />
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
[2/9] lucenenet git commit: Adding IMergeScheduler and
IConcurrentMergeScheduler
Posted by sy...@apache.org.
Adding IMergeScheduler and IConcurrentMergeScheduler
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/17515ff5
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/17515ff5
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/17515ff5
Branch: refs/heads/master
Commit: 17515ff51c017cb533b6c610e582be0b2c7f62f1
Parents: 9185b0a
Author: Connie Yau <co...@microsoft.com>
Authored: Mon Apr 18 15:22:23 2016 -0700
Committer: Connie Yau <co...@microsoft.com>
Committed: Tue May 3 11:34:17 2016 -0700
----------------------------------------------------------------------
.../Index/ConcurrentMergeScheduler.cs | 4 ++--
.../Index/IConcurrentMergeScheduler.cs | 15 +++++++++++++++
src/Lucene.Net.Core/Index/IMergeScheduler.cs | 11 +++++++++++
src/Lucene.Net.Core/Index/IndexWriter.cs | 2 +-
src/Lucene.Net.Core/Index/IndexWriterConfig.cs | 6 +++---
src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs | 6 ++++--
src/Lucene.Net.Core/Index/MergeScheduler.cs | 4 ++--
src/Lucene.Net.Core/Index/NoMergeScheduler.cs | 2 +-
src/Lucene.Net.Core/Lucene.Net.csproj | 2 ++
src/Lucene.Net.TestFramework/Util/TestUtil.cs | 12 ++++++------
.../core/Index/TestIndexWriterConfig.cs | 4 ++--
.../core/Index/TestIndexWriterExceptions.cs | 6 +++---
.../core/Index/TestIndexWriterOnDiskFull.cs | 14 +++++++-------
.../Index/TestIndexWriterOutOfFileDescriptors.cs | 6 +++---
14 files changed, 62 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Core/Index/ConcurrentMergeScheduler.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/ConcurrentMergeScheduler.cs b/src/Lucene.Net.Core/Index/ConcurrentMergeScheduler.cs
index eeb3231..7f09844 100644
--- a/src/Lucene.Net.Core/Index/ConcurrentMergeScheduler.cs
+++ b/src/Lucene.Net.Core/Index/ConcurrentMergeScheduler.cs
@@ -44,7 +44,7 @@ namespace Lucene.Net.Index
/// incoming threads by pausing until one more more merges
/// complete.</p>
/// </summary>
- public class ConcurrentMergeScheduler : MergeScheduler
+ public class ConcurrentMergeScheduler : MergeScheduler, IConcurrentMergeScheduler
{
private int MergeThreadPriority_Renamed = -1;
@@ -743,7 +743,7 @@ namespace Lucene.Net.Index
return sb.ToString();
}
- public override object Clone()
+ public override IMergeScheduler Clone()
{
ConcurrentMergeScheduler clone = (ConcurrentMergeScheduler)base.Clone();
clone.Writer = null;
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Core/Index/IConcurrentMergeScheduler.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/IConcurrentMergeScheduler.cs b/src/Lucene.Net.Core/Index/IConcurrentMergeScheduler.cs
new file mode 100644
index 0000000..bbf205f
--- /dev/null
+++ b/src/Lucene.Net.Core/Index/IConcurrentMergeScheduler.cs
@@ -0,0 +1,15 @@
+\ufeffnamespace Lucene.Net.Index
+{
+ public interface IConcurrentMergeScheduler : IMergeScheduler
+ {
+ int MaxThreadCount { get; }
+ int MaxMergeCount { get; }
+ int MergeThreadPriority { get; set; }
+
+ void Sync();
+ void SetMaxMergesAndThreads(int maxMergeCount, int maxThreadCount);
+
+ void SetSuppressExceptions();
+ void ClearSuppressExceptions();
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Core/Index/IMergeScheduler.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/IMergeScheduler.cs b/src/Lucene.Net.Core/Index/IMergeScheduler.cs
new file mode 100644
index 0000000..36347b5
--- /dev/null
+++ b/src/Lucene.Net.Core/Index/IMergeScheduler.cs
@@ -0,0 +1,11 @@
+\ufeffusing System;
+
+namespace Lucene.Net.Index
+{
+ public interface IMergeScheduler : IDisposable
+ {
+ void Merge(IndexWriter writer, MergeTrigger trigger, bool newMergesFound);
+
+ IMergeScheduler Clone();
+ }
+}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Core/Index/IndexWriter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/IndexWriter.cs b/src/Lucene.Net.Core/Index/IndexWriter.cs
index 2cb6c0a..2c759e0 100644
--- a/src/Lucene.Net.Core/Index/IndexWriter.cs
+++ b/src/Lucene.Net.Core/Index/IndexWriter.cs
@@ -260,7 +260,7 @@ namespace Lucene.Net.Index
private readonly HashSet<SegmentCommitInfo> mergingSegments = new HashSet<SegmentCommitInfo>();
private readonly MergePolicy mergePolicy;
- private readonly MergeScheduler mergeScheduler;
+ private readonly IMergeScheduler mergeScheduler;
private readonly LinkedList<MergePolicy.OneMerge> PendingMerges = new LinkedList<MergePolicy.OneMerge>();
private readonly HashSet<MergePolicy.OneMerge> RunningMerges = new HashSet<MergePolicy.OneMerge>();
private IList<MergePolicy.OneMerge> MergeExceptions = new List<MergePolicy.OneMerge>();
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Core/Index/IndexWriterConfig.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/IndexWriterConfig.cs b/src/Lucene.Net.Core/Index/IndexWriterConfig.cs
index aaf160b..33f31a0 100644
--- a/src/Lucene.Net.Core/Index/IndexWriterConfig.cs
+++ b/src/Lucene.Net.Core/Index/IndexWriterConfig.cs
@@ -201,7 +201,7 @@ namespace Lucene.Net.Index
// such as line numbers, message throughput, ...
clone.infoStream = (InfoStream)infoStream.Clone();
clone.mergePolicy = (MergePolicy)mergePolicy.Clone();
- clone.mergeScheduler = (MergeScheduler)mergeScheduler.Clone();
+ clone.mergeScheduler = mergeScheduler.Clone();
return clone;
}
@@ -322,7 +322,7 @@ namespace Lucene.Net.Index
///
/// <p>Only takes effect when IndexWriter is first created.
/// </summary>
- public IndexWriterConfig SetMergeScheduler(MergeScheduler mergeScheduler)
+ public IndexWriterConfig SetMergeScheduler(IMergeScheduler mergeScheduler)
{
if (mergeScheduler == null)
{
@@ -332,7 +332,7 @@ namespace Lucene.Net.Index
return this;
}
- public override MergeScheduler MergeScheduler
+ public override IMergeScheduler MergeScheduler
{
get
{
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs b/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
index 7d90819..c2961f9 100644
--- a/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
+++ b/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
@@ -75,7 +75,7 @@ namespace Lucene.Net.Index
/// <summary>
/// <seealso cref="MergeScheduler"/> to use for running merges. </summary>
- protected internal volatile MergeScheduler mergeScheduler;
+ protected internal volatile IMergeScheduler mergeScheduler;
/// <summary>
/// Timeout when trying to obtain the write lock on init. </summary>
@@ -149,7 +149,9 @@ namespace Lucene.Net.Index
useCompoundFile = IndexWriterConfig.DEFAULT_USE_COMPOUND_FILE_SYSTEM;
openMode = OpenMode_e.CREATE_OR_APPEND;
similarity = IndexSearcher.DefaultSimilarity;
+
mergeScheduler = new ConcurrentMergeScheduler();
+
writeLockTimeout = IndexWriterConfig.WRITE_LOCK_TIMEOUT;
indexingChain = DocumentsWriterPerThread.defaultIndexingChain;
codec = Codec.Default;
@@ -547,7 +549,7 @@ namespace Lucene.Net.Index
/// Returns the <seealso cref="MergeScheduler"/> that was set by
/// <seealso cref="IndexWriterConfig#setMergeScheduler(MergeScheduler)"/>.
/// </summary>
- public virtual MergeScheduler MergeScheduler
+ public virtual IMergeScheduler MergeScheduler
{
get
{
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Core/Index/MergeScheduler.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/MergeScheduler.cs b/src/Lucene.Net.Core/Index/MergeScheduler.cs
index fc80f60..780f17e 100644
--- a/src/Lucene.Net.Core/Index/MergeScheduler.cs
+++ b/src/Lucene.Net.Core/Index/MergeScheduler.cs
@@ -29,7 +29,7 @@ namespace Lucene.Net.Index
/// instance.</p>
/// @lucene.experimental
/// </summary>
- public abstract class MergeScheduler : IDisposable, ICloneable
+ public abstract class MergeScheduler : IDisposable, IMergeScheduler
{
/// <summary>
/// Sole constructor. (For invocation by subclass
@@ -51,7 +51,7 @@ namespace Lucene.Net.Index
/// Close this MergeScheduler. </summary>
public abstract void Dispose();
- public virtual object Clone()
+ public virtual IMergeScheduler Clone()
{
return (MergeScheduler)base.MemberwiseClone();
}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Core/Index/NoMergeScheduler.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/NoMergeScheduler.cs b/src/Lucene.Net.Core/Index/NoMergeScheduler.cs
index 2369197..51dabe2 100644
--- a/src/Lucene.Net.Core/Index/NoMergeScheduler.cs
+++ b/src/Lucene.Net.Core/Index/NoMergeScheduler.cs
@@ -46,7 +46,7 @@ namespace Lucene.Net.Index
{
}
- public override object Clone()
+ public override IMergeScheduler Clone()
{
return this;
}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Core/Lucene.Net.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Lucene.Net.csproj b/src/Lucene.Net.Core/Lucene.Net.csproj
index 0d08a91..97ef348 100644
--- a/src/Lucene.Net.Core/Lucene.Net.csproj
+++ b/src/Lucene.Net.Core/Lucene.Net.csproj
@@ -286,6 +286,8 @@
<Compile Include="Index\FreqProxTermsWriter.cs" />
<Compile Include="Index\FreqProxTermsWriterPerField.cs" />
<Compile Include="Index\FrozenBufferedUpdates.cs" />
+ <Compile Include="Index\IConcurrentMergeScheduler.cs" />
+ <Compile Include="Index\IMergeScheduler.cs" />
<Compile Include="Index\IndexableField.cs" />
<Compile Include="Index\IndexableFieldType.cs" />
<Compile Include="Index\IndexCommit.cs" />
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.TestFramework/Util/TestUtil.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Util/TestUtil.cs b/src/Lucene.Net.TestFramework/Util/TestUtil.cs
index 1afcf67..c0db864 100644
--- a/src/Lucene.Net.TestFramework/Util/TestUtil.cs
+++ b/src/Lucene.Net.TestFramework/Util/TestUtil.cs
@@ -128,11 +128,11 @@ namespace Lucene.Net.Util
SyncConcurrentMerges(writer.Config.MergeScheduler);
}
- public static void SyncConcurrentMerges(MergeScheduler ms)
+ public static void SyncConcurrentMerges(IMergeScheduler ms)
{
- if (ms is ConcurrentMergeScheduler)
+ if (ms is IConcurrentMergeScheduler)
{
- ((ConcurrentMergeScheduler)ms).Sync();
+ ((IConcurrentMergeScheduler)ms).Sync();
}
}
@@ -916,11 +916,11 @@ namespace Lucene.Net.Util
tmp.SegmentsPerTier = Math.Min(5, tmp.SegmentsPerTier);
tmp.NoCFSRatio = 1.0;
}
- MergeScheduler ms = w.Config.MergeScheduler;
- if (ms is ConcurrentMergeScheduler)
+ IMergeScheduler ms = w.Config.MergeScheduler;
+ if (ms is IConcurrentMergeScheduler)
{
// wtf... shouldnt it be even lower since its 1 by default?!?!
- ((ConcurrentMergeScheduler)ms).SetMaxMergesAndThreads(3, 2);
+ ((IConcurrentMergeScheduler)ms).SetMaxMergesAndThreads(3, 2);
}
}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
index 215d1d4..954d323 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
@@ -279,8 +279,8 @@ namespace Lucene.Net.Index
MergePolicy mergePolicyClone = clone.MergePolicy;
Assert.IsTrue(mergePolicy.GetType() == mergePolicyClone.GetType() && (mergePolicy != mergePolicyClone || mergePolicy.Clone() == mergePolicyClone.Clone()));
- MergeScheduler mergeSched = conf.MergeScheduler;
- MergeScheduler mergeSchedClone = clone.MergeScheduler;
+ IMergeScheduler mergeSched = conf.MergeScheduler;
+ IMergeScheduler mergeSchedClone = clone.MergeScheduler;
Assert.IsTrue(mergeSched.GetType() == mergeSchedClone.GetType() && (mergeSched != mergeSchedClone || mergeSched.Clone() == mergeSchedClone.Clone()));
conf.SetMergeScheduler(new SerialMergeScheduler());
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Tests/core/Index/TestIndexWriterExceptions.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterExceptions.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterExceptions.cs
index 51eb668..34bba74 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterExceptions.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterExceptions.cs
@@ -2150,11 +2150,11 @@ namespace Lucene.Net.Index
if (w == null)
{
IndexWriterConfig iwc = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()));
- MergeScheduler ms = iwc.MergeScheduler;
- if (ms is ConcurrentMergeScheduler)
+ IMergeScheduler ms = iwc.MergeScheduler;
+ if (ms is IConcurrentMergeScheduler)
{
ConcurrentMergeScheduler suppressFakeIOE = new ConcurrentMergeSchedulerAnonymousInnerClassHelper(this);
- ConcurrentMergeScheduler cms = (ConcurrentMergeScheduler)ms;
+ IConcurrentMergeScheduler cms = (IConcurrentMergeScheduler)ms;
suppressFakeIOE.SetMaxMergesAndThreads(cms.MaxMergeCount, cms.MaxThreadCount);
suppressFakeIOE.MergeThreadPriority = cms.MergeThreadPriority;
iwc.SetMergeScheduler(suppressFakeIOE);
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Tests/core/Index/TestIndexWriterOnDiskFull.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterOnDiskFull.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterOnDiskFull.cs
index 306cc3c..75aeb19 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterOnDiskFull.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterOnDiskFull.cs
@@ -72,13 +72,13 @@ namespace Lucene.Net.Index
MockDirectoryWrapper dir = new MockDirectoryWrapper(Random(), new RAMDirectory());
dir.MaxSizeInBytes = diskFree;
IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())));
- MergeScheduler ms = writer.Config.MergeScheduler;
- if (ms is ConcurrentMergeScheduler)
+ IMergeScheduler ms = writer.Config.MergeScheduler;
+ if (ms is IConcurrentMergeScheduler)
{
// this test intentionally produces exceptions
// in the threads that CMS launches; we don't
// want to pollute test output with these.
- ((ConcurrentMergeScheduler)ms).SetSuppressExceptions();
+ ((IConcurrentMergeScheduler)ms).SetSuppressExceptions();
}
bool hitError = false;
@@ -297,21 +297,21 @@ namespace Lucene.Net.Index
indWriter = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetOpenMode(OpenMode_e.APPEND).SetMergePolicy(NewLogMergePolicy(false)));
IOException err = null;
- MergeScheduler ms = indWriter.Config.MergeScheduler;
+ IMergeScheduler ms = indWriter.Config.MergeScheduler;
for (int x = 0; x < 2; x++)
{
- if (ms is ConcurrentMergeScheduler)
+ if (ms is IConcurrentMergeScheduler)
// this test intentionally produces exceptions
// in the threads that CMS launches; we don't
// want to pollute test output with these.
{
if (0 == x)
{
- ((ConcurrentMergeScheduler)ms).SetSuppressExceptions();
+ ((IConcurrentMergeScheduler)ms).SetSuppressExceptions();
}
else
{
- ((ConcurrentMergeScheduler)ms).ClearSuppressExceptions();
+ ((IConcurrentMergeScheduler)ms).ClearSuppressExceptions();
}
}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/17515ff5/src/Lucene.Net.Tests/core/Index/TestIndexWriterOutOfFileDescriptors.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterOutOfFileDescriptors.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterOutOfFileDescriptors.cs
index b65a77f..24a3726 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterOutOfFileDescriptors.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterOutOfFileDescriptors.cs
@@ -70,10 +70,10 @@ namespace Lucene.Net.Index
// we see incrementing messageID:
iwc.InfoStream = new PrintStreamInfoStream(Console.Out);
}
- MergeScheduler ms = iwc.MergeScheduler;
- if (ms is ConcurrentMergeScheduler)
+ var ms = iwc.MergeScheduler;
+ if (ms is IConcurrentMergeScheduler)
{
- ((ConcurrentMergeScheduler)ms).SetSuppressExceptions();
+ ((IConcurrentMergeScheduler)ms).SetSuppressExceptions();
}
w = new IndexWriter(dir, iwc);
if (r != null && Random().Next(5) == 3)
[5/9] lucenenet git commit: Adding tests for TaskMergeScheduler
Posted by sy...@apache.org.
Adding tests for TaskMergeScheduler
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/653d8a3e
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/653d8a3e
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/653d8a3e
Branch: refs/heads/master
Commit: 653d8a3ef05e39508a968321c2bfecd23c71e672
Parents: 473b792
Author: Connie Yau <co...@microsoft.com>
Authored: Mon May 2 16:42:42 2016 -0700
Committer: Connie Yau <co...@microsoft.com>
Committed: Tue May 3 11:34:20 2016 -0700
----------------------------------------------------------------------
.../Util/LuceneTestCase.cs | 11 +++
.../core/Index/Test2BBinaryDocValues.cs | 23 +++++--
.../core/Index/Test2BNumericDocValues.cs | 4 +-
.../core/Index/Test2BPositions.cs | 4 +-
.../core/Index/Test2BPostings.cs | 11 ++-
.../core/Index/Test2BPostingsBytes.cs | 11 ++-
.../core/Index/Test2BSortedDocValues.cs | 19 ++++--
src/Lucene.Net.Tests/core/Index/Test2BTerms.cs | 8 ++-
.../core/Index/Test4GBStoredFields.cs | 10 ++-
src/Lucene.Net.Tests/core/Index/TestCrash.cs | 46 ++++++++-----
.../core/Index/TestIndexWriter.cs | 5 +-
.../core/Index/TestIndexWriterConfig.cs | 12 ++++
.../core/Index/TestIndexWriterDelete.cs | 23 +++++--
.../core/Index/TestIndexWriterExceptions.cs | 53 +++++++++-----
.../core/Index/TestIndexWriterForceMerge.cs | 8 ++-
.../core/Index/TestIndexWriterMergePolicy.cs | 9 ++-
.../core/Index/TestIndexWriterOnDiskFull.cs | 13 ++--
.../core/Index/TestIndexWriterReader.cs | 25 ++++---
.../core/Index/TestIndexWriterWithThreads.cs | 72 +++++++++++---------
.../core/Index/TestStressIndexing.cs | 6 +-
.../core/Index/TestTransactions.cs | 38 ++++++++---
.../core/Search/TestSearcherManager.cs | 20 +++---
.../core/TestMergeSchedulerExternal.cs | 2 +
23 files changed, 288 insertions(+), 145 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
index 3667b87..6a217fb 100644
--- a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
+++ b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
@@ -2675,6 +2675,17 @@ namespace Lucene.Net.Util
}
}
}
+
+ /// <summary>
+ /// Contains a list of all the IConcurrentMergeSchedulers to be tested.
+ /// </summary>
+ public class ConcurrentMergeSchedulers
+ {
+ public readonly IConcurrentMergeScheduler[] Values = new IConcurrentMergeScheduler[] {
+ new ConcurrentMergeScheduler(),
+ new TaskMergeScheduler()
+ };
+ }
}
/*internal class ReaderClosedListenerAnonymousInnerClassHelper : IndexReader.ReaderClosedListener
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/Test2BBinaryDocValues.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/Test2BBinaryDocValues.cs b/src/Lucene.Net.Tests/core/Index/Test2BBinaryDocValues.cs
index a4267dc..5719833 100644
--- a/src/Lucene.Net.Tests/core/Index/Test2BBinaryDocValues.cs
+++ b/src/Lucene.Net.Tests/core/Index/Test2BBinaryDocValues.cs
@@ -42,16 +42,20 @@ namespace Lucene.Net.Index
{
// indexes Integer.MAX_VALUE docs with a fixed binary field
[Test]
- public virtual void TestFixedBinary()
+ public virtual void TestFixedBinary([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BFixedBinary"));
if (dir is MockDirectoryWrapper)
{
((MockDirectoryWrapper)dir).Throttling = MockDirectoryWrapper.Throttling_e.NEVER;
}
-
- IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
- .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
+ var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
+ .SetRAMBufferSizeMB(256.0)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(false, 10))
+ .SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE);
+ IndexWriter w = new IndexWriter(dir, config);
Document doc = new Document();
var bytes = new byte[4];
@@ -104,7 +108,7 @@ namespace Lucene.Net.Index
// indexes Integer.MAX_VALUE docs with a variable binary field
[Test]
- public virtual void TestVariableBinary()
+ public virtual void TestVariableBinary([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BVariableBinary"));
if (dir is MockDirectoryWrapper)
@@ -112,8 +116,13 @@ namespace Lucene.Net.Index
((MockDirectoryWrapper)dir).Throttling = MockDirectoryWrapper.Throttling_e.NEVER;
}
- IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
- .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
+ var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
+ .SetRAMBufferSizeMB(256.0)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(false, 10))
+ .SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE);
+ IndexWriter w = new IndexWriter(dir, config);
Document doc = new Document();
var bytes = new byte[4];
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/Test2BNumericDocValues.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/Test2BNumericDocValues.cs b/src/Lucene.Net.Tests/core/Index/Test2BNumericDocValues.cs
index ac25286..c62200f 100644
--- a/src/Lucene.Net.Tests/core/Index/Test2BNumericDocValues.cs
+++ b/src/Lucene.Net.Tests/core/Index/Test2BNumericDocValues.cs
@@ -40,7 +40,7 @@ namespace Lucene.Net.Index
{
// indexes Integer.MAX_VALUE docs with an increasing dv field
[Test]
- public virtual void TestNumerics()
+ public virtual void TestNumerics([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BNumerics"));
if (dir is MockDirectoryWrapper)
@@ -49,7 +49,7 @@ namespace Lucene.Net.Index
}
IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
- .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
+ .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(scheduler).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
Document doc = new Document();
NumericDocValuesField dvField = new NumericDocValuesField("dv", 0);
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/Test2BPositions.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/Test2BPositions.cs b/src/Lucene.Net.Tests/core/Index/Test2BPositions.cs
index effef2b..b3889da 100644
--- a/src/Lucene.Net.Tests/core/Index/Test2BPositions.cs
+++ b/src/Lucene.Net.Tests/core/Index/Test2BPositions.cs
@@ -50,7 +50,7 @@ namespace Lucene.Net.Index
{
//ORIGINAL LINE: @Ignore("Very slow. Enable manually by removing @Ignore.") public void test() throws Exception
[Test]
- public virtual void Test()
+ public virtual void Test([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BPositions"));
if (dir is MockDirectoryWrapper)
@@ -59,7 +59,7 @@ namespace Lucene.Net.Index
}
IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
- .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
+ .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(scheduler).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
MergePolicy mp = w.Config.MergePolicy;
if (mp is LogByteSizeMergePolicy)
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/Test2BPostings.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/Test2BPostings.cs b/src/Lucene.Net.Tests/core/Index/Test2BPostings.cs
index a7ee7bc..77c76ff 100644
--- a/src/Lucene.Net.Tests/core/Index/Test2BPostings.cs
+++ b/src/Lucene.Net.Tests/core/Index/Test2BPostings.cs
@@ -44,7 +44,7 @@ namespace Lucene.Net.Index
public class Test2BPostings : LuceneTestCase
{
[Test, LongRunningTest, Timeout(int.MaxValue)]
- public virtual void Test()
+ public virtual void Test([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BPostings"));
if (dir is MockDirectoryWrapper)
@@ -52,9 +52,14 @@ namespace Lucene.Net.Index
((MockDirectoryWrapper)dir).Throttling = MockDirectoryWrapper.Throttling_e.NEVER;
}
- IndexWriterConfig iwc = (new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))).SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE);
+ var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
+ .SetRAMBufferSizeMB(256.0)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(false, 10))
+ .SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE);
- IndexWriter w = new IndexWriter(dir, iwc);
+ IndexWriter w = new IndexWriter(dir, config);
MergePolicy mp = w.Config.MergePolicy;
if (mp is LogByteSizeMergePolicy)
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/Test2BPostingsBytes.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/Test2BPostingsBytes.cs b/src/Lucene.Net.Tests/core/Index/Test2BPostingsBytes.cs
index 8fa2fad..d13a13e 100644
--- a/src/Lucene.Net.Tests/core/Index/Test2BPostingsBytes.cs
+++ b/src/Lucene.Net.Tests/core/Index/Test2BPostingsBytes.cs
@@ -52,7 +52,7 @@ namespace Lucene.Net.Index
{
//ORIGINAL LINE: @Ignore("Very slow. Enable manually by removing @Ignore.") public void test() throws Exception
[Test]
- public virtual void Test()
+ public virtual void Test([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BPostingsBytes1"));
if (dir is MockDirectoryWrapper)
@@ -60,8 +60,13 @@ namespace Lucene.Net.Index
((MockDirectoryWrapper)dir).Throttling = MockDirectoryWrapper.Throttling_e.NEVER;
}
- IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
- .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
+ var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
+ .SetRAMBufferSizeMB(256.0)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(false, 10))
+ .SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE);
+ IndexWriter w = new IndexWriter(dir, config);
MergePolicy mp = w.Config.MergePolicy;
if (mp is LogByteSizeMergePolicy)
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/Test2BSortedDocValues.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/Test2BSortedDocValues.cs b/src/Lucene.Net.Tests/core/Index/Test2BSortedDocValues.cs
index 842c6e3..bce3d5b 100644
--- a/src/Lucene.Net.Tests/core/Index/Test2BSortedDocValues.cs
+++ b/src/Lucene.Net.Tests/core/Index/Test2BSortedDocValues.cs
@@ -39,7 +39,7 @@ namespace Lucene.Net.Index
{
// indexes Integer.MAX_VALUE docs with a fixed binary field
[Test]
- public virtual void TestFixedSorted()
+ public virtual void TestFixedSorted([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BFixedSorted"));
if (dir is MockDirectoryWrapper)
@@ -48,7 +48,11 @@ namespace Lucene.Net.Index
}
IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
- .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
+ .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
+ .SetRAMBufferSizeMB(256.0)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(false, 10))
+ .SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
Document doc = new Document();
var bytes = new byte[2];
@@ -97,7 +101,7 @@ namespace Lucene.Net.Index
// indexes Integer.MAX_VALUE docs with a fixed binary field
[Test]
- public virtual void Test2BOrds()
+ public virtual void Test2BOrds([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
BaseDirectoryWrapper dir = NewFSDirectory(CreateTempDir("2BOrds"));
if (dir is MockDirectoryWrapper)
@@ -105,8 +109,13 @@ namespace Lucene.Net.Index
((MockDirectoryWrapper)dir).Throttling = MockDirectoryWrapper.Throttling_e.NEVER;
}
- IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
- .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
+ var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
+ .SetRAMBufferSizeMB(256.0)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(false, 10))
+ .SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE);
+ IndexWriter w = new IndexWriter(dir, config);
Document doc = new Document();
var bytes = new byte[4];
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/Test2BTerms.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/Test2BTerms.cs b/src/Lucene.Net.Tests/core/Index/Test2BTerms.cs
index 8ed26d3..52e585c 100644
--- a/src/Lucene.Net.Tests/core/Index/Test2BTerms.cs
+++ b/src/Lucene.Net.Tests/core/Index/Test2BTerms.cs
@@ -168,7 +168,7 @@ namespace Lucene.Net.Index
//ORIGINAL LINE: @Ignore("Very slow. Enable manually by removing @Ignore.") public void test2BTerms() throws java.io.IOException
[Ignore]
[Test]
- public virtual void Test2BTerms_Mem()
+ public virtual void Test2BTerms_Mem([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
if ("Lucene3x".Equals(Codec.Default.Name))
{
@@ -192,7 +192,11 @@ namespace Lucene.Net.Index
if (true)
{
IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
- .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
+ .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
+ .SetRAMBufferSizeMB(256.0)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(false, 10))
+ .SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
MergePolicy mp = w.Config.MergePolicy;
if (mp is LogByteSizeMergePolicy)
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/Test4GBStoredFields.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/Test4GBStoredFields.cs b/src/Lucene.Net.Tests/core/Index/Test4GBStoredFields.cs
index d1bbe3d..1f55b69 100644
--- a/src/Lucene.Net.Tests/core/Index/Test4GBStoredFields.cs
+++ b/src/Lucene.Net.Tests/core/Index/Test4GBStoredFields.cs
@@ -40,12 +40,18 @@ namespace Lucene.Net.Index
public class Test4GBStoredFields : LuceneTestCase
{
[Test]
- public virtual void Test()
+ public virtual void Test([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
MockDirectoryWrapper dir = new MockDirectoryWrapper(Random(), new MMapDirectory(CreateTempDir("4GBStoredFields")));
dir.Throttling = MockDirectoryWrapper.Throttling_e.NEVER;
- IndexWriter w = new IndexWriter(dir, new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH).SetRAMBufferSizeMB(256.0).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(false, 10)).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE));
+ var config = new IndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH)
+ .SetRAMBufferSizeMB(256.0)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(false, 10))
+ .SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE);
+ IndexWriter w = new IndexWriter(dir, config);
MergePolicy mp = w.Config.MergePolicy;
if (mp is LogByteSizeMergePolicy)
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestCrash.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestCrash.cs b/src/Lucene.Net.Tests/core/Index/TestCrash.cs
index 5447e03..4c13291 100644
--- a/src/Lucene.Net.Tests/core/Index/TestCrash.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestCrash.cs
@@ -33,17 +33,22 @@ namespace Lucene.Net.Index
[TestFixture]
public class TestCrash : LuceneTestCase
{
- private IndexWriter InitIndex(Random random, bool initialCommit)
+ private IndexWriter InitIndex(IConcurrentMergeScheduler scheduler, Random random, bool initialCommit)
{
- return InitIndex(random, NewMockDirectory(random), initialCommit);
+ return InitIndex(scheduler, random, NewMockDirectory(random), initialCommit);
}
- private IndexWriter InitIndex(Random random, MockDirectoryWrapper dir, bool initialCommit)
+ private IndexWriter InitIndex(IConcurrentMergeScheduler scheduler, Random random, MockDirectoryWrapper dir, bool initialCommit)
{
dir.LockFactory = NoLockFactory.DoNoLockFactory;
- IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random)).SetMaxBufferedDocs(10).SetMergeScheduler(new ConcurrentMergeScheduler()));
- ((ConcurrentMergeScheduler)writer.Config.MergeScheduler).SetSuppressExceptions();
+ scheduler.SetSuppressExceptions();
+
+ IndexWriter writer = new IndexWriter(dir,
+ NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(random))
+ .SetMaxBufferedDocs(10)
+ .SetMergeScheduler(scheduler));
+
if (initialCommit)
{
writer.Commit();
@@ -63,7 +68,7 @@ namespace Lucene.Net.Index
private void Crash(IndexWriter writer)
{
MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
- ConcurrentMergeScheduler cms = (ConcurrentMergeScheduler)writer.Config.MergeScheduler;
+ var cms = (IConcurrentMergeScheduler)writer.Config.MergeScheduler;
cms.Sync();
dir.Crash();
cms.Sync();
@@ -71,12 +76,13 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestCrashWhileIndexing()
+ public virtual void TestCrashWhileIndexing(
+ [ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
// this test relies on being able to open a reader before any commit
// happened, so we must create an initial commit just to allow that, but
// before any documents were added.
- IndexWriter writer = InitIndex(Random(), true);
+ IndexWriter writer = InitIndex(scheduler, Random(), true);
MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
// We create leftover files because merging could be
@@ -100,13 +106,14 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestWriterAfterCrash()
+ public virtual void TestWriterAfterCrash(
+ [ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
// this test relies on being able to open a reader before any commit
// happened, so we must create an initial commit just to allow that, but
// before any documents were added.
Console.WriteLine("TEST: initIndex");
- IndexWriter writer = InitIndex(Random(), true);
+ IndexWriter writer = InitIndex(scheduler, Random(), true);
Console.WriteLine("TEST: done initIndex");
MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
@@ -117,7 +124,7 @@ namespace Lucene.Net.Index
dir.PreventDoubleWrite = false;
Console.WriteLine("TEST: now crash");
Crash(writer);
- writer = InitIndex(Random(), dir, false);
+ writer = InitIndex(scheduler, Random(), dir, false);
writer.Dispose();
IndexReader reader = DirectoryReader.Open(dir);
@@ -135,9 +142,10 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestCrashAfterReopen()
+ public virtual void TestCrashAfterReopen(
+ [ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- IndexWriter writer = InitIndex(Random(), false);
+ IndexWriter writer = InitIndex(scheduler, Random(), false);
MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
// We create leftover files because merging could be
@@ -145,7 +153,7 @@ namespace Lucene.Net.Index
dir.AssertNoUnrefencedFilesOnClose = false;
writer.Dispose();
- writer = InitIndex(Random(), dir, false);
+ writer = InitIndex(scheduler, Random(), dir, false);
Assert.AreEqual(314, writer.MaxDoc);
Crash(writer);
@@ -173,9 +181,10 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestCrashAfterClose()
+ public virtual void TestCrashAfterClose(
+ [ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- IndexWriter writer = InitIndex(Random(), false);
+ IndexWriter writer = InitIndex(scheduler, Random(), false);
MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
writer.Dispose();
@@ -195,9 +204,10 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestCrashAfterCloseNoWait()
+ public virtual void TestCrashAfterCloseNoWait(
+ [ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- IndexWriter writer = InitIndex(Random(), false);
+ IndexWriter writer = InitIndex(scheduler, Random(), false);
MockDirectoryWrapper dir = (MockDirectoryWrapper)writer.Directory;
writer.Dispose(false);
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestIndexWriter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriter.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriter.cs
index ad5782f..48332ac 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriter.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriter.cs
@@ -222,13 +222,14 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestChangesAfterClose()
+ public virtual void TestChangesAfterClose([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
Directory dir = NewDirectory();
IndexWriter writer = null;
- writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())));
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMergeScheduler(scheduler);
+ writer = new IndexWriter(dir, config);
AddDoc(writer);
// close
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
index 954d323..7e17b27 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
@@ -61,7 +61,11 @@ namespace Lucene.Net.Index
Assert.AreEqual(typeof(MockAnalyzer), conf.Analyzer.GetType());
Assert.IsNull(conf.IndexCommit);
Assert.AreEqual(typeof(KeepOnlyLastCommitDeletionPolicy), conf.DelPolicy.GetType());
+#if FEATURE_TASKMERGESCHEDULER
+ Assert.AreEqual(typeof(TaskMergeScheduler), conf.MergeScheduler.GetType());
+#else
Assert.AreEqual(typeof(ConcurrentMergeScheduler), conf.MergeScheduler.GetType());
+#endif
Assert.AreEqual(OpenMode_e.CREATE_OR_APPEND, conf.OpenMode);
// we don't need to assert this, it should be unspecified
Assert.IsTrue(IndexSearcher.DefaultSimilarity == conf.Similarity);
@@ -284,7 +288,11 @@ namespace Lucene.Net.Index
Assert.IsTrue(mergeSched.GetType() == mergeSchedClone.GetType() && (mergeSched != mergeSchedClone || mergeSched.Clone() == mergeSchedClone.Clone()));
conf.SetMergeScheduler(new SerialMergeScheduler());
+#if FEATURE_TASKMERGESCHEDULER
+ Assert.AreEqual(typeof(TaskMergeScheduler), clone.MergeScheduler.GetType());
+#else
Assert.AreEqual(typeof(ConcurrentMergeScheduler), clone.MergeScheduler.GetType());
+#endif
}
[Test]
@@ -307,7 +315,11 @@ namespace Lucene.Net.Index
}
// Test MergeScheduler
+#if FEATURE_TASKMERGESCHEDULER
+ Assert.AreEqual(typeof(TaskMergeScheduler), conf.MergeScheduler.GetType());
+#else
Assert.AreEqual(typeof(ConcurrentMergeScheduler), conf.MergeScheduler.GetType());
+#endif
conf.SetMergeScheduler(new SerialMergeScheduler());
Assert.AreEqual(typeof(SerialMergeScheduler), conf.MergeScheduler.GetType());
try
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestIndexWriterDelete.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterDelete.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterDelete.cs
index cce436e..3d321d3 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterDelete.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterDelete.cs
@@ -542,22 +542,24 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestDeletesOnDiskFull()
+ public virtual void TestDeletesOnDiskFull(
+ [ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- DoTestOperationsOnDiskFull(false);
+ DoTestOperationsOnDiskFull(scheduler, false);
}
[Test]
- public virtual void TestUpdatesOnDiskFull()
+ public virtual void TestUpdatesOnDiskFull(
+ [ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- DoTestOperationsOnDiskFull(true);
+ DoTestOperationsOnDiskFull(scheduler, true);
}
/// <summary>
/// Make sure if modifier tries to commit but hits disk full that modifier
/// remains consistent and usable. Similar to TestIndexReader.testDiskFull().
/// </summary>
- private void DoTestOperationsOnDiskFull(bool updates)
+ private void DoTestOperationsOnDiskFull(IConcurrentMergeScheduler scheduler, bool updates)
{
Term searchTerm = new Term("content", "aaa");
int START_COUNT = 157;
@@ -598,8 +600,15 @@ namespace Lucene.Net.Index
MockDirectoryWrapper dir = new MockDirectoryWrapper(Random(), new RAMDirectory(startDir, NewIOContext(Random())));
dir.PreventDoubleWrite = false;
dir.AllowRandomFileNotFoundException = false;
- IndexWriter modifier = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random(), MockTokenizer.WHITESPACE, false)).SetMaxBufferedDocs(1000).SetMaxBufferedDeleteTerms(1000).SetMergeScheduler(new ConcurrentMergeScheduler()));
- ((ConcurrentMergeScheduler)modifier.Config.MergeScheduler).SetSuppressExceptions();
+
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random(), MockTokenizer.WHITESPACE, false))
+ .SetMaxBufferedDocs(1000)
+ .SetMaxBufferedDeleteTerms(1000)
+ .SetMergeScheduler(scheduler);
+
+ scheduler.SetSuppressExceptions();
+
+ IndexWriter modifier = new IndexWriter(dir, config);
// For each disk size, first try to commit against
// dir that will hit random IOExceptions & disk
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestIndexWriterExceptions.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterExceptions.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterExceptions.cs
index 34bba74..6821109 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterExceptions.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterExceptions.cs
@@ -310,7 +310,7 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestRandomExceptions()
+ public virtual void TestRandomExceptions([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
if (VERBOSE)
{
@@ -321,8 +321,14 @@ namespace Lucene.Net.Index
MockAnalyzer analyzer = new MockAnalyzer(Random());
analyzer.EnableChecks = false; // disable workflow checking as we forcefully close() in exceptional cases.
- IndexWriter writer = RandomIndexWriter.MockIndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer).SetRAMBufferSizeMB(0.1).SetMergeScheduler(new ConcurrentMergeScheduler()), new TestPoint1(this));
- ((ConcurrentMergeScheduler)writer.Config.MergeScheduler).SetSuppressExceptions();
+
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer)
+ .SetRAMBufferSizeMB(0.1)
+ .SetMergeScheduler(scheduler);
+
+ scheduler.SetSuppressExceptions();
+
+ IndexWriter writer = RandomIndexWriter.MockIndexWriter(dir, config , new TestPoint1(this));
//writer.SetMaxBufferedDocs(10);
if (VERBOSE)
{
@@ -366,13 +372,19 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestRandomExceptionsThreads()
+ public virtual void TestRandomExceptionsThreads([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
Directory dir = NewDirectory();
MockAnalyzer analyzer = new MockAnalyzer(Random());
analyzer.EnableChecks = false; // disable workflow checking as we forcefully close() in exceptional cases.
- IndexWriter writer = RandomIndexWriter.MockIndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer).SetRAMBufferSizeMB(0.2).SetMergeScheduler(new ConcurrentMergeScheduler()), new TestPoint1(this));
- ((ConcurrentMergeScheduler)writer.Config.MergeScheduler).SetSuppressExceptions();
+
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, analyzer)
+ .SetRAMBufferSizeMB(0.2)
+ .SetMergeScheduler(scheduler);
+
+ IndexWriter writer = RandomIndexWriter.MockIndexWriter(dir, config, new TestPoint1(this));
+ scheduler.SetSuppressExceptions();
+
//writer.SetMaxBufferedDocs(10);
writer.Commit();
@@ -553,13 +565,13 @@ namespace Lucene.Net.Index
// LUCENE-1210
[Test]
- public virtual void TestExceptionOnMergeInit()
+ public virtual void TestExceptionOnMergeInit([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
Directory dir = NewDirectory();
IndexWriterConfig conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergePolicy(NewLogMergePolicy());
- ConcurrentMergeScheduler cms = new ConcurrentMergeScheduler();
- cms.SetSuppressExceptions();
- conf.SetMergeScheduler(cms);
+
+ scheduler.SetSuppressExceptions();
+ conf.SetMergeScheduler(scheduler);
((LogMergePolicy)conf.MergePolicy).MergeFactor = 2;
TestPoint3 testPoint = new TestPoint3();
IndexWriter w = RandomIndexWriter.MockIndexWriter(dir, conf, testPoint);
@@ -572,13 +584,13 @@ namespace Lucene.Net.Index
{
w.AddDocument(doc);
}
- catch (Exception re)
+ catch (Exception)
{
break;
}
}
- ((ConcurrentMergeScheduler)w.Config.MergeScheduler).Sync();
+ ((IConcurrentMergeScheduler)w.Config.MergeScheduler).Sync();
Assert.IsTrue(testPoint.Failed);
w.Dispose();
dir.Dispose();
@@ -1088,13 +1100,18 @@ namespace Lucene.Net.Index
// LUCENE-1044: test exception during sync
[Test]
- public virtual void TestExceptionDuringSync()
+ public virtual void TestExceptionDuringSync([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
MockDirectoryWrapper dir = NewMockDirectory();
FailOnlyInSync failure = new FailOnlyInSync();
dir.FailOn(failure);
- IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(5)));
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(2)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(5));
+
+ IndexWriter writer = new IndexWriter(dir, config);
failure.SetDoFail();
for (int i = 0; i < 23; i++)
@@ -1112,7 +1129,7 @@ namespace Lucene.Net.Index
}
}
}
- ((ConcurrentMergeScheduler)writer.Config.MergeScheduler).Sync();
+ ((IConcurrentMergeScheduler)writer.Config.MergeScheduler).Sync();
Assert.IsTrue(failure.DidFail);
failure.ClearDoFail();
writer.Dispose();
@@ -1221,7 +1238,7 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestForceMergeExceptions()
+ public virtual void TestForceMergeExceptions([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
Directory startDir = NewDirectory();
IndexWriterConfig conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergePolicy(NewLogMergePolicy());
@@ -1241,8 +1258,8 @@ namespace Lucene.Net.Index
Console.WriteLine("TEST: iter " + i);
}
MockDirectoryWrapper dir = new MockDirectoryWrapper(Random(), new RAMDirectory(startDir, NewIOContext(Random())));
- conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMergeScheduler(new ConcurrentMergeScheduler());
- ((ConcurrentMergeScheduler)conf.MergeScheduler).SetSuppressExceptions();
+ conf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMergeScheduler(scheduler);
+ scheduler.SetSuppressExceptions();
w = new IndexWriter(dir, conf);
dir.RandomIOExceptionRate = 0.5;
try
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestIndexWriterForceMerge.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterForceMerge.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterForceMerge.cs
index 8d05d83..debf331 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterForceMerge.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterForceMerge.cs
@@ -81,7 +81,7 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestMaxNumSegments2()
+ public virtual void TestMaxNumSegments2([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
Directory dir = NewDirectory();
@@ -91,7 +91,11 @@ namespace Lucene.Net.Index
LogDocMergePolicy ldmp = new LogDocMergePolicy();
ldmp.MinMergeDocs = 1;
ldmp.MergeFactor = 4;
- IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergePolicy(ldmp).SetMergeScheduler(new ConcurrentMergeScheduler()));
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(2)
+ .SetMergePolicy(ldmp)
+ .SetMergeScheduler(scheduler);
+ IndexWriter writer = new IndexWriter(dir, config);
for (int iter = 0; iter < 10; iter++)
{
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestIndexWriterMergePolicy.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterMergePolicy.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterMergePolicy.cs
index 869a301..ca66e9a 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterMergePolicy.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterMergePolicy.cs
@@ -178,7 +178,7 @@ namespace Lucene.Net.Index
// Test the case where a merge results in no doc at all
[Test]
- public virtual void TestMergeDocCount0()
+ public virtual void TestMergeDocCount0([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
Directory dir = NewDirectory();
@@ -200,7 +200,12 @@ namespace Lucene.Net.Index
ldmp = new LogDocMergePolicy();
ldmp.MergeFactor = 5;
- writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetOpenMode(OpenMode_e.APPEND).SetMaxBufferedDocs(10).SetMergePolicy(ldmp).SetMergeScheduler(new ConcurrentMergeScheduler()));
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetOpenMode(OpenMode_e.APPEND)
+ .SetMaxBufferedDocs(10)
+ .SetMergePolicy(ldmp)
+ .SetMergeScheduler(scheduler);
+ writer = new IndexWriter(dir, config);
// merge factor is changed, so check invariants after all adds
for (int i = 0; i < 10; i++)
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestIndexWriterOnDiskFull.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterOnDiskFull.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterOnDiskFull.cs
index 75aeb19..5dd0001 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterOnDiskFull.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterOnDiskFull.cs
@@ -631,10 +631,13 @@ namespace Lucene.Net.Index
// an IndexWriter (hit during DW.ThreadState.Init()) is
// OK:
[Test]
- public virtual void TestImmediateDiskFull()
+ public virtual void TestImmediateDiskFull([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
MockDirectoryWrapper dir = NewMockDirectory();
- IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergeScheduler(new ConcurrentMergeScheduler()));
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(2)
+ .SetMergeScheduler(scheduler);
+ IndexWriter writer = new IndexWriter(dir, config);
dir.MaxSizeInBytes = Math.Max(1, dir.RecomputedActualSizeInBytes);
Document doc = new Document();
FieldType customType = new FieldType(TextField.TYPE_STORED);
@@ -644,7 +647,7 @@ namespace Lucene.Net.Index
writer.AddDocument(doc);
Assert.Fail("did not hit disk full");
}
- catch (IOException ioe)
+ catch (IOException)
{
}
// Without fix for LUCENE-1130: this call will hang:
@@ -653,7 +656,7 @@ namespace Lucene.Net.Index
writer.AddDocument(doc);
Assert.Fail("did not hit disk full");
}
- catch (IOException ioe)
+ catch (IOException)
{
}
try
@@ -661,7 +664,7 @@ namespace Lucene.Net.Index
writer.Dispose(false);
Assert.Fail("did not hit disk full");
}
- catch (IOException ioe)
+ catch (IOException)
{
}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestIndexWriterReader.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterReader.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterReader.cs
index 2d97f09..051fd98 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterReader.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterReader.cs
@@ -741,12 +741,17 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestMergeWarmer()
+ public virtual void TestMergeWarmer([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
Directory dir1 = GetAssertNoDeletesDirectory(NewDirectory());
// Enroll warmer
MyWarmer warmer = new MyWarmer();
- IndexWriter writer = new IndexWriter(dir1, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergedSegmentWarmer(warmer).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy()));
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(2)
+ .SetMergedSegmentWarmer(warmer)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy());
+ IndexWriter writer = new IndexWriter(dir1, config);
// create the index
CreateIndexNoClose(false, "test", writer);
@@ -756,17 +761,20 @@ namespace Lucene.Net.Index
((LogMergePolicy)writer.Config.MergePolicy).MergeFactor = 2;
- int num = AtLeast(100);
+ //int num = AtLeast(100);
+ int num = 101;
for (int i = 0; i < num; i++)
{
writer.AddDocument(DocHelper.CreateDocument(i, "test", 4));
}
- ((ConcurrentMergeScheduler)writer.Config.MergeScheduler).Sync();
+ ((IConcurrentMergeScheduler)writer.Config.MergeScheduler).Sync();
Assert.IsTrue(warmer.WarmCount > 0);
+ Console.WriteLine("Count {0}", warmer.WarmCount);
int count = warmer.WarmCount;
- writer.AddDocument(DocHelper.CreateDocument(17, "test", 4));
+ var newDocument = DocHelper.CreateDocument(17, "test", 4);
+ writer.AddDocument(newDocument);
writer.ForceMerge(1);
Assert.IsTrue(warmer.WarmCount > count);
@@ -776,10 +784,11 @@ namespace Lucene.Net.Index
}
[Test]
- public virtual void TestAfterCommit()
+ public virtual void TestAfterCommit([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
Directory dir1 = GetAssertNoDeletesDirectory(NewDirectory());
- IndexWriter writer = new IndexWriter(dir1, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMergeScheduler(new ConcurrentMergeScheduler()));
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMergeScheduler(scheduler);
+ IndexWriter writer = new IndexWriter(dir1, config);
writer.Commit();
// create the index
@@ -796,7 +805,7 @@ namespace Lucene.Net.Index
{
writer.AddDocument(DocHelper.CreateDocument(i, "test", 4));
}
- ((ConcurrentMergeScheduler)writer.Config.MergeScheduler).Sync();
+ ((IConcurrentMergeScheduler)writer.Config.MergeScheduler).Sync();
DirectoryReader r2 = DirectoryReader.OpenIfChanged(r1);
if (r2 != null)
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestIndexWriterWithThreads.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterWithThreads.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterWithThreads.cs
index a1bbdcc..0e1d1e7 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterWithThreads.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterWithThreads.cs
@@ -145,7 +145,7 @@ namespace Lucene.Net.Index
// an IndexWriter (hit during DW.ThreadState.Init()), with
// multiple threads, is OK:
[Test]
- public virtual void TestImmediateDiskFullWithThreads()
+ public virtual void TestImmediateDiskFullWithThreads([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
int NUM_THREADS = 3;
int numIterations = TEST_NIGHTLY ? 10 : 3;
@@ -156,8 +156,12 @@ namespace Lucene.Net.Index
Console.WriteLine("\nTEST: iter=" + iter);
}
MockDirectoryWrapper dir = NewMockDirectory();
- IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(4)));
- ((ConcurrentMergeScheduler)writer.Config.MergeScheduler).SetSuppressExceptions();
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(2)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(4));
+ IndexWriter writer = new IndexWriter(dir, config);
+ scheduler.SetSuppressExceptions();
dir.MaxSizeInBytes = 4 * 1024 + 20 * iter;
IndexerThread[] threads = new IndexerThread[NUM_THREADS];
@@ -193,7 +197,7 @@ namespace Lucene.Net.Index
// speaking, this isn't valid us of Lucene's APIs, but we
// still want to be robust to this case:
[Test]
- public virtual void TestCloseWithThreads()
+ public virtual void TestCloseWithThreads([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
int NUM_THREADS = 3;
int numIterations = TEST_NIGHTLY ? 7 : 3;
@@ -204,9 +208,12 @@ namespace Lucene.Net.Index
Console.WriteLine("\nTEST: iter=" + iter);
}
Directory dir = NewDirectory();
-
- IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(10).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(4)));
- ((ConcurrentMergeScheduler)writer.Config.MergeScheduler).SetSuppressExceptions();
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(10)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(4));
+ IndexWriter writer = new IndexWriter(dir, config);
+ scheduler.SetSuppressExceptions();
IndexerThread[] threads = new IndexerThread[NUM_THREADS];
@@ -274,7 +281,7 @@ namespace Lucene.Net.Index
// Runs test, with multiple threads, using the specific
// failure to trigger an IOException
- public virtual void _testMultipleThreadsFailure(MockDirectoryWrapper.Failure failure)
+ public virtual void TestMultipleThreadsFailure(IConcurrentMergeScheduler scheduler, MockDirectoryWrapper.Failure failure)
{
int NUM_THREADS = 3;
@@ -285,9 +292,12 @@ namespace Lucene.Net.Index
Console.WriteLine("TEST: iter=" + iter);
}
MockDirectoryWrapper dir = NewMockDirectory();
-
- IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(4)));
- ((ConcurrentMergeScheduler)writer.Config.MergeScheduler).SetSuppressExceptions();
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(2)
+ .SetMergeScheduler(scheduler)
+ .SetMergePolicy(NewLogMergePolicy(4));
+ IndexWriter writer = new IndexWriter(dir, config);
+ scheduler.SetSuppressExceptions();
IndexerThread[] threads = new IndexerThread[NUM_THREADS];
@@ -318,7 +328,7 @@ namespace Lucene.Net.Index
writer.Dispose(false);
success = true;
}
- catch (IOException ioe)
+ catch (IOException)
{
failure.ClearDoFail();
writer.Dispose(false);
@@ -349,11 +359,11 @@ namespace Lucene.Net.Index
// Runs test, with one thread, using the specific failure
// to trigger an IOException
- public virtual void _testSingleThreadFailure(MockDirectoryWrapper.Failure failure)
+ public virtual void TestSingleThreadFailure(IConcurrentMergeScheduler scheduler, MockDirectoryWrapper.Failure failure)
{
MockDirectoryWrapper dir = NewMockDirectory();
- IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergeScheduler(new ConcurrentMergeScheduler()));
+ IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(2).SetMergeScheduler(scheduler));
Document doc = new Document();
FieldType customType = new FieldType(TextField.TYPE_STORED);
customType.StoreTermVectors = true;
@@ -375,7 +385,7 @@ namespace Lucene.Net.Index
writer.Commit();
Assert.Fail("did not hit exception");
}
- catch (IOException ioe)
+ catch (IOException)
{
}
failure.ClearDoFail();
@@ -446,33 +456,33 @@ namespace Lucene.Net.Index
// LUCENE-1130: make sure initial IOException, and then 2nd
// IOException during rollback(), is OK:
[Test]
- public virtual void TestIOExceptionDuringAbort()
+ public virtual void TestIOExceptionDuringAbort([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- _testSingleThreadFailure(new FailOnlyOnAbortOrFlush(false));
+ TestSingleThreadFailure(scheduler, new FailOnlyOnAbortOrFlush(false));
}
// LUCENE-1130: make sure initial IOException, and then 2nd
// IOException during rollback(), is OK:
[Test]
- public virtual void TestIOExceptionDuringAbortOnlyOnce()
+ public virtual void TestIOExceptionDuringAbortOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- _testSingleThreadFailure(new FailOnlyOnAbortOrFlush(true));
+ TestSingleThreadFailure(scheduler, new FailOnlyOnAbortOrFlush(true));
}
// LUCENE-1130: make sure initial IOException, and then 2nd
// IOException during rollback(), with multiple threads, is OK:
[Test]
- public virtual void TestIOExceptionDuringAbortWithThreads()
+ public virtual void TestIOExceptionDuringAbortWithThreads([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- _testMultipleThreadsFailure(new FailOnlyOnAbortOrFlush(false));
+ TestMultipleThreadsFailure(scheduler, new FailOnlyOnAbortOrFlush(false));
}
// LUCENE-1130: make sure initial IOException, and then 2nd
// IOException during rollback(), with multiple threads, is OK:
[Test]
- public virtual void TestIOExceptionDuringAbortWithThreadsOnlyOnce()
+ public virtual void TestIOExceptionDuringAbortWithThreadsOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- _testMultipleThreadsFailure(new FailOnlyOnAbortOrFlush(true));
+ TestMultipleThreadsFailure(scheduler, new FailOnlyOnAbortOrFlush(true));
}
// Throws IOException during DocumentsWriter.writeSegment
@@ -510,30 +520,30 @@ namespace Lucene.Net.Index
// LUCENE-1130: test IOException in writeSegment
[Test]
- public virtual void TestIOExceptionDuringWriteSegment()
+ public virtual void TestIOExceptionDuringWriteSegment([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- _testSingleThreadFailure(new FailOnlyInWriteSegment(false));
+ TestSingleThreadFailure(scheduler, new FailOnlyInWriteSegment(false));
}
// LUCENE-1130: test IOException in writeSegment
[Test]
- public virtual void TestIOExceptionDuringWriteSegmentOnlyOnce()
+ public virtual void TestIOExceptionDuringWriteSegmentOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- _testSingleThreadFailure(new FailOnlyInWriteSegment(true));
+ TestSingleThreadFailure(scheduler, new FailOnlyInWriteSegment(true));
}
// LUCENE-1130: test IOException in writeSegment, with threads
[Test]
- public virtual void TestIOExceptionDuringWriteSegmentWithThreads()
+ public virtual void TestIOExceptionDuringWriteSegmentWithThreads([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- _testMultipleThreadsFailure(new FailOnlyInWriteSegment(false));
+ TestMultipleThreadsFailure(scheduler, new FailOnlyInWriteSegment(false));
}
// LUCENE-1130: test IOException in writeSegment, with threads
[Test]
- public virtual void TestIOExceptionDuringWriteSegmentWithThreadsOnlyOnce()
+ public virtual void TestIOExceptionDuringWriteSegmentWithThreadsOnlyOnce([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
- _testMultipleThreadsFailure(new FailOnlyInWriteSegment(true));
+ TestMultipleThreadsFailure(scheduler, new FailOnlyInWriteSegment(true));
}
// LUCENE-3365: Test adding two documents with the same field from two different IndexWriters
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestStressIndexing.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestStressIndexing.cs b/src/Lucene.Net.Tests/core/Index/TestStressIndexing.cs
index 1b19afa..59a9baf 100644
--- a/src/Lucene.Net.Tests/core/Index/TestStressIndexing.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestStressIndexing.cs
@@ -147,7 +147,7 @@ namespace Lucene.Net.Index
stress test.
*/
- public virtual void RunStressTest(Directory directory, MergeScheduler mergeScheduler)
+ public virtual void RunStressTest(Directory directory, IConcurrentMergeScheduler mergeScheduler)
{
IndexWriter modifier = new IndexWriter(directory, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetOpenMode(OpenMode_e.CREATE).SetMaxBufferedDocs(10).SetMergeScheduler(mergeScheduler));
modifier.Commit();
@@ -198,7 +198,7 @@ namespace Lucene.Net.Index
*/
[Test]
- public virtual void TestStressIndexAndSearching()
+ public virtual void TestStressIndexAndSearching([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
Directory directory = NewDirectory();
MockDirectoryWrapper wrapper = directory as MockDirectoryWrapper;
@@ -207,7 +207,7 @@ namespace Lucene.Net.Index
wrapper.AssertNoUnrefencedFilesOnClose = true;
}
- RunStressTest(directory, new ConcurrentMergeScheduler());
+ RunStressTest(directory, scheduler);
directory.Dispose();
}
}
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Index/TestTransactions.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestTransactions.cs b/src/Lucene.Net.Tests/core/Index/TestTransactions.cs
index 2dba7c9..0bba56f 100644
--- a/src/Lucene.Net.Tests/core/Index/TestTransactions.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestTransactions.cs
@@ -111,15 +111,21 @@ namespace Lucene.Net.Index
private class IndexerThread : TimedThread
{
private readonly TestTransactions OuterInstance;
-
+ private IConcurrentMergeScheduler _scheduler1;
+ private IConcurrentMergeScheduler _scheduler2;
internal Directory Dir1;
internal Directory Dir2;
internal object @lock;
internal int NextID;
- public IndexerThread(TestTransactions outerInstance, object @lock, Directory dir1, Directory dir2, TimedThread[] threads)
+ public IndexerThread(TestTransactions outerInstance, object @lock,
+ Directory dir1, Directory dir2,
+ IConcurrentMergeScheduler scheduler1, IConcurrentMergeScheduler scheduler2,
+ TimedThread[] threads)
: base(threads)
{
+ _scheduler1 = scheduler1;
+ _scheduler2 = scheduler2;
this.OuterInstance = outerInstance;
this.@lock = @lock;
this.Dir1 = dir1;
@@ -128,13 +134,21 @@ namespace Lucene.Net.Index
public override void DoWork()
{
- IndexWriter writer1 = new IndexWriter(Dir1, ((IndexWriterConfig)NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(3)).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(2)));
- ((ConcurrentMergeScheduler)writer1.Config.MergeScheduler).SetSuppressExceptions();
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(3)
+ .SetMergeScheduler(_scheduler1)
+ .SetMergePolicy(NewLogMergePolicy(2));
+ IndexWriter writer1 = new IndexWriter(Dir1, config);
+ ((IConcurrentMergeScheduler)writer1.Config.MergeScheduler).SetSuppressExceptions();
// Intentionally use different params so flush/merge
// happen @ different times
- IndexWriter writer2 = new IndexWriter(Dir2, ((IndexWriterConfig)NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMaxBufferedDocs(2)).SetMergeScheduler(new ConcurrentMergeScheduler()).SetMergePolicy(NewLogMergePolicy(3)));
- ((ConcurrentMergeScheduler)writer2.Config.MergeScheduler).SetSuppressExceptions();
+ var config2 = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMaxBufferedDocs(2)
+ .SetMergeScheduler(_scheduler2)
+ .SetMergePolicy(NewLogMergePolicy(3));
+ IndexWriter writer2 = new IndexWriter(Dir2, config2);
+ ((IConcurrentMergeScheduler)writer2.Config.MergeScheduler).SetSuppressExceptions();
Update(writer1);
Update(writer2);
@@ -148,7 +162,7 @@ namespace Lucene.Net.Index
{
writer1.PrepareCommit();
}
- catch (Exception t)
+ catch (Exception)
{
writer1.Rollback();
writer2.Rollback();
@@ -158,7 +172,7 @@ namespace Lucene.Net.Index
{
writer2.PrepareCommit();
}
- catch (Exception t)
+ catch (Exception)
{
writer1.Rollback();
writer2.Rollback();
@@ -265,8 +279,10 @@ namespace Lucene.Net.Index
writer.Dispose();
}
- [Test]
- public virtual void TestTransactions_Mem()
+ [Test, Sequential]
+ public virtual void TestTransactions_Mem(
+ [ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler1,
+ [ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler2)
{
Console.WriteLine("Start test");
// we cant use non-ramdir on windows, because this test needs to double-write.
@@ -290,7 +306,7 @@ namespace Lucene.Net.Index
TimedThread[] threads = new TimedThread[3];
int numThread = 0;
- IndexerThread indexerThread = new IndexerThread(this, this, dir1, dir2, threads);
+ IndexerThread indexerThread = new IndexerThread(this, this, dir1, dir2, scheduler1, scheduler2, threads);
threads[numThread++] = indexerThread;
indexerThread.Start();
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/Search/TestSearcherManager.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Search/TestSearcherManager.cs b/src/Lucene.Net.Tests/core/Search/TestSearcherManager.cs
index aedc8e5..a175d0f 100644
--- a/src/Lucene.Net.Tests/core/Search/TestSearcherManager.cs
+++ b/src/Lucene.Net.Tests/core/Search/TestSearcherManager.cs
@@ -5,6 +5,7 @@ using System.Threading.Tasks;
namespace Lucene.Net.Search
{
+ using Index;
using Lucene.Net.Randomized.Generators;
using Lucene.Net.Support;
using NUnit.Framework;
@@ -388,7 +389,7 @@ namespace Lucene.Net.Search
SearcherManager.MaybeRefresh();
Success.Set(true);
}
- catch (AlreadyClosedException e)
+ catch (AlreadyClosedException)
{
// expected
}
@@ -419,10 +420,12 @@ namespace Lucene.Net.Search
}
[Test]
- public virtual void TestReferenceDecrementIllegally()
+ public virtual void TestReferenceDecrementIllegally([ValueSource(typeof(ConcurrentMergeSchedulers), "Values")]IConcurrentMergeScheduler scheduler)
{
Directory dir = NewDirectory();
- IndexWriter writer = new IndexWriter(dir, NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetMergeScheduler(new ConcurrentMergeScheduler()));
+ var config = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+ .SetMergeScheduler(scheduler);
+ IndexWriter writer = new IndexWriter(dir, config);
SearcherManager sm = new SearcherManager(writer, false, new SearcherFactory());
writer.AddDocument(new Document());
writer.Commit();
@@ -436,15 +439,8 @@ namespace Lucene.Net.Search
acquire = sm.Acquire();
acquire.IndexReader.DecRef();
sm.Release(acquire);
- try
- {
- sm.Acquire();
- Assert.Fail("acquire should have thrown an InvalidOperationException since we modified the refCount outside of the manager");
- }
- catch (InvalidOperationException ex)
- {
- //
- }
+
+ Assert.Throws<InvalidOperationException>(() => sm.Acquire(), "acquire should have thrown an InvalidOperationException since we modified the refCount outside of the manager");
// sm.Dispose(); -- already closed
writer.Dispose();
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/653d8a3e/src/Lucene.Net.Tests/core/TestMergeSchedulerExternal.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/TestMergeSchedulerExternal.cs b/src/Lucene.Net.Tests/core/TestMergeSchedulerExternal.cs
index 59a7ffd..f68fb8a 100644
--- a/src/Lucene.Net.Tests/core/TestMergeSchedulerExternal.cs
+++ b/src/Lucene.Net.Tests/core/TestMergeSchedulerExternal.cs
@@ -76,7 +76,9 @@ namespace Lucene.Net.Tests
{
MergeThread thread = new MyMergeThread(this, writer, merge);
thread.ThreadPriority = MergeThreadPriority;
+#if !FEATURE_TASKMERGESCHEDULER
thread.SetDaemon(true);
+#endif
thread.Name = "MyMergeThread";
return thread;
}
[3/9] lucenenet git commit: Adding MergeScheduler that uses Tasks
Posted by sy...@apache.org.
Adding MergeScheduler that uses Tasks
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/473b792d
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/473b792d
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/473b792d
Branch: refs/heads/master
Commit: 473b792d756d7fa894f44324e066db447e18cd4f
Parents: 17515ff
Author: Connie Yau <co...@microsoft.com>
Authored: Mon May 2 17:01:49 2016 -0700
Committer: Connie Yau <co...@microsoft.com>
Committed: Tue May 3 11:34:19 2016 -0700
----------------------------------------------------------------------
.../Index/LiveIndexWriterConfig.cs | 6 +-
src/Lucene.Net.Core/Index/TaskMergeScheduler.cs | 665 +++++++++++++++++++
src/Lucene.Net.Core/Lucene.Net.csproj | 7 +-
.../Util/ReaderWriterLockSlimExtension.cs | 66 ++
4 files changed, 738 insertions(+), 6 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/473b792d/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs b/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
index c2961f9..151df1f 100644
--- a/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
+++ b/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
@@ -149,9 +149,11 @@ namespace Lucene.Net.Index
useCompoundFile = IndexWriterConfig.DEFAULT_USE_COMPOUND_FILE_SYSTEM;
openMode = OpenMode_e.CREATE_OR_APPEND;
similarity = IndexSearcher.DefaultSimilarity;
-
+#if FEATURE_TASKMERGESCHEDULER
+ mergeScheduler = new TaskMergeScheduler();
+#else
mergeScheduler = new ConcurrentMergeScheduler();
-
+#endif
writeLockTimeout = IndexWriterConfig.WRITE_LOCK_TIMEOUT;
indexingChain = DocumentsWriterPerThread.defaultIndexingChain;
codec = Codec.Default;
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/473b792d/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs b/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
new file mode 100644
index 0000000..54f7560
--- /dev/null
+++ b/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
@@ -0,0 +1,665 @@
+\ufeffusing System;
+using System.Collections.Generic;
+using System.Text;
+using System.Threading;
+
+namespace Lucene.Net.Index
+{
+ using Lucene.Net.Support;
+ using System.Linq;
+ using System.Threading.Tasks;
+ using Util;
+
+ /*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+ using Directory = Lucene.Net.Store.Directory;
+
+ /// <summary>
+ /// A <seealso cref="MergeScheduler"/> that runs each merge using
+ /// Tasks on the default TaskScheduler.
+ ///
+ /// <p>If more than <seealso cref="#GetMaxMergeCount"/> merges are
+ /// requested then this class will forcefully throttle the
+ /// incoming threads by pausing until one more more merges
+ /// complete.</p>
+ /// </summary>
+ public class TaskMergeScheduler : MergeScheduler, IConcurrentMergeScheduler
+ {
+ public const string COMPONENT_NAME = "CMS";
+
+ private readonly TaskScheduler _taskScheduler = TaskScheduler.Default;
+ private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim();
+ private readonly ManualResetEventSlim _manualResetEvent = new ManualResetEventSlim();
+ /// <summary>
+ /// List of currently active <seealso cref="MergeThread"/>s.</summary>
+ private readonly IList<MergeThread> _mergeThreads = new List<MergeThread>();
+
+ /// <summary>
+ /// How many <seealso cref="MergeThread"/>s have kicked off (this is use
+ /// to name them).
+ /// </summary>
+ private int _mergeThreadCount;
+
+ /// <summary>
+ /// <seealso cref="Directory"/> that holds the index. </summary>
+ private Directory _directory;
+
+ /// <summary>
+ /// <seealso cref="IndexWriter"/> that owns this instance.
+ /// </summary>
+ private IndexWriter _writer;
+
+ /// <summary>
+ /// Sole constructor, with all settings set to default
+ /// values.
+ /// </summary>
+ public TaskMergeScheduler() : base()
+ {
+ MaxThreadCount = _taskScheduler.MaximumConcurrencyLevel;
+ MaxMergeCount = _taskScheduler.MaximumConcurrencyLevel;
+ }
+
+ /// <summary>
+ /// Sets the maximum number of merge threads and simultaneous merges allowed.
+ /// </summary>
+ /// <param name="maxMergeCount"> the max # simultaneous merges that are allowed.
+ /// If a merge is necessary yet we already have this many
+ /// threads running, the incoming thread (that is calling
+ /// add/updateDocument) will block until a merge thread
+ /// has completed. Note that we will only run the
+ /// smallest <code>maxThreadCount</code> merges at a time. </param>
+ /// <param name="maxThreadCount"> the max # simultaneous merge threads that should
+ /// be running at once. this must be <= <code>maxMergeCount</code> </param>
+ public void SetMaxMergesAndThreads(int maxMergeCount, int maxThreadCount)
+ {
+ // This is handled by TaskScheduler.Default.MaximumConcurrencyLevel
+ }
+
+ /// <summary>
+ /// Max number of merge threads allowed to be running at
+ /// once. When there are more merges then this, we
+ /// forcefully pause the larger ones, letting the smaller
+ /// ones run, up until maxMergeCount merges at which point
+ /// we forcefully pause incoming threads (that presumably
+ /// are the ones causing so much merging).
+ /// </summary>
+ /// <seealso cref= #setMaxMergesAndThreads(int, int) </seealso>
+ public int MaxThreadCount { get; private set; }
+
+ /// <summary>
+ /// Max number of merges we accept before forcefully
+ /// throttling the incoming threads
+ /// </summary>
+ public int MaxMergeCount { get; private set; }
+
+ /// <summary>
+ /// Return the priority that merge threads run at. This is always the same.
+ /// </summary>
+ public int MergeThreadPriority
+ {
+ get
+ {
+ return (int)ThreadPriority.Normal;
+ }
+ set
+ {
+ }
+ }
+
+ /// <summary>
+ /// Called whenever the running merges have changed, to pause & unpause
+ /// threads. this method sorts the merge threads by their merge size in
+ /// descending order and then pauses/unpauses threads from first to last --
+ /// that way, smaller merges are guaranteed to run before larger ones.
+ /// </summary>
+ private void UpdateMergeThreads()
+ {
+ foreach (var merge in _mergeThreads.ToArray())
+ {
+ // Prune any dead threads
+ if (!merge.IsAlive)
+ {
+ _mergeThreads.Remove(merge);
+ merge.Dispose();
+ }
+ }
+ }
+
+ /// <summary>
+ /// Returns true if verbosing is enabled. this method is usually used in
+ /// conjunction with <seealso cref="#message(String)"/>, like that:
+ ///
+ /// <pre class="prettyprint">
+ /// if (verbose()) {
+ /// message("your message");
+ /// }
+ /// </pre>
+ /// </summary>
+ protected internal bool Verbose()
+ {
+ return _writer != null && _writer.infoStream.IsEnabled(COMPONENT_NAME);
+ }
+
+ /// <summary>
+ /// Outputs the given message - this method assumes <seealso cref="#verbose()"/> was
+ /// called and returned true.
+ /// </summary>
+ protected internal virtual void Message(string message)
+ {
+ _writer.infoStream.Message(COMPONENT_NAME, message);
+ }
+
+ public override void Dispose()
+ {
+ Sync();
+ _manualResetEvent.Dispose();
+ }
+
+ /// <summary>
+ /// Wait for any running merge threads to finish.
+ /// This call is not interruptible as used by <seealso cref="#Dispose()"/>.
+ /// </summary>
+ public virtual void Sync()
+ {
+ foreach (var merge in _mergeThreads.ToArray())
+ {
+ if (!merge.IsAlive)
+ {
+ continue;
+ }
+
+ try
+ {
+ merge.Wait();
+ }
+ catch (OperationCanceledException)
+ {
+ // expected when we cancel.
+ }
+ catch (AggregateException ae)
+ {
+ ae.Handle(x => x is OperationCanceledException);
+
+ foreach (var exception in ae.InnerExceptions)
+ {
+ HandleMergeException(ae);
+ }
+ }
+ }
+ }
+
+ /// <summary>
+ /// Returns the number of merge threads that are alive. Note that this number
+ /// is <= <seealso cref="#mergeThreads"/> size.
+ /// </summary>
+ private int MergeThreadCount()
+ {
+ return _mergeThreads.Count(x => x.IsAlive && x.CurrentMerge != null);
+ }
+
+ public override void Merge(IndexWriter writer, MergeTrigger trigger, bool newMergesFound)
+ {
+ using (_lock.Write())
+ {
+ _writer = writer;
+ _directory = writer.Directory;
+
+ if (Verbose())
+ {
+ Message("now merge");
+ Message(" index: " + writer.SegString());
+ }
+
+ // First, quickly run through the newly proposed merges
+ // and add any orthogonal merges (ie a merge not
+ // involving segments already pending to be merged) to
+ // the queue. If we are way behind on merging, many of
+ // these newly proposed merges will likely already be
+ // registered.
+
+ // Iterate, pulling from the IndexWriter's queue of
+ // pending merges, until it's empty:
+ while (true)
+ {
+ long startStallTime = 0;
+ while (writer.HasPendingMerges() && MergeThreadCount() >= MaxMergeCount)
+ {
+ // this means merging has fallen too far behind: we
+ // have already created maxMergeCount threads, and
+ // now there's at least one more merge pending.
+ // Note that only maxThreadCount of
+ // those created merge threads will actually be
+ // running; the rest will be paused (see
+ // updateMergeThreads). We stall this producer
+ // thread to prevent creation of new segments,
+ // until merging has caught up:
+ startStallTime = Environment.TickCount;
+ if (Verbose())
+ {
+ Message(" too many merges; stalling...");
+ }
+
+ _manualResetEvent.Reset();
+ _manualResetEvent.Wait();
+ }
+
+ if (Verbose())
+ {
+ if (startStallTime != 0)
+ {
+ Message(" stalled for " + (Environment.TickCount - startStallTime) + " msec");
+ }
+ }
+
+ MergePolicy.OneMerge merge = writer.NextMerge;
+ if (merge == null)
+ {
+ if (Verbose())
+ {
+ Message(" no more merges pending; now return");
+ }
+ return;
+ }
+
+ bool success = false;
+ try
+ {
+ if (Verbose())
+ {
+ Message(" consider merge " + writer.SegString(merge.Segments));
+ }
+
+ // OK to spawn a new merge thread to handle this
+ // merge:
+ var merger = CreateTask(writer, merge);
+
+ merger.MergeThreadCompleted += OnMergeThreadCompleted;
+
+ _mergeThreads.Add(merger);
+
+ if (Verbose())
+ {
+ Message(" launch new thread [" + merger.Name + "]");
+ }
+
+ merger.Start(_taskScheduler);
+
+ // Must call this after starting the thread else
+ // the new thread is removed from mergeThreads
+ // (since it's not alive yet):
+ UpdateMergeThreads();
+
+ success = true;
+ }
+ finally
+ {
+ if (!success)
+ {
+ writer.MergeFinish(merge);
+ }
+ }
+ }
+ }
+ }
+
+ private void OnMergeThreadCompleted(object sender, EventArgs e)
+ {
+ var mergeThread = sender as MergeThread;
+
+ if (mergeThread == null)
+ {
+ return;
+ }
+
+ mergeThread.MergeThreadCompleted -= OnMergeThreadCompleted;
+
+ using (_lock.Write())
+ {
+ UpdateMergeThreads();
+ }
+ }
+
+ /// <summary>
+ /// Create and return a new MergeThread </summary>
+ private MergeThread CreateTask(IndexWriter writer, MergePolicy.OneMerge merge)
+ {
+ var count = Interlocked.Increment(ref _mergeThreadCount);
+ var name = string.Format("Lucene Merge Task #{0}", count);
+
+ return new MergeThread(name, writer, merge, writer.infoStream, _manualResetEvent, HandleMergeException);
+ }
+
+ /// <summary>
+ /// Called when an exception is hit in a background merge
+ /// thread
+ /// </summary>
+ protected internal virtual void HandleMergeException(Exception exc)
+ {
+ // suppressExceptions is normally only set during testing
+ if (SuppressExceptions)
+ {
+ return;
+ }
+
+ try
+ {
+ // When an exception is hit during merge, IndexWriter
+ // removes any partial files and then allows another
+ // merge to run. If whatever caused the error is not
+ // transient then the exception will keep happening,
+ // so, we sleep here to avoid saturating CPU in such
+ // cases:
+ Thread.Sleep(250);
+ }
+ catch (ThreadInterruptedException ie)
+ {
+ throw new ThreadInterruptedException("Thread Interrupted Exception", ie);
+ }
+ throw new MergePolicy.MergeException(exc, _directory);
+ }
+
+ private bool SuppressExceptions;
+
+ /// <summary>
+ /// Used for testing </summary>
+ public virtual void SetSuppressExceptions()
+ {
+ SuppressExceptions = true;
+ }
+
+ /// <summary>
+ /// Used for testing </summary>
+ public virtual void ClearSuppressExceptions()
+ {
+ SuppressExceptions = false;
+ }
+
+ public override string ToString()
+ {
+ StringBuilder sb = new StringBuilder(this.GetType().Name + ": ");
+ sb.AppendFormat("maxThreadCount={0}, ", MaxThreadCount);
+ sb.AppendFormat("maxMergeCount={0}", MaxMergeCount);
+ return sb.ToString();
+ }
+
+ public override IMergeScheduler Clone()
+ {
+ TaskMergeScheduler clone = (TaskMergeScheduler)base.Clone();
+ clone._writer = null;
+ clone._directory = null;
+ clone._mergeThreads.Clear();
+ return clone;
+ }
+
+ /// <summary>
+ /// Runs a merge thread, which may run one or more merges
+ /// in sequence.
+ /// </summary>
+ internal class MergeThread : IDisposable
+ {
+ public event EventHandler MergeThreadCompleted;
+
+ private readonly CancellationTokenSource _cancellationTokenSource;
+ private readonly ReaderWriterLockSlim _lock = new ReaderWriterLockSlim();
+ private readonly ManualResetEventSlim _resetEvent;
+ private readonly Action<Exception> _exceptionHandler;
+ private readonly InfoStream _logger;
+ private readonly IndexWriter _writer;
+ private readonly MergePolicy.OneMerge _startingMerge;
+
+ private Task _task;
+ private MergePolicy.OneMerge _runningMerge;
+ private volatile bool _isDisposed = false;
+ private volatile bool _isDone;
+
+ /// <summary>
+ /// Sole constructor. </summary>
+ public MergeThread(string name, IndexWriter writer, MergePolicy.OneMerge startMerge, InfoStream logger,
+ ManualResetEventSlim resetEvent, Action<Exception> exceptionHandler)
+ {
+ Name = name;
+ _cancellationTokenSource = new CancellationTokenSource();
+ _writer = writer;
+ _startingMerge = startMerge;
+ _logger = logger;
+ _resetEvent = resetEvent;
+ _exceptionHandler = exceptionHandler;
+ }
+
+ private bool IsLoggingEnabled
+ {
+ get
+ {
+ return _logger != null && _logger.IsEnabled(COMPONENT_NAME);
+ }
+ }
+
+ public string Name { get; private set; }
+
+ public Task Instance
+ {
+ get
+ {
+ using (_lock.Read())
+ {
+ return _task;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Record the currently running merge. </summary>
+ public virtual MergePolicy.OneMerge RunningMerge
+ {
+ set
+ {
+ Interlocked.Exchange(ref _runningMerge, value);
+ }
+ get
+ {
+ using (_lock.Read())
+ {
+ return _runningMerge;
+ }
+ }
+ }
+
+ /// <summary>
+ /// Return the current merge, or null if this {@code
+ /// MergeThread} is done.
+ /// </summary>
+ public virtual MergePolicy.OneMerge CurrentMerge
+ {
+ get
+ {
+ using (_lock.Read())
+ {
+ if (_isDone)
+ {
+ return null;
+ }
+
+ return _runningMerge ?? _startingMerge;
+ }
+ }
+ }
+
+ public bool IsAlive
+ {
+ get
+ {
+ if (_isDisposed || _isDone)
+ {
+ return false;
+ }
+
+ using (_lock.Read())
+ {
+ return _task != null
+ && (_task.Status != TaskStatus.Canceled
+ || _task.Status != TaskStatus.Faulted
+ || _task.Status != TaskStatus.RanToCompletion);
+ }
+ }
+ }
+
+ public void Start(TaskScheduler taskScheduler)
+ {
+ using (_lock.Write())
+ {
+ if (_task == null && !_cancellationTokenSource.IsCancellationRequested)
+ {
+ _task = Task.Factory.StartNew(() => Run(_cancellationTokenSource.Token), _cancellationTokenSource.Token, TaskCreationOptions.None, taskScheduler);
+ }
+ }
+ }
+
+ public void Wait()
+ {
+ if (!IsAlive)
+ {
+ return;
+ }
+
+ _task.Wait(_cancellationTokenSource.Token);
+ }
+
+ public void Cancel()
+ {
+ if (!IsAlive)
+ {
+ return;
+ }
+
+ using (_lock.Write())
+ {
+ if (!_cancellationTokenSource.IsCancellationRequested)
+ {
+ _cancellationTokenSource.Cancel();
+ }
+ }
+ }
+
+ private void Run(CancellationToken cancellationToken)
+ {
+ // First time through the while loop we do the merge
+ // that we were started with:
+ MergePolicy.OneMerge merge = _startingMerge;
+
+ try
+ {
+ if (IsLoggingEnabled)
+ {
+ _logger.Message(COMPONENT_NAME, " merge thread: start");
+ }
+
+ while (true && !cancellationToken.IsCancellationRequested)
+ {
+ RunningMerge = merge;
+ _writer.Merge(merge);
+
+ // Subsequent times through the loop we do any new
+ // merge that writer says is necessary:
+ merge = _writer.NextMerge;
+
+ // Notify here in case any threads were stalled;
+ // they will notice that the pending merge has
+ // been pulled and possibly resume:
+ _resetEvent.Set();
+
+ if (merge != null)
+ {
+ if (IsLoggingEnabled)
+ {
+ _logger.Message(COMPONENT_NAME, " merge thread: do another merge " + _writer.SegString(merge.Segments));
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ if (IsLoggingEnabled)
+ {
+ _logger.Message(COMPONENT_NAME, " merge thread: done");
+ }
+ }
+ catch (Exception exc)
+ {
+ // Ignore the exception if it was due to abort:
+ if (!(exc is MergePolicy.MergeAbortedException))
+ {
+ //System.out.println(Thread.currentThread().getName() + ": CMS: exc");
+ //exc.printStackTrace(System.out)
+ _exceptionHandler(exc);
+ }
+ }
+ finally
+ {
+ _isDone = true;
+
+ if (MergeThreadCompleted != null)
+ {
+ MergeThreadCompleted(this, EventArgs.Empty);
+ }
+ }
+ }
+
+ public void Dispose()
+ {
+ if (_isDisposed)
+ {
+ return;
+ }
+
+ _isDisposed = true;
+ _lock.Dispose();
+ _cancellationTokenSource.Dispose();
+ }
+
+ public override string ToString()
+ {
+ return _task == null
+ ? string.Format("Task[{0}], Task has not been started yet.", Name)
+ : string.Format("Task[{0}], Id[{1}], Status[{2}]", Name, _task.Id, _task.Status);
+ }
+
+ public override bool Equals(object obj)
+ {
+ var compared = obj as MergeThread;
+
+ if (compared == null
+ || (Instance == null && compared.Instance != null)
+ || (Instance != null && compared.Instance == null))
+ {
+ return false;
+ }
+
+ return Instance.Id == compared.Instance.Id;
+ }
+
+ public override int GetHashCode()
+ {
+ return Instance == null
+ ? base.GetHashCode()
+ : Instance.GetHashCode();
+ }
+ }
+ }
+}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/473b792d/src/Lucene.Net.Core/Lucene.Net.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Lucene.Net.csproj b/src/Lucene.Net.Core/Lucene.Net.csproj
index 97ef348..d52e4b0 100644
--- a/src/Lucene.Net.Core/Lucene.Net.csproj
+++ b/src/Lucene.Net.Core/Lucene.Net.csproj
@@ -7,6 +7,7 @@
<OutputType>Library</OutputType>
<NoStandardLibraries>false</NoStandardLibraries>
<AssemblyName>Lucene.Net</AssemblyName>
+ <RootNamespace>Lucene.Net</RootNamespace>
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
<TargetFrameworkProfile>
</TargetFrameworkProfile>
@@ -34,10 +35,6 @@
<Prefer32Bit>false</Prefer32Bit>
</PropertyGroup>
<PropertyGroup>
- <RootNamespace>Lucene.Net</RootNamespace>
- </PropertyGroup>
- <PropertyGroup>
- <StartupObject />
</PropertyGroup>
<ItemGroup>
<Reference Include="Microsoft.CSharp" />
@@ -368,6 +365,7 @@
<Compile Include="Index\StoredFieldsConsumer.cs" />
<Compile Include="Index\StoredFieldsProcessor.cs" />
<Compile Include="Index\StoredFieldVisitor.cs" />
+ <Compile Include="Index\TaskMergeScheduler.cs" />
<Compile Include="Index\Term.cs" />
<Compile Include="Index\TermContext.cs" />
<Compile Include="Index\Terms.cs" />
@@ -841,6 +839,7 @@
<Compile Include="Util\PriorityQueue.cs" />
<Compile Include="Util\QueryBuilder.cs" />
<Compile Include="Util\RamUsageEstimator.cs" />
+ <Compile Include="Util\ReaderWriterLockSlimExtension.cs" />
<Compile Include="Util\RecyclingByteBlockAllocator.cs" />
<Compile Include="Util\RecyclingIntBlockAllocator.cs" />
<Compile Include="Util\RefCount.cs" />
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/473b792d/src/Lucene.Net.Core/Util/ReaderWriterLockSlimExtension.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Util/ReaderWriterLockSlimExtension.cs b/src/Lucene.Net.Core/Util/ReaderWriterLockSlimExtension.cs
new file mode 100644
index 0000000..927a00b
--- /dev/null
+++ b/src/Lucene.Net.Core/Util/ReaderWriterLockSlimExtension.cs
@@ -0,0 +1,66 @@
+\ufeffusing System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading;
+using System.Threading.Tasks;
+
+namespace Lucene.Net.Util
+{
+ /// <summary>
+ /// From:
+ /// http://stackoverflow.com/questions/170028/how-would-you-simplify-entering-and-exiting-a-readerwriterlock
+ /// </summary>
+ internal static class ReaderWriterExtension
+ {
+ sealed class ReadLockToken : IDisposable
+ {
+ private ReaderWriterLockSlim _readerWriterLockSlim;
+
+ public ReadLockToken(ReaderWriterLockSlim sync)
+ {
+ _readerWriterLockSlim = sync;
+ sync.EnterReadLock();
+ }
+
+ public void Dispose()
+ {
+ if (_readerWriterLockSlim != null)
+ {
+ _readerWriterLockSlim.ExitReadLock();
+ _readerWriterLockSlim = null;
+ }
+ }
+ }
+
+ sealed class WriteLockToken : IDisposable
+ {
+ private ReaderWriterLockSlim _readerWriterLockSlim;
+
+ public WriteLockToken(ReaderWriterLockSlim sync)
+ {
+ _readerWriterLockSlim = sync;
+ sync.EnterWriteLock();
+ }
+
+ public void Dispose()
+ {
+ if (_readerWriterLockSlim != null)
+ {
+ _readerWriterLockSlim.ExitWriteLock();
+ _readerWriterLockSlim = null;
+ }
+ }
+ }
+
+ public static IDisposable Read(this ReaderWriterLockSlim obj)
+ {
+ return new ReadLockToken(obj);
+ }
+
+ public static IDisposable Write(this ReaderWriterLockSlim obj)
+ {
+ return new WriteLockToken(obj);
+ }
+ }
+}
[9/9] lucenenet git commit: Removing duplicated Verbose method and
passing it in MergeThread.ctor
Posted by sy...@apache.org.
Removing duplicated Verbose method and passing it in MergeThread.ctor
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/0af102e7
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/0af102e7
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/0af102e7
Branch: refs/heads/master
Commit: 0af102e74c9ecc1035e9f5a5b69d3a8f592f040f
Parents: 2c8e4a9
Author: Connie Yau <co...@microsoft.com>
Authored: Tue May 24 14:14:54 2016 -0700
Committer: Connie Yau <co...@microsoft.com>
Committed: Tue May 24 14:14:54 2016 -0700
----------------------------------------------------------------------
src/Lucene.Net.Core/Index/TaskMergeScheduler.cs | 21 ++++++++------------
1 file changed, 8 insertions(+), 13 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/0af102e7/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs b/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
index f43b243..dbc8e05 100644
--- a/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
+++ b/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
@@ -340,7 +340,7 @@ namespace Lucene.Net.Index
var count = Interlocked.Increment(ref _mergeThreadCount);
var name = string.Format("Lucene Merge Task #{0}", count);
- return new MergeThread(name, writer, merge, writer.infoStream, _manualResetEvent, HandleMergeException);
+ return new MergeThread(name, writer, merge, writer.infoStream, Verbose(), _manualResetEvent, HandleMergeException);
}
/// <summary>
@@ -420,6 +420,7 @@ namespace Lucene.Net.Index
private readonly InfoStream _logger;
private readonly IndexWriter _writer;
private readonly MergePolicy.OneMerge _startingMerge;
+ private readonly bool _isLoggingEnabled;
private Task _task;
private MergePolicy.OneMerge _runningMerge;
@@ -428,7 +429,8 @@ namespace Lucene.Net.Index
/// <summary>
/// Sole constructor. </summary>
- public MergeThread(string name, IndexWriter writer, MergePolicy.OneMerge startMerge, InfoStream logger,
+ public MergeThread(string name, IndexWriter writer, MergePolicy.OneMerge startMerge,
+ InfoStream logger, bool isLoggingEnabled,
ManualResetEventSlim resetEvent, Action<Exception> exceptionHandler)
{
Name = name;
@@ -436,18 +438,11 @@ namespace Lucene.Net.Index
_writer = writer;
_startingMerge = startMerge;
_logger = logger;
+ _isLoggingEnabled = isLoggingEnabled;
_resetEvent = resetEvent;
_exceptionHandler = exceptionHandler;
}
- private bool IsLoggingEnabled
- {
- get
- {
- return _logger != null && _logger.IsEnabled(COMPONENT_NAME);
- }
- }
-
public string Name { get; private set; }
public Task Instance
@@ -562,7 +557,7 @@ namespace Lucene.Net.Index
try
{
- if (IsLoggingEnabled)
+ if (_isLoggingEnabled)
{
_logger.Message(COMPONENT_NAME, " merge thread: start");
}
@@ -583,7 +578,7 @@ namespace Lucene.Net.Index
if (merge != null)
{
- if (IsLoggingEnabled)
+ if (_isLoggingEnabled)
{
_logger.Message(COMPONENT_NAME, " merge thread: do another merge " + _writer.SegString(merge.Segments));
}
@@ -594,7 +589,7 @@ namespace Lucene.Net.Index
}
}
- if (IsLoggingEnabled)
+ if (_isLoggingEnabled)
{
_logger.Message(COMPONENT_NAME, " merge thread: done");
}
[6/9] lucenenet git commit: Adding LUCENENET specific to Lucene.NET
only changes
Posted by sy...@apache.org.
Adding LUCENENET specific to Lucene.NET only changes
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/53f4897a
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/53f4897a
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/53f4897a
Branch: refs/heads/master
Commit: 53f4897a18adf058ff294d134e742ee1a66c6318
Parents: df83f07
Author: Connie Yau <co...@microsoft.com>
Authored: Tue May 10 15:23:53 2016 -0700
Committer: Connie Yau <co...@microsoft.com>
Committed: Tue May 10 15:23:53 2016 -0700
----------------------------------------------------------------------
src/Lucene.Net.Core/Index/IConcurrentMergeScheduler.cs | 1 +
src/Lucene.Net.Core/Index/IMergeScheduler.cs | 1 +
src/Lucene.Net.Core/Index/TaskMergeScheduler.cs | 2 ++
src/Lucene.Net.Core/Util/ReaderWriterLockSlimExtension.cs | 9 ++++-----
src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs | 2 ++
5 files changed, 10 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/53f4897a/src/Lucene.Net.Core/Index/IConcurrentMergeScheduler.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/IConcurrentMergeScheduler.cs b/src/Lucene.Net.Core/Index/IConcurrentMergeScheduler.cs
index bbf205f..c4fc2f4 100644
--- a/src/Lucene.Net.Core/Index/IConcurrentMergeScheduler.cs
+++ b/src/Lucene.Net.Core/Index/IConcurrentMergeScheduler.cs
@@ -1,5 +1,6 @@
\ufeffnamespace Lucene.Net.Index
{
+ // LUCENENET specific
public interface IConcurrentMergeScheduler : IMergeScheduler
{
int MaxThreadCount { get; }
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/53f4897a/src/Lucene.Net.Core/Index/IMergeScheduler.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/IMergeScheduler.cs b/src/Lucene.Net.Core/Index/IMergeScheduler.cs
index 36347b5..ccc2c57 100644
--- a/src/Lucene.Net.Core/Index/IMergeScheduler.cs
+++ b/src/Lucene.Net.Core/Index/IMergeScheduler.cs
@@ -2,6 +2,7 @@
namespace Lucene.Net.Index
{
+ // LUCENENET specific
public interface IMergeScheduler : IDisposable
{
void Merge(IndexWriter writer, MergeTrigger trigger, bool newMergesFound);
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/53f4897a/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs b/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
index 54f7560..f82b145 100644
--- a/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
+++ b/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
@@ -37,6 +37,8 @@ namespace Lucene.Net.Index
/// requested then this class will forcefully throttle the
/// incoming threads by pausing until one more more merges
/// complete.</p>
+ ///
+ /// LUCENENET specific
/// </summary>
public class TaskMergeScheduler : MergeScheduler, IConcurrentMergeScheduler
{
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/53f4897a/src/Lucene.Net.Core/Util/ReaderWriterLockSlimExtension.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Util/ReaderWriterLockSlimExtension.cs b/src/Lucene.Net.Core/Util/ReaderWriterLockSlimExtension.cs
index 927a00b..c5dadfc 100644
--- a/src/Lucene.Net.Core/Util/ReaderWriterLockSlimExtension.cs
+++ b/src/Lucene.Net.Core/Util/ReaderWriterLockSlimExtension.cs
@@ -1,15 +1,14 @@
\ufeffusing System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
using System.Threading;
-using System.Threading.Tasks;
namespace Lucene.Net.Util
{
/// <summary>
- /// From:
+ /// Extensions to help obtain/release from a ReaderWriterSlimLock.
+ /// Taken from:
/// http://stackoverflow.com/questions/170028/how-would-you-simplify-entering-and-exiting-a-readerwriterlock
+ ///
+ /// LUCENENET specific
/// </summary>
internal static class ReaderWriterExtension
{
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/53f4897a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
index 83f17bd..147c4a7 100644
--- a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
+++ b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
@@ -2688,6 +2688,8 @@ namespace Lucene.Net.Util
/// <summary>
/// Contains a list of all the IConcurrentMergeSchedulers to be tested.
+ ///
+ /// LUCENENET specific
/// </summary>
public class ConcurrentMergeSchedulers
{
[4/9] lucenenet git commit: Adding TaskMergeScheduler as a case where
it can randomly be set as MergeScheduler
Posted by sy...@apache.org.
Adding TaskMergeScheduler as a case where it can randomly be set as MergeScheduler
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/df83f077
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/df83f077
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/df83f077
Branch: refs/heads/master
Commit: df83f07706e653cf80dd61cda0c20dd21a838c03
Parents: 653d8a3
Author: Connie Yau <co...@microsoft.com>
Authored: Mon May 2 16:48:56 2016 -0700
Committer: Connie Yau <co...@microsoft.com>
Committed: Tue May 3 11:34:20 2016 -0700
----------------------------------------------------------------------
.../Util/LuceneTestCase.cs | 18 ++++++++++++++----
1 file changed, 14 insertions(+), 4 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/df83f077/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
index 6a217fb..83f17bd 100644
--- a/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
+++ b/src/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
@@ -872,9 +872,19 @@ namespace Lucene.Net.Util
{
int maxThreadCount = TestUtil.NextInt(Random(), 1, 4);
int maxMergeCount = TestUtil.NextInt(Random(), maxThreadCount, maxThreadCount + 4);
- ConcurrentMergeScheduler cms = new ConcurrentMergeScheduler();
- cms.SetMaxMergesAndThreads(maxMergeCount, maxThreadCount);
- c.SetMergeScheduler(cms);
+ IConcurrentMergeScheduler mergeScheduler;
+
+ if (r.NextBoolean())
+ {
+ mergeScheduler = new ConcurrentMergeScheduler();
+ }
+ else
+ {
+ mergeScheduler = new TaskMergeScheduler();
+ }
+
+ mergeScheduler.SetMaxMergesAndThreads(maxMergeCount, maxThreadCount);
+ c.SetMergeScheduler(mergeScheduler);
}
if (r.NextBoolean())
{
@@ -983,7 +993,7 @@ namespace Lucene.Net.Util
public static LogMergePolicy NewLogMergePolicy(Random r)
{
LogMergePolicy logmp = r.NextBoolean() ? (LogMergePolicy)new LogDocMergePolicy() : new LogByteSizeMergePolicy();
-
+
logmp.CalibrateSizeByDeletes = r.NextBoolean();
if (Rarely(r))
{
[7/9] lucenenet git commit: Removing compiler preprocessors
Posted by sy...@apache.org.
Removing compiler preprocessors
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/8a859717
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/8a859717
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/8a859717
Branch: refs/heads/master
Commit: 8a859717de9ba619799e70d4be11729ed0fd0cc8
Parents: 53f4897
Author: Connie Yau <co...@microsoft.com>
Authored: Tue May 17 15:13:11 2016 -0700
Committer: Connie Yau <co...@microsoft.com>
Committed: Tue May 17 15:16:27 2016 -0700
----------------------------------------------------------------------
src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs | 4 ----
.../core/Index/TestIndexWriterConfig.cs | 12 ------------
src/Lucene.Net.Tests/core/TestMergeSchedulerExternal.cs | 2 --
3 files changed, 18 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8a859717/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs b/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
index 151df1f..bd84747 100644
--- a/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
+++ b/src/Lucene.Net.Core/Index/LiveIndexWriterConfig.cs
@@ -149,11 +149,7 @@ namespace Lucene.Net.Index
useCompoundFile = IndexWriterConfig.DEFAULT_USE_COMPOUND_FILE_SYSTEM;
openMode = OpenMode_e.CREATE_OR_APPEND;
similarity = IndexSearcher.DefaultSimilarity;
-#if FEATURE_TASKMERGESCHEDULER
- mergeScheduler = new TaskMergeScheduler();
-#else
mergeScheduler = new ConcurrentMergeScheduler();
-#endif
writeLockTimeout = IndexWriterConfig.WRITE_LOCK_TIMEOUT;
indexingChain = DocumentsWriterPerThread.defaultIndexingChain;
codec = Codec.Default;
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8a859717/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs b/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
index 7e17b27..954d323 100644
--- a/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestIndexWriterConfig.cs
@@ -61,11 +61,7 @@ namespace Lucene.Net.Index
Assert.AreEqual(typeof(MockAnalyzer), conf.Analyzer.GetType());
Assert.IsNull(conf.IndexCommit);
Assert.AreEqual(typeof(KeepOnlyLastCommitDeletionPolicy), conf.DelPolicy.GetType());
-#if FEATURE_TASKMERGESCHEDULER
- Assert.AreEqual(typeof(TaskMergeScheduler), conf.MergeScheduler.GetType());
-#else
Assert.AreEqual(typeof(ConcurrentMergeScheduler), conf.MergeScheduler.GetType());
-#endif
Assert.AreEqual(OpenMode_e.CREATE_OR_APPEND, conf.OpenMode);
// we don't need to assert this, it should be unspecified
Assert.IsTrue(IndexSearcher.DefaultSimilarity == conf.Similarity);
@@ -288,11 +284,7 @@ namespace Lucene.Net.Index
Assert.IsTrue(mergeSched.GetType() == mergeSchedClone.GetType() && (mergeSched != mergeSchedClone || mergeSched.Clone() == mergeSchedClone.Clone()));
conf.SetMergeScheduler(new SerialMergeScheduler());
-#if FEATURE_TASKMERGESCHEDULER
- Assert.AreEqual(typeof(TaskMergeScheduler), clone.MergeScheduler.GetType());
-#else
Assert.AreEqual(typeof(ConcurrentMergeScheduler), clone.MergeScheduler.GetType());
-#endif
}
[Test]
@@ -315,11 +307,7 @@ namespace Lucene.Net.Index
}
// Test MergeScheduler
-#if FEATURE_TASKMERGESCHEDULER
- Assert.AreEqual(typeof(TaskMergeScheduler), conf.MergeScheduler.GetType());
-#else
Assert.AreEqual(typeof(ConcurrentMergeScheduler), conf.MergeScheduler.GetType());
-#endif
conf.SetMergeScheduler(new SerialMergeScheduler());
Assert.AreEqual(typeof(SerialMergeScheduler), conf.MergeScheduler.GetType());
try
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/8a859717/src/Lucene.Net.Tests/core/TestMergeSchedulerExternal.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/TestMergeSchedulerExternal.cs b/src/Lucene.Net.Tests/core/TestMergeSchedulerExternal.cs
index f68fb8a..59a7ffd 100644
--- a/src/Lucene.Net.Tests/core/TestMergeSchedulerExternal.cs
+++ b/src/Lucene.Net.Tests/core/TestMergeSchedulerExternal.cs
@@ -76,9 +76,7 @@ namespace Lucene.Net.Tests
{
MergeThread thread = new MyMergeThread(this, writer, merge);
thread.ThreadPriority = MergeThreadPriority;
-#if !FEATURE_TASKMERGESCHEDULER
thread.SetDaemon(true);
-#endif
thread.Name = "MyMergeThread";
return thread;
}
[8/9] lucenenet git commit: Moving license to top of file and
combings usings into one location
Posted by sy...@apache.org.
Moving license to top of file and combings usings into one location
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/2c8e4a9e
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/2c8e4a9e
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/2c8e4a9e
Branch: refs/heads/master
Commit: 2c8e4a9e889e94cc133eeaba7a63765d13e96c99
Parents: 8a85971
Author: Connie Yau <co...@microsoft.com>
Authored: Tue May 17 15:19:57 2016 -0700
Committer: Connie Yau <co...@microsoft.com>
Committed: Tue May 17 15:22:49 2016 -0700
----------------------------------------------------------------------
src/Lucene.Net.Core/Index/TaskMergeScheduler.cs | 47 +++++++++-----------
1 file changed, 22 insertions(+), 25 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/2c8e4a9e/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs b/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
index f82b145..f43b243 100644
--- a/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
+++ b/src/Lucene.Net.Core/Index/TaskMergeScheduler.cs
@@ -1,34 +1,31 @@
-\ufeffusing System;
+\ufeff/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+using Lucene.Net.Support;
+using Lucene.Net.Util;
+using System;
using System.Collections.Generic;
+using System.Linq;
using System.Text;
using System.Threading;
+using System.Threading.Tasks;
+using Directory = Lucene.Net.Store.Directory;
namespace Lucene.Net.Index
{
- using Lucene.Net.Support;
- using System.Linq;
- using System.Threading.Tasks;
- using Util;
-
- /*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
- using Directory = Lucene.Net.Store.Directory;
-
/// <summary>
/// A <seealso cref="MergeScheduler"/> that runs each merge using
/// Tasks on the default TaskScheduler.