Skip to content

NPE in efm2 after upgrading to 4.0.0 #1896

@bahaa

Description

@bahaa

Describe the bug

After upgrading from 3.3.0 to 4.0.0, efm2 plugin throws NullPointerException.

Expected Behavior

No Exception is thrown as the upgrade is backwards compatible.

What plugins are used? What other connection properties were set?

failover2,efm2

Current Behavior

NPE is thrown with this root cause:

Caused by: java.lang.NullPointerException: Cannot invoke "software.amazon.jdbc.plugin.efm.v2.HostMonitorServiceV2Impl$HostMonitorKey.toString()" because "this.monitorKey" is null
	at software.amazon.jdbc.plugin.efm.v2.HostMonitorServiceV2Impl.getSnapshotState(HostMonitorServiceV2Impl.java:188) ~[aws-advanced-jdbc-wrapper-4.0.0.jar:na]
	at software.amazon.jdbc.util.WrapperUtils.addSnapshotState(WrapperUtils.java:839) ~[aws-advanced-jdbc-wrapper-4.0.0.jar:na]
	at software.amazon.jdbc.util.WrapperUtils.addSnapshotState(WrapperUtils.java:826) ~[aws-advanced-jdbc-wrapper-4.0.0.jar:na]
	at software.amazon.jdbc.plugin.efm.base.HostMonitoringConnectionBasePlugin.getSnapshotState(HostMonitoringConnectionBasePlugin.java:289) ~[aws-advanced-jdbc-wrapper-4.0.0.jar:na]
	at software.amazon.jdbc.ConnectionPluginManager.getSnapshotState(ConnectionPluginManager.java:638) ~[aws-advanced-jdbc-wrapper-4.0.0.jar:na]
	at software.amazon.jdbc.util.WrapperUtils.addSnapshotState(WrapperUtils.java:839) ~[aws-advanced-jdbc-wrapper-4.0.0.jar:na]
	at software.amazon.jdbc.util.WrapperUtils.addSnapshotState(WrapperUtils.java:826) ~[aws-advanced-jdbc-wrapper-4.0.0.jar:na]
	at software.amazon.jdbc.util.WrapperUtils.collectState(WrapperUtils.java:754) ~[aws-advanced-jdbc-wrapper-4.0.0.jar:na]
	at software.amazon.jdbc.util.WrapperUtils.extendWithContext(WrapperUtils.java:659) ~[aws-advanced-jdbc-wrapper-4.0.0.jar:na]
	at software.amazon.jdbc.util.WrapperUtils.executeWithPlugins(WrapperUtils.java:363) ~[aws-advanced-jdbc-wrapper-4.0.0.jar:na]
	at software.amazon.jdbc.wrapper.ConnectionWrapper.isValid(ConnectionWrapper.java:649) ~[aws-advanced-jdbc-wrapper-4.0.0.jar:na]
	at com.zaxxer.hikari.pool.PoolBase.checkValidationSupport(PoolBase.java:483) ~[HikariCP-7.0.2.jar:na]
	at com.zaxxer.hikari.pool.PoolBase.checkDriverSupport(PoolBase.java:466) ~[HikariCP-7.0.2.jar:na]
	at com.zaxxer.hikari.pool.PoolBase.setupConnection(PoolBase.java:434) ~[HikariCP-7.0.2.jar:na]
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:378) ~[HikariCP-7.0.2.jar:na]
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:210) ~[HikariCP-7.0.2.jar:na]
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:488) ~[HikariCP-7.0.2.jar:na]
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:576) ~[HikariCP-7.0.2.jar:na]
	... 30 common frames omitted

Reproduction Steps

Just configure the wrapper to connect to a local Postgres server using version 4.0.0 with efm2 enabled without any customizations.

Possible Solution

No response

Additional Information/Context

It seems like monitorKey field in HostMonitorServiceV2Impl is access before being initialized. It get initialized only after startMonitoring() is called, but getSnapshotState() is called before startMonitoring() is called from WrapperUtils.

The AWS Advanced JDBC Wrapper version used

4.0.0

JDK version used

25

Operating System and version

macOS 26.4.1

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions