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

Christian Brüssow commented on KARAF-6439:
------------------------------------------

I have an update for Karaf 4.2.6 and Java 11 (J9 variant) on AIX 7.2:

When commenting out the line "set.JDK_JAVA_OPTIONS=..." in the service's 
wrapper configuration file, the service starts, but the application is not 
stable. The idea to disable this line came into my mind, when looking into the 
wrapper log, which contains the following entry when failing to start the 
service:
{noformat}
STATUS | wrapper | 2020/06/25 08:25:41 | --> Wrapper Started as Daemon
STATUS | wrapper | 2020/06/25 08:25:41 | Launching a JVM...
INFO | jvm 1 | 2020/06/25 08:25:41 | NOTE: Picked up JDK_JAVA_OPTIONS: 
--add-reads=java.xml=java.logging 
--add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED 
--patch-mod
ule java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.6.jar 
--patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.6.jar 
--add-opens java.base/java.security=ALL-UNNAMED --
add-opens java.base/java.net=ALL-UNNAMED --add-opens 
java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED 
--add-opens java.naming/javax.naming.spi=ALL-UNNAMED --add-opens jav
a.rmi/sun.rmi.transport.tcp=ALL-UNNAMED 
--add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED 
--add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED 
--add-exports=java.base/sun.net.
www.protocol.jar=ALL-UNNAMED 
--add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED 
--add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
INFO | jvm 1 | 2020/06/25 08:25:41 | NOTE: Picked up JDK_JAVA_OPTIONS: 
--add-reads=java.xml=java.logging 
--add-exports=java.base/org.apache.karaf.specs.locator=java.xml,ALL-UNNAMED 
--patch-mod
ule java.base=lib/endorsed/org.apache.karaf.specs.locator-4.2.6.jar 
--patch-module java.xml=lib/endorsed/org.apache.karaf.specs.java.xml-4.2.6.jar 
--add-opens java.base/java.security=ALL-UNNAMED --
add-opens java.base/java.net=ALL-UNNAMED --add-opens 
java.base/java.lang=ALL-UNNAMED --add-opens java.base/java.util=ALL-UNNAMED 
--add-opens java.naming/javax.naming.spi=ALL-UNNAMED --add-opens jav
a.rmi/sun.rmi.transport.tcp=ALL-UNNAMED 
--add-exports=java.base/sun.net.www.protocol.http=ALL-UNNAMED 
--add-exports=java.base/sun.net.www.protocol.https=ALL-UNNAMED 
--add-exports=java.base/sun.net.
www.protocol.jar=ALL-UNNAMED 
--add-exports=jdk.xml.dom/org.w3c.dom.html=ALL-UNNAMED 
--add-exports=jdk.naming.rmi/com.sun.jndi.url.rmi=ALL-UNNAMED
ERROR | wrapper | 2020/06/25 08:25:42 | JVM exited while loading the 
application.
INFO | jvm 1 | 2020/06/25 08:25:42 | Exception in thread "main" 
java/lang/ExceptionInInitializerError
INFO | jvm 1 | 2020/06/25 08:25:42 | at java/lang/J9VMInternals.ensureError 
(java.base@9/Unknown Source:4294967295)
INFO | jvm 1 | 2020/06/25 08:25:42 | at 
java/lang/J9VMInternals.recordInitializationFailure (java.base@9/Unknown 
Source:4294967295)
INFO | jvm 1 | 2020/06/25 08:25:42 | at 
java/lang/ClassLoader.initializeClassLoaders (java.base@9/Unknown 
Source:4294967295)
INFO | jvm 1 | 2020/06/25 08:25:42 | at java/lang/Thread.initialize 
(java.base@9/Unknown Source:4294967295)
INFO | jvm 1 | 2020/06/25 08:25:42 | at java/lang/Thread.<init> 
(java.base@9/Unknown Source:4294967295)
INFO | jvm 1 | 2020/06/25 08:25:42 | java/lang/RuntimeException: java.base 
specified more than once to --patch-module
INFO | jvm 1 | 2020/06/25 08:25:42 | at 
jdk/internal/module/ModuleBootstrap.fail (java.base@9/Unknown Source:4294967295)
INFO | jvm 1 | 2020/06/25 08:25:42 | at 
jdk/internal/module/ModuleBootstrap.decode (java.base@9/Unknown 
Source:4294967295)
INFO | jvm 1 | 2020/06/25 08:25:42 | at 
jdk/internal/module/ModuleBootstrap.initModulePatcher (java.base@9/Unknown 
Source:4294967295)
INFO | jvm 1 | 2020/06/25 08:25:42 | at 
jdk/internal/module/ModuleBootstrap.<clinit> (java.base@9/Unknown 
Source:4294967295)
INFO | jvm 1 | 2020/06/25 08:25:42 | at 
java/lang/ClassLoader.initializeClassLoaders (java.base@9/Unknown 
Source:4294967295)
INFO | jvm 1 | 2020/06/25 08:25:42 | at java/lang/Thread.initialize 
(java.base@9/Unknown Source:4294967295)
INFO | jvm 1 | 2020/06/25 08:25:42 | at java/lang/Thread.<init> 
(java.base@9/Unknown Source:4294967295){noformat}
The entry "*NOTE: Picked up JDK_JAVA_OPTIONS: ..." comes twice on AIX*, but 
only once on Linux (Intel x64). For AIX and Linux the wrapper configuration was 
created the same. The file also lokks the same for both here. The 
JDK_JAVA_OPTIONS is only set once in the configuration.

