Uwe Schindler created LUCENE-6989:
-------------------------------------

             Summary: Implement MMapDirectory unmapping for coming Java 9 
changes
                 Key: LUCENE-6989
                 URL: https://issues.apache.org/jira/browse/LUCENE-6989
             Project: Lucene - Core
          Issue Type: Task
          Components: core/store
            Reporter: Uwe Schindler
            Assignee: Uwe Schindler
            Priority: Critical


Originally, the sun.misc.Cleaner interface was declared as "critical API" in 
[JEP 260|http://openjdk.java.net/jeps/260 ]

Unfortunately the decission was changed in favor of a oficially supported 
{{java.lang.ref.Cleaner}} API. A side effect of this change is to move all 
existing {{sun.misc.Cleaner}} APIs into a non-exported package. This causes our 
forceful unmapping to no longer work, because we can get the cleaner instance 
via reflection, but trying to invoke it will throw one of the new Jigsaw 
RuntimeException because it is completely inaccessible. This will make our 
forceful unmapping fail. There are also no changes in Garbage collector, the 
problem still exists.

For more information see this [mailing list 
thread|http://mail.openjdk.java.net/pipermail/core-libs-dev/2016-January/thread.html#38243].

This commit will likely be done, making our unmapping efforts no longer 
working. Alan Bateman is aware of this issue and will open a new issue at 
OpenJDK to allow forceful unmapping without using the now private 
sun.misc.Cleaner. The idea is to let the internal class sun.misc.Cleaner 
implement the Runable interface, so we can simply cast to runable and call the 
run() method to unmap. The code would then work. This will lead to minor 
changes in our unmapper in MMapDirectory: An instanceof check and casting if 
possible.

I opened this issue to keep track and implement the changes as soon as 
possible, so people will have working unmapping when java 9 comes out. Current 
Lucene versions will no longer work with Java 9.



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

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

Reply via email to