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 2017/07/11 07:42:36 UTC
[11/22] lucenenet git commit: Fixed error reporting, documentation,
and added missing Dispose() calls in CLI tools
Fixed error reporting, documentation, and added missing Dispose() calls in CLI tools
Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/faa85eb3
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/faa85eb3
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/faa85eb3
Branch: refs/heads/master
Commit: faa85eb360e413c36ab91f93fc4d65300586bf55
Parents: 70f1559
Author: Shad Storhaug <sh...@shadstorhaug.com>
Authored: Mon Jul 10 14:51:32 2017 +0700
Committer: Shad Storhaug <sh...@shadstorhaug.com>
Committed: Mon Jul 10 14:51:32 2017 +0700
----------------------------------------------------------------------
.../Index/CompoundFileExtractor.cs | 8 +-
.../Index/MultiPassIndexSplitter.cs | 138 +++++++++++--------
src/Lucene.Net.Misc/Misc/IndexMergeTool.cs | 36 ++---
3 files changed, 102 insertions(+), 80 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/faa85eb3/src/Lucene.Net.Misc/Index/CompoundFileExtractor.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Misc/Index/CompoundFileExtractor.cs b/src/Lucene.Net.Misc/Index/CompoundFileExtractor.cs
index db9c5be..e8452f5 100644
--- a/src/Lucene.Net.Misc/Index/CompoundFileExtractor.cs
+++ b/src/Lucene.Net.Misc/Index/CompoundFileExtractor.cs
@@ -32,7 +32,7 @@ namespace Lucene.Net.Index
/// Add the -extract flag to extract files to the current working directory.
/// In order to make the extracted version of the index work, you have to copy
/// the segments file from the compound index into the directory where the extracted files are stored. </summary>
- /// <param name="args"> Usage: org.apache.lucene.index.IndexReader [-extract] <cfsfile> </param>
+ ///// <param name="args"> Usage: org.apache.lucene.index.IndexReader [-extract] <cfsfile> </param>
public static void Main(string[] args)
{
string filename = null;
@@ -51,8 +51,10 @@ namespace Lucene.Net.Index
{
if (j == args.Length - 1)
{
- Console.WriteLine("ERROR: missing value for -dir-impl option");
- Environment.Exit(1);
+ // LUCENENET specific - our wrapper console shows the correct usage
+ throw new ArgumentException("ERROR: missing value for --directory-type option");
+ //Console.WriteLine("ERROR: missing value for -dir-impl option");
+ //Environment.Exit(1);
}
j++;
dirImpl = args[j];
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/faa85eb3/src/Lucene.Net.Misc/Index/MultiPassIndexSplitter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Misc/Index/MultiPassIndexSplitter.cs b/src/Lucene.Net.Misc/Index/MultiPassIndexSplitter.cs
index 4f40250..2a03d89 100644
--- a/src/Lucene.Net.Misc/Index/MultiPassIndexSplitter.cs
+++ b/src/Lucene.Net.Misc/Index/MultiPassIndexSplitter.cs
@@ -133,84 +133,102 @@ namespace Lucene.Net.Index
//Environment.Exit(-1);
}
List<IndexReader> indexes = new List<IndexReader>();
- string outDir = null;
- int numParts = -1;
- bool seq = false;
- for (int i = 0; i < args.Length; i++)
+ try
{
- if (args[i].Equals("-out"))
+ string outDir = null;
+ int numParts = -1;
+ bool seq = false;
+ for (int i = 0; i < args.Length; i++)
{
- outDir = args[++i];
+ if (args[i].Equals("-out"))
+ {
+ outDir = args[++i];
+ }
+ else if (args[i].Equals("-num"))
+ {
+ numParts = Convert.ToInt32(args[++i]);
+ }
+ else if (args[i].Equals("-seq"))
+ {
+ seq = true;
+ }
+ else
+ {
+ DirectoryInfo file = new DirectoryInfo(args[i]);
+ if (!file.Exists)
+ {
+ Console.Error.WriteLine("Invalid input path - skipping: " + file);
+ continue;
+ }
+ using (Store.Directory dir = FSDirectory.Open(new DirectoryInfo(args[i])))
+ {
+ try
+ {
+ if (!DirectoryReader.IndexExists(dir))
+ {
+ Console.Error.WriteLine("Invalid input index - skipping: " + file);
+ continue;
+ }
+ }
+ catch (Exception)
+ {
+ Console.Error.WriteLine("Invalid input index - skipping: " + file);
+ continue;
+ }
+ indexes.Add(DirectoryReader.Open(dir));
+ }
+ }
}
- else if (args[i].Equals("-num"))
+ if (outDir == null)
{
- numParts = Convert.ToInt32(args[++i]);
+ throw new Exception("Required argument missing: -out outputDir");
}
- else if (args[i].Equals("-seq"))
+ if (numParts < 2)
{
- seq = true;
+ throw new Exception("Invalid value of required argument: -num numParts");
}
- else
+ if (indexes.Count == 0)
+ {
+ throw new Exception("No input indexes to process");
+ }
+ DirectoryInfo @out = new DirectoryInfo(outDir);
+ @out.Create();
+ if (!new DirectoryInfo(outDir).Exists)
+ {
+ throw new Exception("Can't create output directory: " + @out);
+ }
+ Store.Directory[] dirs = new Store.Directory[numParts];
+ try
{
- DirectoryInfo file = new DirectoryInfo(args[i]);
- if (!file.Exists)
+ for (int i = 0; i < numParts; i++)
{
- Console.Error.WriteLine("Invalid input path - skipping: " + file);
- continue;
+ dirs[i] = FSDirectory.Open(new DirectoryInfo(Path.Combine(@out.FullName, "part-" + i)));
}
- Store.Directory dir = FSDirectory.Open(new DirectoryInfo(args[i]));
- try
+ MultiPassIndexSplitter splitter = new MultiPassIndexSplitter();
+ IndexReader input;
+ if (indexes.Count == 1)
{
- if (!DirectoryReader.IndexExists(dir))
- {
- Console.Error.WriteLine("Invalid input index - skipping: " + file);
- continue;
- }
+ input = indexes[0];
}
- catch (Exception)
+ else
{
- Console.Error.WriteLine("Invalid input index - skipping: " + file);
- continue;
+ input = new MultiReader(indexes.ToArray());
}
- indexes.Add(DirectoryReader.Open(dir));
+#pragma warning disable 612, 618
+ splitter.Split(LuceneVersion.LUCENE_CURRENT, input, dirs, seq);
+#pragma warning restore 612, 618
+ }
+ finally
+ {
+ // LUCENENET specific - properly dispose directories to prevent resource leaks
+ IOUtils.Dispose(dirs);
}
}
- if (outDir == null)
- {
- throw new Exception("Required argument missing: -out outputDir");
- }
- if (numParts < 2)
- {
- throw new Exception("Invalid value of required argument: -num numParts");
- }
- if (indexes.Count == 0)
- {
- throw new Exception("No input indexes to process");
- }
- DirectoryInfo @out = new DirectoryInfo(outDir);
- @out.Create();
- if (!new DirectoryInfo(outDir).Exists)
- {
- throw new Exception("Can't create output directory: " + @out);
- }
- Store.Directory[] dirs = new Store.Directory[numParts];
- for (int i = 0; i < numParts; i++)
- {
- dirs[i] = FSDirectory.Open(new DirectoryInfo(Path.Combine(@out.FullName, "part-" + i)));
- }
- MultiPassIndexSplitter splitter = new MultiPassIndexSplitter();
- IndexReader input;
- if (indexes.Count == 1)
- {
- input = indexes[0];
- }
- else
+ finally
{
- input = new MultiReader(indexes.ToArray());
+ // LUCENENET specific - properly dispose index readers to prevent resource leaks
+ IOUtils.Dispose(indexes);
}
-#pragma warning disable 612, 618
- splitter.Split(LuceneVersion.LUCENE_CURRENT, input, dirs, seq);
-#pragma warning restore 612, 618
}
/// <summary>
http://git-wip-us.apache.org/repos/asf/lucenenet/blob/faa85eb3/src/Lucene.Net.Misc/Misc/IndexMergeTool.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Misc/Misc/IndexMergeTool.cs b/src/Lucene.Net.Misc/Misc/IndexMergeTool.cs
index de79ff5..2c1b305 100644
--- a/src/Lucene.Net.Misc/Misc/IndexMergeTool.cs
+++ b/src/Lucene.Net.Misc/Misc/IndexMergeTool.cs
@@ -32,31 +32,33 @@ namespace Lucene.Net.Misc
{
if (args.Length < 3)
{
- Console.Error.WriteLine("Usage: IndexMergeTool <mergedIndex> <index1> <index2> [index3] ...");
- Environment.Exit(1);
+ // LUCENENET specific - our wrapper console shows the correct usage
+ throw new ArgumentException();
+ //Console.Error.WriteLine("Usage: IndexMergeTool <mergedIndex> <index1> <index2> [index3] ...");
+ //Environment.Exit(1);
}
- FSDirectory mergedIndex = FSDirectory.Open(new System.IO.DirectoryInfo(args[0]));
-
- using (IndexWriter writer = new IndexWriter(mergedIndex,
-#pragma warning disable 612, 618
+ using (FSDirectory mergedIndex = FSDirectory.Open(new System.IO.DirectoryInfo(args[0])))
+ {
+ using (IndexWriter writer = new IndexWriter(mergedIndex,
+#pragma warning disable 612, 618
new IndexWriterConfig(LuceneVersion.LUCENE_CURRENT, null)
#pragma warning restore 612, 618
{ OpenMode = OpenMode.CREATE }))
- {
-
- Directory[] indexes = new Directory[args.Length - 1];
- for (int i = 1; i < args.Length; i++)
{
- indexes[i - 1] = FSDirectory.Open(new System.IO.DirectoryInfo(args[i]));
- }
+ Directory[] indexes = new Directory[args.Length - 1];
+ for (int i = 1; i < args.Length; i++)
+ {
+ indexes[i - 1] = FSDirectory.Open(new System.IO.DirectoryInfo(args[i]));
+ }
- Console.WriteLine("Merging...");
- writer.AddIndexes(indexes);
+ Console.WriteLine("Merging...");
+ writer.AddIndexes(indexes);
- Console.WriteLine("Full merge...");
- writer.ForceMerge(1);
+ Console.WriteLine("Full merge...");
+ writer.ForceMerge(1);
+ }
+ Console.WriteLine("Done.");
}
- Console.WriteLine("Done.");
}
}
}
\ No newline at end of file