The environment also does not contain any JDK_JAVA_OPTIONS settings, have 
double checked this. No other file in karaf/bin and karaf/etc than the wrapper 
configuration contains a line with JDK_JAVA_OPTIONS in it.

Commenting the setting in the wrapper configuration, the wrapper log looks like 
this:
{noformat}
STATUS | wrapper | 2020/06/25 12:41:49 | Launching a JVM...
INFO | jvm 1 | 2020/06/25 12:41:51 | Wrapper (Version 3.2.3) 
http://wrapper.tanukisoftware.org
INFO | jvm 1 | 2020/06/25 12:41:51 | Copyright 1999-2006 Tanuki Software, Inc. 
All Rights Reserved.
INFO | jvm 1 | 2020/06/25 12:41:51 |
INFO | jvm 1 | 2020/06/25 12:42:08 | WARNING: An illegal reflective access 
operation has occurred
INFO | jvm 1 | 2020/06/25 12:42:08 | WARNING: Illegal reflective access by 
org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender
 
(file:/data/agent/karaf/system/org/apache/felix/org.apache.felix.framework/5.6.12/org.apache.felix.framework-5.6.12.jar)
 to method java.net.URLClassLoader.addURL(java.net.URL)
INFO | jvm 1 | 2020/06/25 12:42:08 | WARNING: Please consider reporting this to 
the maintainers of 
org.apache.felix.framework.ext.ClassPathExtenderFactory$DefaultClassLoaderExtender
INFO | jvm 1 | 2020/06/25 12:42:08 | WARNING: Use --illegal-access=warn to 
enable warnings of further illegal reflective access operations
INFO | jvm 1 | 2020/06/25 12:42:08 | WARNING: All illegal access operations 
will be denied in a future release{noformat}
>From the commandline used to start the application one can see, the parameters 
>set in JDK_JAVA_OPTIONS are missing - as expected. It looks like the wrapper 
>then starts the JVM similar to the start-script.
{noformat}
root 18546960 20251024 10 12:41:49 - 1:15 
/data/testapp/agent_testappAgt/karaf/../jre/bin/java 
-Dkaraf.instances=/data/testapp/agent_testappAgt/karaf/instances 
-Dkaraf.home=/data/testapp/agent_testappAgt/karaf 
-Dkaraf.base=/data/testapp/agent_testappAgt/karaf 
-Dkaraf.data=/data/testapp/agent_testappAgt/karaf/data 
-Dkaraf.etc=/data/testapp/agent_testappAgt/karaf/etc 
-Dkaraf.log=/data/testapp/agent_testappAgt/karaf/data/log 
-Dkaraf.restart.jvm.supported=true 
-Djava.io.tmpdir=/data/testapp/agent_testappAgt/karaf/data/tmp 
-Djava.util.logging.config.file=/data/testapp/agent_testappAgt/karaf/etc/java.util.logging.properties
 -Dcom.sun.management.jmxremote -Dkaraf.startLocalConsole=false 
