zacharymorn commented on pull request #2052: URL: https://github.com/apache/lucene-solr/pull/2052#issuecomment-745039717
> Alas, `gradlew precommit` from the command-line on Linux box is still angry for me: > > ``` > > Task :lucene:misc:compileJava > /l/trunk/lucene/misc/src/java/org/apache/lucene/misc/store/DirectIODirectory.java:163: warning: ExtendedOpenOption is internal proprietary API and may be removed in a future release > com.sun.nio.file.ExtendedOpenOption.DIRECT); > ^ > /l/trunk/lucene/misc/src/java/org/apache/lucene/misc/store/DirectIODirectory.java:282: warning: ExtendedOpenOption is internal proprietary API and may be removed in a future release > channel = FileChannel.open(path, StandardOpenOption.READ, com.sun.nio.file.ExtendedOpenOption.DIRECT); > ^ > error: warnings found and -Werror specified > ``` > > Oh I see -- you are using `@SuppressForbidden` (which is indeed necessary, since we are using an API that we otherwise forbid!), but you must also add `@SuppressWarnings("sunapi")` to suppress `javac` warnings. Lots of suppression happening here!! Hmm, but when I tried adding those two lines locally, `gradlew precommit` still fails, hrmph. > > This might be a JDK difference -- I'm using JDK 15. > > Hmm, a little more research uncovers [JDK-6476630](https://bugs.openjdk.java.net/browse/JDK-6476630), which makes it sound like it is not possible to suppress this particular warning. Now I'm not sure what to do! Need @uschindler help again! Oh wow this is interesting! Yes when I initially started to use `ExtendedOpenOption.DIRECT` I got build failure from `forbiddenApisMain`. But after I put in `@SuppressForbidden` the failure went away, so I didn't think twice about it. I did deal with this type of error before from another project a long time ago, and believed back then using ` @SuppressWarnings("sunapi")` with some flags like `-XDignore.symbol.file` or `-XDenableSunApiLintControl` worked (couldn't remember which one exactly now). However this seems to be something no longer supported in the latest JDK now as I'm also having difficulty getting them to work. For the few JDK versions I tried, the one that works on my mac without `@SuppressWarnings("sunapi")` is JDK 11 ``` openjdk 11.0.9 2020-10-20 OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.9+11) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.9+11, mixed mode) ``` But as soon as I moved to JDK 12 below, that error also started to show up ``` openjdk 12.0.2 2019-07-16 OpenJDK Runtime Environment AdoptOpenJDK (build 12.0.2+10) OpenJDK 64-Bit Server VM AdoptOpenJDK (build 12.0.2+10, mixed mode) ``` ------ One interesting thing I noticed after playing with a few experiments, is that the following plain vanilla java program that exercises `ExtendedOpenOption.DIRECT` doesn't actually output any warning for sun api use with the JDK 12 above, but does output other "regular" warnings such as `unchecked`, when compiled with `javac src/com/company/Main.java -Xlint:all`. ```java package com.company; import java.io.IOException; import java.nio.channels.Channel; import java.nio.channels.FileChannel; import java.nio.file.Path; import java.nio.file.StandardOpenOption; import java.util.ArrayList; import java.util.List; public class Main { @SuppressWarnings({"rawtypes", "unchecked"}) public static void main(String[] args) throws IOException { List words = new ArrayList(); words.add("hello"); Channel channel = FileChannel.open(Path.of("blablabla"), StandardOpenOption.CREATE, StandardOpenOption.WRITE, StandardOpenOption.READ, com.sun.nio.file.ExtendedOpenOption.DIRECT); System.out.println(channel.isOpen()); } } ``` So I'm a bit confused at this point and need to do more research on this. ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: us...@infra.apache.org --------------------------------------------------------------------- To unsubscribe, e-mail: issues-unsubscr...@lucene.apache.org For additional commands, e-mail: issues-h...@lucene.apache.org