Dear Hadoop Community Support Team,
In order to resolve the issue we were facing with JNI call for
jniEnv->FindClass(<relative_class_path>/<class_name>) for latest HDFS(Hadoop)
version 3.4.0, we excluded the manifest signature files by adding the following
lines to plugin configuration in pom.xml file of the uber-jar.
<exclude>META-INF/*.SF</exclude>
<exclude>META-INF/*.DSA</exclude>
<exclude>META-INF/*.RSA</exclude>
Note: we did not face issue in JNI call for earlier versions of HDFS (we are
upgrading from HDFS 3.3.6 to 3.4.0).
Regards
Sonal Sharma
From: Sonal Sharma A
Sent: Monday, July 22, 2024 7:31 PM
To: [email protected]
Subject: Issue with JNI call for
jniEnv->FindClass(<relative_class_path>/<class_name>) in our application jar
having HDFS client v3.4.0 bundled inside it.
Dear Hadoop Community Support Team,
I am writing to report an issue we are experiencing with JNI call for
jniEnv->FindClass(<relative_class_path>/<class_name>) in our application jar
having HDFS client v3.4.0 bundled inside it. This issue does not occur with
application jar bundled with HDFS client version 3.3.6 .
In other words we are facing issue in JNI call after upgrade of HDFS client.
There is no application code change reagarding the way class path, JNI
environment, JNI Options, JNI args are being initialized before calling this
method.
Only change is to upgrade from hdfs-client v3.3.6 to v3.4.0
This JNI call is from C++ code,
jniEnv->FindClass(<relative_class_path>/<class_name>).
Here are the details of the issue:
hdfs client library v3.4.0
OS : SLES 15 SP4
JNI Call: jniEnv->FindClass(<relative_class_path>/<class_name>)
relative_class_path has forward slash(/) in between directories and is not
absolute path. The class_name is the application specific class inside the jar.
We are getting the following Error Message when jniEnv->FindClass() method is
called:
_dl_catch_error () from ../libc.so.6
in _dl_catch_error () from ..//libc.so.6
in _dlerror_run () from ..//libdl.so.2
in dlsym () from ..//libdl.so.2
in NativeLookup::lookup_style(methodHandle const&, char*, char const*, int,
bool, bool&, Thread*) () from
../java/jdk/lib/server/libjvm.so
in NativeLookup::lookup_base(methodHandle const&, bool&, Thread*) ()
from /../java/jdk/lib/server/libjvm.so
in NativeLookup::lookup(methodHandle const&, bool&, Thread*) ()
from /../java/jdk/lib/server/libjvm.so
in InterpreterRuntime::prepare_native_call(JavaThread*, Method*) ()
from /../java/jdk/lib/server/libjvm.so
We would greatly appreciate any insights or solutions you can provide to help
resolve this issue.
If you need any further information or details, please do not hesitate to ask.
Regards
Sonal Sharma