-Dkaraf.startRemoteShell=true -Xmx512m 
-Djava.library.path=/data/testapp/agent_testappAgt/karaf/lib/wrapper/ 
-classpath 
/data/testapp/agent_testappAgt/karaf/lib/boot/org.apache.karaf.diagnostic.boot-4.2.6.jar:/data/testapp/agent_testappAgt/karaf/lib/boot/org.apache.karaf.jaas.boot-4.2.6.jar:/data/testapp/agent_testappAgt/karaf/lib/boot/org.apache.karaf.main-4.2.6.jar:/data/testapp/agent_testappAgt/karaf/lib/boot/org.apache.karaf.specs.activator-4.2.6.jar:/data/testapp/agent_testappAgt/karaf/lib/boot/org.osgi.core-6.0.0.jar:/data/testapp/agent_testappAgt/karaf/lib/jdk9plus/istack-commons-runtime-3.0.8.jar:/data/testapp/agent_testappAgt/karaf/lib/jdk9plus/jakarta.xml.bind-api-2.3.2.jar:/data/testapp/agent_testappAgt/karaf/lib/jdk9plus/javax.activation-1.2.0.jar:/data/testapp/agent_testappAgt/karaf/lib/jdk9plus/javax.annotation-api-1.3.jar:/data/testapp/agent_testappAgt/karaf/lib/jdk9plus/jaxb-runtime-2.3.2.jar:/data/testapp/agent_testappAgt/karaf/lib/jdk9plus/txw2-2.3.2.jar:/data/testapp/agent_testappAgt/karaf/lib/wrapper/karaf-wrapper-main.jar:/data/testapp/agent_testappAgt/karaf/lib/wrapper/karaf-wrapper.jar
 -Dwrapper.key=YNKB3ZdhoS40QxGR -Dwrapper.port=32000 
-Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 
-Dwrapper.pid=20251024 -Dwrapper.version=3.2.3 -Dwrapper.native_library=wrapper 
-Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 
org.apache.karaf.wrapper.internal.service.Main
 root 20251024 1 0 12:41:48 - 0:00 
/data/testapp/agent_testappAgt/karaf/bin/testapp_testappAgt-wrapper 
/data/testapp/agent_testappAgt/karaf/etc/testapp_testappAgt-wrapper.conf 
wrapper.syslog.ident=testapp_testappAgt 
wrapper.pidfile=/data/testapp/agent_testappAgt/karaf/testapp_testappAgt.wrapper.pid
 wrapper.daemonize=TRUE{noformat}

And Linux, with the JDK_JAVA_OPTIONS set in the wrapper configuration file:
{noformat}
root 1228 1 0 10:32 ? 00:00:07 
/opt/testapp/Agent/karaf/bin/testapp_Server-Agent-wrapper 
/opt/testapp/Agent/karaf/etc/testapp_Server-Agent-wrapper.conf 
wrapper.syslog.ident=testapp_Server-Agent 
wrapper.pidfile=/opt/testapp/Agent/karaf/testapp_Server-Agent.wrapper.pid 
wrapper.daemonize=TRUE wrapper.lockfile=/var/lock/subsys/testapp_Server-Agent
root 1246 1228 2 10:32 ? 00:04:23 /opt/testapp/Agent/karaf/../jre/bin/java 
-Dkaraf.instances=/opt/testapp/Agent/karaf/instances 
-Dkaraf.home=/opt/testapp/Agent/karaf -Dkaraf.base=/opt/testapp/Agent/karaf 
-Dkaraf.data=/opt/testapp/Agent/karaf/data 
-Dkaraf.etc=/opt/testapp/Agent/karaf/etc 
-Dkaraf.log=/opt/testapp/Agent/karaf/data/log 
-Dkaraf.restart.jvm.supported=true 
-Djava.io.tmpdir=/opt/testapp/Agent/karaf/data/tmp 
-Djava.util.logging.config.file=/opt/testapp/Agent/karaf/etc/java.util.logging.properties
 -Dcom.sun.management.jmxremote -Dkaraf.startLocalConsole=false 
