client-java
client-java copied to clipboard
`tikv-client-java:3.2.0` can not build GrpcSslContexts
Bug Report
1. Describe the bug
When I want to enable TLS, it reports a bug.
tikv-client-java:3.2.0 can not build GrpcSslContexts.
My PC configuration:
- Oracle JDK 1.8
- Ubuntu LTS 20
2. Minimal reproduce step (Required)
- choose v3.2.0
<dependency>
<groupId>org.tikv</groupId>
<artifactId>tikv-client-java</artifactId>
<version>3.2.0</version>
</dependency>
- setTLS enable
public class ClientTiKV {
public static void main(String[] args) {
// You MUST create a raw configuration if you are using RawKVClient.
TiConfiguration conf = TiConfiguration.createRawDefault("127.0.0.1:2379");
conf.setTlsEnable(true);
conf.setKeyCertChainFile("client.cert");
conf.setTrustCertCollectionFile("root.cert");
conf.setKeyFile("client.key");
TiSession session = TiSession.create(conf);
}
}
3. What did you see instead (Required)
SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.
May 09, 2022 9:29:14 PM org.tikv.shade.io.grpc.netty.GrpcSslContexts defaultSslProvider
INFO: Java 9 ALPN API unavailable (this may be normal)
May 09, 2022 9:29:14 PM org.tikv.shade.io.grpc.netty.GrpcSslContexts defaultSslProvider
INFO: netty-tcnative unavailable (this may be normal)
java.lang.IllegalArgumentException: Failed to load any of the given libraries: [netty_tcnative_linux_x86_64, netty_tcnative_linux_x86_64_fedora, netty_tcnative_x86_64, netty_tcnative]
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:104)
at org.tikv.shade.io.netty.handler.ssl.OpenSsl.loadTcNative(OpenSsl.java:590)
at org.tikv.shade.io.netty.handler.ssl.OpenSsl.<clinit>(OpenSsl.java:136)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.defaultSslProvider(GrpcSslContexts.java:230)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:146)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:95)
at org.tikv.common.util.ChannelFactory.getSslContextBuilder(ChannelFactory.java:119)
at org.tikv.common.util.ChannelFactory.<init>(ChannelFactory.java:72)
at org.tikv.common.TiSession.<init>(TiSession.java:130)
at org.tikv.common.TiSession.create(TiSession.java:230)
at ClientTiKV.main(ClientTiKV.java:16)
Suppressed: java.lang.UnsatisfiedLinkError: could not load a native library: org_tikv_shade_netty_tcnative_linux_x86_64
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:226)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:96)
... 10 more
Caused by: java.io.FileNotFoundException: META-INF/native/liborg_tikv_shade_netty_tcnative_linux_x86_64.so
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:175)
... 11 more
Suppressed: java.lang.UnsatisfiedLinkError: no org_tikv_shade_netty_tcnative_linux_x86_64 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.tikv.shade.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:351)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
... 11 more
Suppressed: java.lang.UnsatisfiedLinkError: no org_tikv_shade_netty_tcnative_linux_x86_64 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.tikv.shade.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader$1.run(NativeLibraryLoader.java:371)
at java.security.AccessController.doPrivileged(Native Method)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:363)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:341)
... 12 more
Suppressed: java.lang.UnsatisfiedLinkError: could not load a native library: org_tikv_shade_netty_tcnative_linux_x86_64_fedora
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:226)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:96)
... 10 more
Caused by: java.io.FileNotFoundException: META-INF/native/liborg_tikv_shade_netty_tcnative_linux_x86_64_fedora.so
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:175)
... 11 more
Suppressed: java.lang.UnsatisfiedLinkError: no org_tikv_shade_netty_tcnative_linux_x86_64_fedora in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.tikv.shade.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:351)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
... 11 more
Suppressed: java.lang.UnsatisfiedLinkError: no org_tikv_shade_netty_tcnative_linux_x86_64_fedora in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.tikv.shade.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader$1.run(NativeLibraryLoader.java:371)
at java.security.AccessController.doPrivileged(Native Method)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:363)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:341)
... 12 more
Suppressed: java.lang.UnsatisfiedLinkError: could not load a native library: org_tikv_shade_netty_tcnative_x86_64
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:226)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:96)
... 10 more
Caused by: java.io.FileNotFoundException: META-INF/native/liborg_tikv_shade_netty_tcnative_x86_64.so
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:175)
... 11 more
Suppressed: java.lang.UnsatisfiedLinkError: no org_tikv_shade_netty_tcnative_x86_64 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.tikv.shade.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:351)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
... 11 more
Suppressed: java.lang.UnsatisfiedLinkError: no org_tikv_shade_netty_tcnative_x86_64 in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.tikv.shade.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader$1.run(NativeLibraryLoader.java:371)
at java.security.AccessController.doPrivileged(Native Method)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:363)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:341)
... 12 more
Suppressed: java.lang.UnsatisfiedLinkError: could not load a native library: org_tikv_shade_netty_tcnative
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:226)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadFirstAvailable(NativeLibraryLoader.java:96)
... 10 more
Caused by: java.io.FileNotFoundException: META-INF/native/liborg_tikv_shade_netty_tcnative.so
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:175)
... 11 more
Suppressed: java.lang.UnsatisfiedLinkError: no org_tikv_shade_netty_tcnative in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.tikv.shade.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:351)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.load(NativeLibraryLoader.java:136)
... 11 more
Suppressed: java.lang.UnsatisfiedLinkError: no org_tikv_shade_netty_tcnative in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1864)
at java.lang.Runtime.loadLibrary0(Runtime.java:870)
at java.lang.System.loadLibrary(System.java:1122)
at org.tikv.shade.io.netty.util.internal.NativeLibraryUtil.loadLibrary(NativeLibraryUtil.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader$1.run(NativeLibraryLoader.java:371)
at java.security.AccessController.doPrivileged(Native Method)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibraryByHelper(NativeLibraryLoader.java:363)
at org.tikv.shade.io.netty.util.internal.NativeLibraryLoader.loadLibrary(NativeLibraryLoader.java:341)
... 12 more
May 09, 2022 9:29:14 PM org.tikv.shade.io.grpc.netty.GrpcSslContexts defaultSslProvider
INFO: Conscrypt not found (this may be normal)
java.lang.ClassNotFoundException: org.conscrypt.Conscrypt
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:264)
at org.tikv.shade.io.grpc.internal.ConscryptLoader.newProvider(ConscryptLoader.java:72)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts$ConscryptHolder.<clinit>(GrpcSslContexts.java:295)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.findJdkProvider(GrpcSslContexts.java:268)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.defaultSslProvider(GrpcSslContexts.java:234)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:146)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:95)
at org.tikv.common.util.ChannelFactory.getSslContextBuilder(ChannelFactory.java:119)
at org.tikv.common.util.ChannelFactory.<init>(ChannelFactory.java:72)
at org.tikv.common.TiSession.<init>(TiSession.java:130)
at org.tikv.common.TiSession.create(TiSession.java:230)
at ClientTiKV.main(ClientTiKV.java:16)
May 09, 2022 9:29:14 PM org.tikv.shade.io.grpc.netty.GrpcSslContexts defaultSslProvider
INFO: Jetty ALPN unavailable (this may be normal)
java.lang.ClassNotFoundException: org/eclipse/jetty/alpn/ALPN
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.tikv.shade.io.grpc.netty.JettyTlsUtil.isJettyAlpnConfigured(JettyTlsUtil.java:64)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.findJdkProvider(GrpcSslContexts.java:254)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.defaultSslProvider(GrpcSslContexts.java:234)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:146)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:95)
at org.tikv.common.util.ChannelFactory.getSslContextBuilder(ChannelFactory.java:119)
at org.tikv.common.util.ChannelFactory.<init>(ChannelFactory.java:72)
at org.tikv.common.TiSession.<init>(TiSession.java:130)
at org.tikv.common.TiSession.create(TiSession.java:230)
at ClientTiKV.main(ClientTiKV.java:16)
Exception in thread "main" java.lang.IllegalStateException: Could not find TLS ALPN provider; no working netty-tcnative, Conscrypt, or Jetty NPN/ALPN available
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.defaultSslProvider(GrpcSslContexts.java:246)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.configure(GrpcSslContexts.java:146)
at org.tikv.shade.io.grpc.netty.GrpcSslContexts.forClient(GrpcSslContexts.java:95)
at org.tikv.common.util.ChannelFactory.getSslContextBuilder(ChannelFactory.java:119)
at org.tikv.common.util.ChannelFactory.<init>(ChannelFactory.java:72)
at org.tikv.common.TiSession.<init>(TiSession.java:130)
at org.tikv.common.TiSession.create(TiSession.java:230)
at ClientTiKV.main(ClientTiKV.java:16)
Disconnected from the target VM, address: '127.0.0.1:39051', transport: 'socket'
Process finished with exit code 1
4. What did you expect to see? (Required)
no exception.
5. What are your Java Client and TiKV versions? (Required)
- Client Java: 3.2.0
- TiKV:6.0.0
When I change my JDK to other versions, such as Open JDK 1.8 or Oracle JDK 17, this problem never happens. So I think, maybe Oracle JDK 1.8 lacks some critical anything, like TLS ALPN provider and so on. When these lacking, io.netty needs a native dynamic library that was not shaded by maven. To solve it, I rename four dynamic libraries for clients to find them. #602
This issue is stale because it has been open 30 days with no activity.