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

Uwe Schindler edited comment on LUCENE-6989 at 2/23/16 10:03 AM:
-----------------------------------------------------------------

Hi,
I was able to reproduce the Hotspot bug and opened an OpenJDK issue about the 
following problem we have seen with build 105 of Java 9:
{noformat}
Caused by: java.lang.IncompatibleClassChangeError: Found class 
jdk.internal.ref.Cleaner, but interface was expected
        at 
org.apache.lucene.store.MMapDirectory.lambda$initUnmapHack$0(MMapDirectory.java:374)
        at java.security.AccessController.doPrivileged(Native Method)
        at 
org.apache.lucene.store.MMapDirectory.lambda$initUnmapHack$1(MMapDirectory.java:372)
{noformat}

The OpenJDK issue is: https://bugs.openjdk.java.net/browse/JDK-8150436

The issue only affects Java 9, it is not a problem with our code or the 
internal Cleaner. It can be reproduced with a simple Runnable interface and a 
bit of guardWithTest wrapping.


was (Author: thetaphi):
Hi,
I was able to reproduce the Hotspot bug and opened an OpenJDK issue about the 
following problem we have seen with build 105 of Java 9:
{noformat}
Caused by: java.lang.IncompatibleClassChangeError: Found class 
jdk.internal.ref.Cleaner, but interface was expected
        at 
org.apache.lucene.store.MMapDirectory.lambda$initUnmapHack$0(MMapDirectory.java:374)
        at java.security.AccessController.doPrivileged(Native Method)
        at 
org.apache.lucene.store.MMapDirectory.lambda$initUnmapHack$1(MMapDirectory.java:372)
{noformat}

Waiting for the final bug ID once Rory has reviewed it.
The issue only affects Java 9, it is not a problem with our code or the 
internal Cleaner. It can be reproduced with a simple Runnable interface and a 
bit of guardWithTest wrapping.

> 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
>              Labels: Java9
>             Fix For: master
>
>         Attachments: LUCENE-6989-disable5x.patch, 
> LUCENE-6989-disable5x.patch, LUCENE-6989-v2.patch, 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: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to