[jira] [Comment Edited] (LUCENE-6829) OfflineSorter should use Directory API

2015-10-18 Thread Steve Rowe (JIRA)

[ 
https://issues.apache.org/jira/browse/LUCENE-6829?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14962819#comment-14962819
 ] 

Steve Rowe edited comment on LUCENE-6829 at 10/19/15 4:24 AM:
--

Another test failure my Jenkins found with the same root cause, only reproduces 
8/100 iters for me:

{noformat}
   [junit4]   2> NOTE: reproduce with: ant test  
-Dtestcase=TestIndexWriterCommit -Dtests.method=testPrepareCommitRollback 
-Dtests.seed=98FCDFF6002C97E1 -Dtests.nightly=true -Dtests.slow=true 
-Dtests.linedocsfile=/home/jenkins/lucene-data/e
nwiki.random.lines.txt -Dtests.locale=is -Dtests.timezone=Australia/Sydney 
-Dtests.asserts=true -Dtests.file.encoding=UTF-8
   [junit4] ERROR   0.32s | TestIndexWriterCommit.testPrepareCommitRollback <<<
   [junit4]> Throwable #1: java.lang.NullPointerException
   [junit4]>at 
__randomizedtesting.SeedInfo.seed([98FCDFF6002C97E1:94F93159522F894E]:0)
   [junit4]>at 
java.util.ComparableTimSort.binarySort(ComparableTimSort.java:258)
   [junit4]>at 
java.util.ComparableTimSort.sort(ComparableTimSort.java:203)
   [junit4]>at java.util.Arrays.sort(Arrays.java:1246)
   [junit4]>at 
org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:660)
   [junit4]>at 
org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:73)
   [junit4]>at 
org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:63)
   [junit4]>at 
org.apache.lucene.index.TestIndexWriterCommit.testPrepareCommitRollback(TestIndexWriterCommit.java:599)
   [junit4]>at java.lang.Thread.run(Thread.java:745)
   [junit4]   2> NOTE: test params are: codec=Asserting(Lucene53): 
{content=Lucene50(blocksize=128)}, docValues:{}, 
sim=RandomSimilarityProvider(queryNorm=true,coord=crazy): {content=DFR 
I(ne)3(800.0)}, locale=is, timezone=Australia/Sydney
   [junit4]   2> NOTE: Linux 4.1.0-custom2-amd64 amd64/Oracle Corporation 
1.8.0_45 (64-bit)/cpus=16,threads=1,free=401791056,total=514850816
   [junit4]   2> NOTE: All tests run in this JVM: [TestIndexWriterCommit]
{noformat}


was (Author: steve_rowe):
Another test failure my Jenkins found with the same root cause, only reproduces 
8/100 iters for me:

{noformat}
   [junit4]   2> NOTE: reproduce with: ant test  
-Dtestcase=TestIndexWriterCommit -Dtests.method=testPrepareCommitRollback 
-Dtests.seed=98FCDFF6002C97E1 -Dtests.nightly=true -Dtests.slow=true 
-Dtests.linedocsfile=/home/jenkins/lucene-data/e
nwiki.random.lines.txt -Dtests.locale=is -Dtests.timezone=Australia/Sydney 
-Dtests.asserts=true -Dtests.file.encoding=UTF-8
   [junit4] ERROR   0.32s | TestIndexWriterCommit.testPrepareCommitRollback <<<
   [junit4]> Throwable #1: java.lang.NullPointerException
   [junit4]>at __randomizedtesting.SeedInfo.seed([98FCDFF6002C97E1:9
4F93159522F894E]:0)
   [junit4]>at java.util.ComparableTimSort.binarySort(ComparableTimS
ort.java:258)
   [junit4]>at java.util.ComparableTimSort.sort(ComparableTimSort.ja
va:203)
   [junit4]>at java.util.Arrays.sort(Arrays.java:1246)
   [junit4]>at 
org.apache.lucene.index.SegmentInfos$FindSegmentsFile.run(SegmentInfos.java:660)
   [junit4]>at 
org.apache.lucene.index.StandardDirectoryReader.open(StandardDirectoryReader.java:73)
   [junit4]>at 
org.apache.lucene.index.DirectoryReader.open(DirectoryReader.java:63)
   [junit4]>at 
org.apache.lucene.index.TestIndexWriterCommit.testPrepareCommitRollback(TestIndexWriterCommit.java:599)
   [junit4]>at java.lang.Thread.run(Thread.java:745)
   [junit4]   2> NOTE: test params are: codec=Asserting(Lucene53): 
{content=Lucene50(blocksize=128)}, docValues:{}, 
sim=RandomSimilarityProvider(queryNorm=true,coord=crazy): {content=DFR 
I(ne)3(800.0)}, locale=is, timezone=Australia/Sydney
   [junit4]   2> NOTE: Linux 4.1.0-custom2-amd64 amd64/Oracle Corporation 