-Dkaraf.startRemoteShell=true -Xmx512m 
-Djava.library.path=/opt/testapp/Agent/karaf/lib/wrapper/ -classpath 
/opt/testapp/Agent/karaf/lib/boot/org.apache.karaf.diagnostic.boot-4.2.6.jar:/opt/testapp/Agent/karaf/lib/boot/org.osgi.core-6.0.0.jar:/opt/testapp/Agent/karaf/lib/boot/org.apache.karaf.jaas.boot-4.2.6.jar:/opt/testapp/Agent/karaf/lib/boot/org.apache.karaf.specs.activator-4.2.6.jar:/opt/testapp/Agent/karaf/lib/boot/org.apache.karaf.main-4.2.6.jar:/opt/testapp/Agent/karaf/lib/jdk9plus/istack-commons-runtime-3.0.8.jar:/opt/testapp/Agent/karaf/lib/jdk9plus/javax.annotation-api-1.3.jar:/opt/testapp/Agent/karaf/lib/jdk9plus/jaxb-runtime-2.3.2.jar:/opt/testapp/Agent/karaf/lib/jdk9plus/javax.activation-1.2.0.jar:/opt/testapp/Agent/karaf/lib/jdk9plus/jakarta.xml.bind-api-2.3.2.jar:/opt/testapp/Agent/karaf/lib/jdk9plus/txw2-2.3.2.jar:/opt/testapp/Agent/karaf/lib/wrapper/karaf-wrapper.jar:/opt/testapp/Agent/karaf/lib/wrapper/karaf-wrapper-main.jar
 -Dwrapper.key=AEt0nt4XEv0s7n1G -Dwrapper.port=32000 
-Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.pid=1228 
-Dwrapper.version=3.2.3 -Dwrapper.native_library=wrapper -Dwrapper.service=TRUE 
-Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 
org.apache.karaf.wrapper.internal.service.Main{noformat}
The result looks more or less identical for both.

 

So my workaround is to remove the JDK_JAVA_OPTIONS line from the wrapper 
configuration when on AIX with Java 11. Although I have no idea what is the 
reason the setting is found used twice in a row.


For completeness here the java -version output on both platforms:

AIX 7.2:
{noformat}
./java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.2+9)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.12.1, JRE 11 AIX ppc64-64-Bit 
Compressed References 20190204_121 (JIT enabled, AOT enabled)
OpenJ9 - 90dd8cb
OMR - d2f4534
JCL - 289c70b based on jdk-11.0.2+9){noformat}

Linux:
{noformat}
./java -version
openjdk version "11.0.2" 2019-01-15
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.2+9)
Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.12.1, JRE 11 Linux amd64-64-Bit 
Compressed References 20190204_127 (JIT enabled, AOT enabled)
OpenJ9 - 90dd8cb40
OMR - d2f4534b
JCL - 289c70b6844 based on jdk-11.0.2+9){noformat}
 

