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

Dawid Weiss commented on LUCENE-8415:
-------------------------------------

Ensuring {{testReadFileOpenForWrites}} works would require moving some 
bookkeeping to Directory classes (and IndexOutput implementations). A 
concurrent hash map of open outputs and an update on IndexOutput.close(), 
essentially.

We have a few options.

Make it a contractual requirement (then we have to implement this bookkeeping 
for true filesystems since they allow readers over a writer for the same 
process). Make this an assertion-mode only check (implement book keeping, but 
don't run it except for assertion-enabled runs). Finally, don't make any checks 
at all, but give the contractual liberty for Directory implementations to throw 
AccessDeniedException in {{openInput}} if a file is still open.

The offending directory implementations right now are:
{code}
- org.apache.lucene.store.TestTrackingDirectoryWrapper.testReadFileOpenForWrites
   [junit4]   - 
org.apache.lucene.store.TestMmapDirectory.testReadFileOpenForWrites
   [junit4]   - 
org.apache.lucene.store.TestSimpleFSDirectory.testReadFileOpenForWrites
   [junit4]   - 
org.apache.lucene.store.TestNRTCachingDirectory.testReadFileOpenForWrites
   [junit4]   - 
org.apache.lucene.store.TestFileSwitchDirectory.testReadFileOpenForWrites
   [junit4]   - 
org.apache.lucene.store.TestRAMDirectory.testReadFileOpenForWrites
   [junit4]   - 
org.apache.lucene.store.TestNIOFSDirectory.testReadFileOpenForWrites
   [junit4]   - org.apache.lucene.store.TestMultiMMap.testReadFileOpenForWrites
   [junit4]   - 
org.apache.lucene.store.TestFilterDirectory.testReadFileOpenForWrites
{code}

> Clean up Directory contracts (write-once, no reads-before-write-completed)
> --------------------------------------------------------------------------
>
>                 Key: LUCENE-8415
>                 URL: https://issues.apache.org/jira/browse/LUCENE-8415
>             Project: Lucene - Core
>          Issue Type: Improvement
>            Reporter: Dawid Weiss
>            Assignee: Dawid Weiss
>            Priority: Minor
>          Time Spent: 10m
>  Remaining Estimate: 0h
>
> Created a PR here for early review.
> https://github.com/apache/lucene-solr/pull/424
> I changed:
> * the wording in Directory documentation to be a bit more formalized about 
> what rules a Directory should obey (and users expect).
> * modified the test framework to verify the above in mock classes.
> Currently a number of Directory implementations fail the 
> {{testReadFileOpenForWrites}} test that I added, so I'll keep working on that.



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

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

Reply via email to