1.8.0_45 (64-bit)/cpus=16,threads=1,free=401791056,total=514850816
   [junit4]   2> NOTE: All tests run in this JVM: [TestIndexWriterCommit]
{noformat}

> OfflineSorter should use Directory API
> --
>
> Key: LUCENE-6829
> URL: https://issues.apache.org/jira/browse/LUCENE-6829
> Project: Lucene - Core
>  Issue Type: Improvement
>Reporter: Michael McCandless
>Assignee: Michael McCandless
> Fix For: Trunk
>
> Attachments: LUCENE-6829.patch, LUCENE-6829.patch, LUCENE-6829.patch, 
> LUCENE-6829.patch
>
>
> I think this is a blocker for LUCENE-6825, because the block KD-tree makes 
> heavy use of OfflineSorter and we don't want to fill up tmp space ...
> This should be a straightforward cutover, but there are some challenges, e.g. 
> the test was failing because virus 

[jira] [Comment Edited] (LUCENE-6829) OfflineSorter should use Directory API

2015-10-13 Thread Dawid Weiss (JIRA)

[ 
https://issues.apache.org/jira/browse/LUCENE-6829?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=14954520#comment-14954520
 ] 

Dawid Weiss edited comment on LUCENE-6829 at 10/13/15 7:04 AM:
---

This is a large patch and I only scanned it briefly. It looks good to me. I 
don't know how to avoid the virus checker special case (requiring odd hacks in 
the code to disable it).

Also, blocks like this one:
{code}
+  Path tempPath = 
Files.createTempDirectory(Dictionary.getDefaultTempDir(), "Hunspell");
+  boolean success = false;
+  try (Directory tempDir = FSDirectory.open(tempPath)) {
+this.dictionary = new Dictionary(tempDir, "hunspell", affix, 
dictionaries, ignoreCase);
+success = true;
+  } finally {
+// tempPath (directory) should be empty at this point:
+if (success) {
+  Files.delete(tempPath);
+} else {
+  IOUtils.deleteFilesIgnoringExceptions(tempPath);
+}
+  }
{code}

Is there any reason why we shouldn't just let the regular exception suppression 
be used here? I know it'd reverse the precedence, but at least you'd get the 
full picture (temp. file couldn't be deleted too). Isn't this a leftover 
pattern from before 1.7 days?

So, to be clear, why isn't the above just:
{code}
+  Path tempPath = 
Files.createTempDirectory(Dictionary.getDefaultTempDir(), "Hunspell");
+  try (Directory tempDir = FSDirectory.open(tempPath)) {
+this.dictionary = new Dictionary(tempDir, "hunspell", affix, 
dictionaries, ignoreCase);
+  } finally {
+ Files.delete(tempPath); // will fail if tempPath has any files in it, 
suppressing any exception.
+  }
{code}



was (Author: dweiss):
This is a large patch and I only scanned it briefly. It looks good to me. I 
don't know how to avoid the virus checker special case (requiring odd hacks in 
the code to disable it).

Also, blocks like this one:
{code}
+  Path tempPath = 
Files.createTempDirectory(Dictionary.getDefaultTempDir(), "Hunspell");
+  boolean success = false;
+  try (Directory tempDir = FSDirectory.open(tempPath)) {
+this.dictionary = new Dictionary(tempDir, "hunspell", affix, 
dictionaries, ignoreCase);
+success = true;
+  } finally {
+// tempPath (directory) should be empty at this point:
+if (success) {
+  Files.delete(tempPath);
+} else {
+  IOUtils.deleteFilesIgnoringExceptions(tempPath);
+}
+  }
{code}

Is there any reason why we shouldn't just let the regular exception suppression 
be used here? I know it'd reverse the precedence, but at least you'd get the 
full picture (temp. file couldn't be deleted too). Isn't this a leftover 
pattern from before 1.7 days?


> OfflineSorter should use Directory API
> --
>
> Key: LUCENE-6829
> URL: https://issues.apache.org/jira/browse/LUCENE-6829
> Project: Lucene - Core
>  Issue Type: Improvement
>Reporter: Michael McCandless
>Assignee: Michael McCandless
> Fix For: Trunk, 5.4
>
> Attachments: LUCENE-6829.patch, LUCENE-6829.patch, LUCENE-6829.patch, 
> LUCENE-6829.patch
>
>
> I think this is a blocker for LUCENE-6825, because the block KD-tree makes 
> heavy use of OfflineSorter and we don't want to fill up tmp space ...
> This should be a straightforward cutover, but there are some challenges, e.g. 
> the test was failing because virus checker blocked deleting of files.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

-
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org