[
https://issues.apache.org/jira/browse/LUCENE-6989?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15147695#comment-15147695
]
Uwe Schindler edited comment on LUCENE-6989 at 2/15/16 6:52 PM:
----------------------------------------------------------------
Today, the new build 105 of Java 9 came out.
I modified the patch a bit to do correct interface casting (to Runnable),
because it must be "explicit".
Otherwise I added a new String constant {{UNMAP_NOT_SUPPORTED_REASON}} with the
reason message why unmapping is not supported on the platform. If
{{UNMAP_SUPPORTED}} is false, this will contain the message including
instructions to enable it (e.g., which permissions must be given to the
lucene-core.jar file). This message is also throws on IllegalArgument why
somebody tries to enable unmapping.
I will commit this now to trunk. I will not backport to 5.x for now, because
this relies on Java 8 features.
If we want to add support for Java 9 in older Java versions (Lucene 5), we have
to rewrite parts of the code. But I don't think that's needed, because it will
take a while until Java 9 comes out and we need more time for testing. People
who want to use Java 9 in the future once it is out, should use Lucene 6 or
don't use MMapDirectory.
was (Author: thetaphi):
Today, the new build 105 of Java 9 came out.
I modified the patch a bit to do correct interface casting (to Runnable),
because it must be "explicit".
Otherwise I added a new String with the reason message why unmapping is not
supported on the platform. If {{UNMAP_SUPPORTED}} is false, this will contain
the message including instructions to enable it (e.g., which permissions must
be given to the lucene-core.jar file.
I will commit this now to trunk. I will not backport to 5.x for now, because
this relies on Java 8 features.
If we want to add support for Java 9 in older Java versions (Lucene 5), we have
to rewrite parts of the code. But I don't think that's needed, because it will
take a while until Java 9 comes out and we need more time for testing. People
who want to use Java 9 in the future once it is out, should use Lucene 6 or
don't use MMapDirectory.
> 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
> Attachments: LUCENE-6989.patch, LUCENE-6989.patch, LUCENE-6989.patch,
> LUCENE-6989.patch
>
>
> 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]