You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by ni...@apache.org on 2022/10/31 21:13:02 UTC
[lucenenet] 01/04: BUG: Lucene.Net.Util.OfflineSorter: Fixed the Sort() and SortPartition() methods so they use the tempDirectory parameter that is passed through the constructor, as was the case in Lucene. Added a constructor overload to specify the directory as a string (a .NET convention).
This is an automated email from the ASF dual-hosted git repository.
nightowl888 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/lucenenet.git
commit 7edfa94b3479e0bc6c9917ab6a625b8654a55cee
Author: Shad Storhaug <sh...@shadstorhaug.com>
AuthorDate: Mon Oct 31 14:14:15 2022 +0700
BUG: Lucene.Net.Util.OfflineSorter: Fixed the Sort() and SortPartition() methods so they use the tempDirectory parameter that is passed through the constructor, as was the case in Lucene. Added a constructor overload to specify the directory as a string (a .NET convention).
---
src/Lucene.Net/Util/OfflineSorter.cs | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/Lucene.Net/Util/OfflineSorter.cs b/src/Lucene.Net/Util/OfflineSorter.cs
index 917f897ae..760418765 100644
--- a/src/Lucene.Net/Util/OfflineSorter.cs
+++ b/src/Lucene.Net/Util/OfflineSorter.cs
@@ -183,6 +183,7 @@ namespace Lucene.Net.Util
}
private readonly BufferSize ramBufferSize;
+ private readonly DirectoryInfo tempDirectory;
private readonly Counter bufferBytesUsed = Counter.NewCounter();
private readonly BytesRefArray buffer;
@@ -217,9 +218,7 @@ namespace Lucene.Net.Util
/// <summary>
/// All-details constructor.
/// </summary>
-#pragma warning disable IDE0060 // Remove unused parameter
public OfflineSorter(IComparer<BytesRef> comparer, BufferSize ramBufferSize, DirectoryInfo tempDirectory, int maxTempfiles)
-#pragma warning restore IDE0060 // Remove unused parameter
{
buffer = new BytesRefArray(bufferBytesUsed);
if (ramBufferSize.bytes < ABSOLUTE_MIN_SORT_BUFFER_SIZE)
@@ -233,10 +232,20 @@ namespace Lucene.Net.Util
}
this.ramBufferSize = ramBufferSize;
+ this.tempDirectory = tempDirectory;
this.maxTempFiles = maxTempfiles;
this.comparer = comparer;
}
+ /// <summary>
+ /// All-details constructor, specifying <paramref name="tempDirectoryPath"/> as a <see cref="string"/>.
+ /// </summary>
+ // LUCENENET specific
+ public OfflineSorter(IComparer<BytesRef> comparer, BufferSize ramBufferSize, string tempDirectoryPath, int maxTempfiles)
+ : this(comparer, ramBufferSize, new DirectoryInfo(tempDirectoryPath), maxTempfiles)
+ {
+ }
+
/// <summary>
/// Sort input to output, explicit hint for the buffer size. The amount of allocated
/// memory may deviate from the hint (may be smaller or larger).
@@ -265,7 +274,7 @@ namespace Lucene.Net.Util
// Handle intermediate merges.
if (merges.Count == maxTempFiles)
{
- var intermediate = new FileInfo(Path.GetTempFileName());
+ var intermediate = FileSupport.CreateTempFile("sort", "intermediate", tempDirectory);
try
{
MergePartitions(merges, intermediate);
@@ -361,7 +370,7 @@ namespace Lucene.Net.Util
private FileInfo SortPartition(/*int len*/) // LUCENENET NOTE: made private, since protected is not valid in a sealed class. Also eliminated unused parameter.
{
var data = this.buffer;
- FileInfo tempFile = FileSupport.CreateTempFile("sort", "partition", DefaultTempDir());
+ FileInfo tempFile = FileSupport.CreateTempFile("sort", "partition", tempDirectory);
long start = J2N.Time.NanoTime() / J2N.Time.MillisecondsPerNanosecond; // LUCENENET: Use NanoTime() rather than CurrentTimeMilliseconds() for more accurate/reliable results
sortInfo.SortTime += ((J2N.Time.NanoTime() / J2N.Time.MillisecondsPerNanosecond) - start); // LUCENENET: Use NanoTime() rather than CurrentTimeMilliseconds() for more accurate/reliable results