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:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]