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]