> Service fails to start under AIX with OpenJDK J9 Java 11: --patch-module error
> ------------------------------------------------------------------------------
>
>                 Key: KARAF-6439
>                 URL: https://issues.apache.org/jira/browse/KARAF-6439
>             Project: Karaf
>          Issue Type: Bug
>          Components: karaf
>    Affects Versions: 4.2.3
>         Environment: *OS:* IBM AIX 7.2
> *Java:* openjdk version "11.0.4" 2019-07-16
> OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.4+11)
> Eclipse OpenJ9 VM AdoptOpenJDK (build openj9-0.15.1, JRE 11 AIX ppc64-64-Bit 
> Compressed References 20190717_292 (JIT enabled, AOT enabled)
> OpenJ9 - 0f66c64
> OMR - ec782f2
> JCL - fa49279 based on jdk-11.0.4+11)
>            Reporter: Christian Brüssow
>            Assignee: Freeman Yue Fang
>            Priority: Major
>         Attachments: NN_MyAgnet1-wrapper.conf, java-version.out, wrapper.log
>
>
> Under AIX 7.2 I have used the service wrapper. It creates the correct entry 
> in /etc/inittab and also creates a wrapper.conf that looks fine (see 
> attachement). Here the entry from the inittab:
> {quote}{{NN_MyAgent1:2:once:/data/MyService/karaf/bin/NN_MyAgent1-service 
> start}}
> {quote}
> Starting karaf via the start-script from karaf/bin/ works as expected.
> But when starting karaf via the service wrapper, the start fails with the 
> following error shown in the wrapper.log (loglevel DEBUG):
> {quote}{{DEBUG  | wrapper  | 2019/09/30 11:30:38 | Signal trapped.  
> Details:DEBUG  | wrapper  | 2019/09/30 11:30:38 | Signal trapped.  
> Details:DEBUG  | wrapper  | 2019/09/30 11:30:38 |   signal number=20 
> (SIGCHLD), source="unknown"DEBUG  | wrapper  | 2019/09/30 11:30:38 | Received 
> SIGCHLD, checking JVM process status.DEBUG  | wrapper  | 2019/09/30 11:30:38 
> | JVM process exited with a code of 1, setting the wrapper exit code to 
> 1.ERROR  | wrapper  | 2019/09/30 11:30:38 | JVM exited while loading the 
> application.INFO   | jvm 1    | 2019/09/30 11:30:38 | Exception in thread 
> "main" java/lang/ExceptionInInitializerErrorINFO   | jvm 1    | 2019/09/30 
> 11:30:38 | at java/lang/J9VMInternals.ensureError (java.base@9/Unknown 
> Source:4294967295)INFO   | jvm 1    | 2019/09/30 11:30:38 | at 
> java/lang/J9VMInternals.recordInitializationFailure (java.base@9/Unknown 
> Source:4294967295)INFO   | jvm 1    | 2019/09/30 11:30:38 | at 
> java/lang/ClassLoader.initializeClassLoaders (java.base@9/Unknown 
> Source:4294967295)INFO   | jvm 1    | 2019/09/30 11:30:38 | at 
> java/lang/Thread.initialize (java.base@9/Unknown Source:4294967295)INFO   | 
> jvm 1    | 2019/09/30 11:30:38 | at java/lang/Thread.<init> 
> (java.base@9/Unknown Source:4294967295)INFO   | jvm 1    | 2019/09/30 
> 11:30:38 | java/lang/RuntimeException: java.base specified more than once to 
> --patch-moduleINFO   | jvm 1    | 2019/09/30 11:30:38 | at 
> jdk/internal/module/ModuleBootstrap.fail (java.base@9/Unknown 
> Source:4294967295)INFO   | jvm 1    | 2019/09/30 11:30:38 | at 
> jdk/internal/module/ModuleBootstrap.decode (java.base@9/Unknown 
> Source:4294967295)INFO   | jvm 1    | 2019/09/30 11:30:38 | at 
> jdk/internal/module/ModuleBootstrap.initModulePatcher (java.base@9/Unknown 
> Source:4294967295)INFO   | jvm 1    | 2019/09/30 11:30:38 | at 
> jdk/internal/module/ModuleBootstrap.<clinit> (java.base@9/Unknown 
> Source:4294967295)INFO   | jvm 1    | 2019/09/30 11:30:38 | at 
> java/lang/ClassLoader.initializeClassLoaders (java.base@9/Unknown 
> Source:4294967295)INFO   | jvm 1    | 2019/09/30 11:30:38 | at 
> java/lang/Thread.initialize (java.base@9/Unknown Source:4294967295)INFO   | 
> jvm 1    | 2019/09/30 11:30:38 | at java/lang/Thread.<init> 
> (java.base@9/Unknown Source:4294967295)DEBUG  | wrapper  | 2019/09/30 
> 11:30:38 | JVM was only running for 0 seconds leading to a failed restart 
> count of 1.}}
> {quote}
> The entries in the wrapper.conf are looking ok for me, see attachement.
> The Java used is an OpenJDK OpenJ9 Java 11 from AdoptJDK.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to