Simon Willnauer created LUCENE-9467:
---------------------------------------

             Summary: TestOfflineSorter fails with combination of NRTCaching 
and ByteBuffersDirectory
                 Key: LUCENE-9467
                 URL: https://issues.apache.org/jira/browse/LUCENE-9467
             Project: Lucene - Core
          Issue Type: Bug
    Affects Versions: 8.7, 8.6.1
            Reporter: Simon Willnauer


TestOfflineSorter#testThreadSafety fails on 8.x since NRTCachingDirectory uses 
the delegates openInput method to slowly check if the file exists. This is not 
present anymore on main line. The problem is that ByteBuffersDirectory fires an 
AccessDeniedException when the file is not fully written yet. 
{noformat}
00:27:31    [junit4] Suite: org.apache.lucene.util.TestOfflineSorter
00:27:31    [junit4]   2> KMN 14, 2020 6:27:30 AM 
com.carrotsearch.randomizedtesting.RandomizedRunner$QueueUncaughtExceptionsHandler
 uncaughtException
00:27:31    [junit4]   2> WARNING: Uncaught exception in thread: 
Thread[Thread-7318,5,TGRP-TestOfflineSorter]
00:27:31    [junit4]   2> java.lang.RuntimeException: 
java.nio.file.AccessDeniedException: Can't open a file still open for writing: 
unsorted_tmp_6.tmp
00:27:31    [junit4]   2>       at 
__randomizedtesting.SeedInfo.seed([B1129484013118F7]:0)
00:27:31    [junit4]   2>       at 
org.apache.lucene.util.TestOfflineSorter$2.run(TestOfflineSorter.java:272)
00:27:31    [junit4]   2> Caused by: java.nio.file.AccessDeniedException: Can't 
open a file still open for writing: unsorted_tmp_6.tmp
00:27:31    [junit4]   2>       at 
org.apache.lucene.store.ByteBuffersDirectory$FileEntry.openInput(ByteBuffersDirectory.java:251)
00:27:31    [junit4]   2>       at 
org.apache.lucene.store.ByteBuffersDirectory.openInput(ByteBuffersDirectory.java:218)
00:27:31    [junit4]   2>       at 
org.apache.lucene.store.FileSwitchDirectory.openInput(FileSwitchDirectory.java:233)
00:27:31    [junit4]   2>       at 
org.apache.lucene.store.NRTCachingDirectory.slowFileExists(NRTCachingDirectory.java:280)
00:27:31    [junit4]   2>       at 
org.apache.lucene.store.NRTCachingDirectory.createTempOutput(NRTCachingDirectory.java:254)
00:27:31    [junit4]   2>       at 
org.apache.lucene.store.MockDirectoryWrapper.createTempOutput(MockDirectoryWrapper.java:707)
00:27:31    [junit4]   2>       at 
org.apache.lucene.util.TestOfflineSorter.checkSort(TestOfflineSorter.java:184)
00:27:31    [junit4]   2>       at 
org.apache.lucene.util.TestOfflineSorter.access$100(TestOfflineSorter.java:48)
00:27:31    [junit4]   2>       at 
org.apache.lucene.util.TestOfflineSorter$2.run(TestOfflineSorter.java:268)
00:27:31    [junit4]   2> 
00:27:31    [junit4]   2> NOTE: reproduce with: ant test  
-Dtestcase=TestOfflineSorter -Dtests.method=testThreadSafety 
-Dtests.seed=B1129484013118F7 -Dtests.nightly=true -Dtests.slow=true 
-Dtests.badapples=true -Dtests.locale=cgg-UG -Dtests.timezone=Asia/Dacca 
-Dtests.asserts=true -Dtests.file.encoding=UTF8
00:27:31    [junit4] ERROR   0.04s J3 | TestOfflineSorter.testThreadSafety <<<
00:27:31    [junit4]    > Throwable #1: java.lang.AssertionError
00:27:31    [junit4]    >       at 
org.apache.lucene.util.TestOfflineSorter.testThreadSafety(TestOfflineSorter.java:283)
00:27:31    [junit4]    >       at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
00:27:31    [junit4]    >       at 
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
00:27:31    [junit4]    >       at 
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
00:27:31    [junit4]    >       at 
java.base/java.lang.reflect.Method.invoke(Method.java:566)
00:27:31    [junit4]    >       at 
java.base/java.lang.Thread.run(Thread.java:834)Throwable #2: 
com.carrotsearch.randomizedtesting.UncaughtExceptionError: Captured an uncaught 
exception in thread: Thread[id=7993, name=Thread-7318, state=RUNNABLE, 
group=TGRP-TestOfflineSorter]
00:27:31    [junit4]    > Caused by: java.lang.RuntimeException: 
java.nio.file.AccessDeniedException: Can't open a file still open for writing: 
unsorted_tmp_6.tmp
00:27:31    [junit4]    >       at 
__randomizedtesting.SeedInfo.seed([B1129484013118F7]:0)
00:27:31    [junit4]    >       at 
org.apache.lucene.util.TestOfflineSorter$2.run(TestOfflineSorter.java:272)
00:27:31    [junit4]    > Caused by: java.nio.file.AccessDeniedException: Can't 
open a file still open for writing: unsorted_tmp_6.tmp
00:27:31    [junit4]    >       at 
org.apache.lucene.store.ByteBuffersDirectory$FileEntry.openInput(ByteBuffersDirectory.java:251)
00:27:31    [junit4]    >       at 
org.apache.lucene.store.ByteBuffersDirectory.openInput(ByteBuffersDirectory.java:218)
00:27:31    [junit4]    >       at 
org.apache.lucene.store.FileSwitchDirectory.openInput(FileSwitchDirectory.java:233)
00:27:31    [junit4]    >       at 
org.apache.lucene.store.NRTCachingDirectory.slowFileExists(NRTCachingDirectory.java:280)
00:27:31    [junit4]    >       at 
org.apache.lucene.store.NRTCachingDirectory.createTempOutput(NRTCachingDirectory.java:254)
00:27:31    [junit4]    >       at 
org.apache.lucene.store.MockDirectoryWrapper.createTempOutput(MockDirectoryWrapper.java:707)
00:27:31    [junit4]    >       at 
org.apache.lucene.util.TestOfflineSorter.checkSort(TestOfflineSorter.java:184)
00:27:31    [junit4]    >       at 
org.apache.lucene.util.TestOfflineSorter.access$100(TestOfflineSorter.java:48)
00:27:31    [junit4]    >       at 
org.apache.lucene.util.TestOfflineSorter$2.run(TestOfflineSorter.java:268)
{noformat}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to