[ 
https://issues.apache.org/jira/browse/LUCENE-8663?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dawid Weiss updated LUCENE-8663:
--------------------------------
    Attachment: LUCENE-8663.patch

> NRTCachingDirectory.slowFileExists may open a file while it's inaccessible
> --------------------------------------------------------------------------
>
>                 Key: LUCENE-8663
>                 URL: https://issues.apache.org/jira/browse/LUCENE-8663
>             Project: Lucene - Core
>          Issue Type: Bug
>            Reporter: Dawid Weiss
>            Assignee: Dawid Weiss
>            Priority: Minor
>             Fix For: master (9.0)
>
>         Attachments: LUCENE-8663.patch
>
>
> This build:
> https://builds.apache.org/job/Lucene-Solr-NightlyTests-master/1761/consoleText
> failed with the following stack trace:
> {code}
> FAILED:  org.apache.lucene.util.TestOfflineSorter.testThreadSafety
> Error Message:
> Captured an uncaught exception in thread: Thread[id=2665, name=Thread-2493, 
> state=RUNNABLE, group=TGRP-TestOfflineSorter]
> Stack Trace:
> com.carrotsearch.randomizedtesting.UncaughtExceptionError: Captured an 
> uncaught exception in thread: Thread[id=2665, name=Thread-2493, 
> state=RUNNABLE, group=TGRP-TestOfflineSorter]
> Caused by: java.lang.RuntimeException: java.nio.file.AccessDeniedException: 
> Can't open a file still open for writing: unsorted_tmp_0.tmp
>         at __randomizedtesting.SeedInfo.seed([972EEC94E272C842]:0)
>         at 
> org.apache.lucene.util.TestOfflineSorter$2.run(TestOfflineSorter.java:271)
> Caused by: java.nio.file.AccessDeniedException: Can't open a file still open 
> for writing: unsorted_tmp_0.tmp
>         at 
> org.apache.lucene.store.ByteBuffersDirectory$FileEntry.openInput(ByteBuffersDirectory.java:250)
>         at 
> org.apache.lucene.store.ByteBuffersDirectory.openInput(ByteBuffersDirectory.java:222)
>         at 
> org.apache.lucene.store.NRTCachingDirectory.slowFileExists(NRTCachingDirectory.java:292)
>         at 
> org.apache.lucene.store.NRTCachingDirectory.createTempOutput(NRTCachingDirectory.java:266)
>         at 
> org.apache.lucene.store.MockDirectoryWrapper.createTempOutput(MockDirectoryWrapper.java:697)
>         at 
> org.apache.lucene.util.TestOfflineSorter.checkSort(TestOfflineSorter.java:183)
>         at 
> org.apache.lucene.util.TestOfflineSorter.access$100(TestOfflineSorter.java:49)
>         at 
> org.apache.lucene.util.TestOfflineSorter$2.run(TestOfflineSorter.java:267)
> {code}
> The problem in slowFileExists is that it probes for file existence by trying 
> to open it in a directory. We don't allow opening files that are still open 
> by another thread (for writing), hence the exception thrown is 
> AccessDeniedException. 
> I couldn't reproduce the problem with the same seed. Takes some luck to hit 
> the right scenario in a multi-threaded run.
> The contract for {{Directory.fileLength}} is less strict so a straightforward 
> patch is to use that instead. 



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

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

Reply via email to