Skip to content

StatusLogger initialization fails on J9 VM #2737

@aaaygupta

Description

@aaaygupta

Description

I have created a java sample where I am only initializing the logger using LogManager.
Below is my sample code

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
 
public class TestLog {
	private final static Logger s_logger=LogManager.getLogger(TestLog.class);
	public static void main(String[] args) { 		
	}

When executing this code from inside IBM DB2 11.1 using a procedure, I am getting following exception.

java.lang.BootstrapMethodError: java.lang.ExceptionInInitializerError
	at org.apache.logging.log4j.spi.AbstractLogger.<clinit>(AbstractLogger.java:107)
	at org.apache.logging.log4j.LogManager.<clinit>(LogManager.java:60)
	at com.test.TestLog.<clinit>(TestLog.java:11)
Caused by: java.lang.ExceptionInInitializerError
	at java.lang.J9VMInternals.ensureError(J9VMInternals.java:137)
	at java.lang.J9VMInternals.recordInitializationFailure(J9VMInternals.java:126)
	at org.apache.logging.log4j.status.StatusLogger.getLogger(StatusLogger.java:564)
	at org.apache.logging.log4j.internal.DefaultLogBuilder.<clinit>(DefaultLogBuilder.java:40)
	at java.lang.Class.forNameImpl(Native Method)
	at java.lang.Class.forName(Class.java:343)
	at java.lang.invoke.MethodType.nonPrimitiveClassFromString(MethodType.java:311)
	at java.lang.invoke.MethodType.parseIntoClasses(MethodType.java:373)
	at java.lang.invoke.MethodType.fromMethodDescriptorString(MethodType.java:286)
	at java.lang.invoke.MethodHandle.getCPMethodTypeAt(Native Method)
	at java.lang.invoke.MethodHandle.resolveInvokeDynamic(MethodHandle.java:849)
	... 3 more
Caused by: java.lang.NullPointerException: level
	at java.util.Objects.requireNonNull(Objects.java:239)
	at org.apache.logging.log4j.status.StatusConsoleListener.<init>(StatusConsoleListener.java:68)
	at org.apache.logging.log4j.status.StatusConsoleListener.<init>(StatusConsoleListener.java:54)
	at org.apache.logging.log4j.status.StatusLogger.<init>(StatusLogger.java:533)
	at org.apache.logging.log4j.status.StatusLogger$InstanceHolder.<clinit>(StatusLogger.java:505)
	... 12 more

Below is my procedure definition.
CREATE or REPLACE PROCEDURE ING_TEST (IN result VARCHAR(100)) LANGUAGE JAVA PARAMETER STYLE JAVA MODIFIES SQL DATA EXTERNAL NAME 'com.test.TestLog!testlog4j' / GRANT EXECUTE ON PROCEDURE ING_TEST TO PUBLIC WITH GRANT OPTION /

When using log4j2 2.23.0 jar everything works fine. But as I replaced log4j2 2.23.1 it starts giving above exception.

Configuration

log4j2 2.23.1
IBM DB2 version 11.1
IBM Java

java version "1.8.0" Java(TM) SE Runtime Environment (build pwa6480sr2fp10-20160108_01(SR2 FP10)) IBM J9 VM (build 2.8, JRE 1.8.0 Windows Server 2016 Datacenter amd64-64 Compressed References 20160106_284759 (JIT enabled, AOT enabled) J9VM - R28_20160106_1341_B284759 JIT - tr.r14.java_20151209_107110.02 GC - R28_20160106_1341_B284759_CMPRSS J9CL - 20160106_284759) JCL - 20151231_01 based on Oracle jdk8u71-b15
Version: [2.23.1]

Operating system: [Windows Server 2016]

JDK: [java version "1.8.0"
Java(TM) SE Runtime Environment (build pwa6480sr2fp10-20160108_01(SR2 FP10))
IBM J9 VM (build 2.8, JRE 1.8.0 Windows Server 2016 Datacenter amd64-64 Compressed References 20160106_284759 (JIT enabled, AOT enabled)
J9VM - R28_20160106_1341_B284759
JIT - tr.r14.java_20151209_107110.02
GC - R28_20160106_1341_B284759_CMPRSS
J9CL - 20160106_284759)
JCL - 20151231_01 based on Oracle jdk8u71-b15]

Metadata

Metadata

Assignees

Labels

questionTickets that are not bug reports, but questions

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions