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
Describe the bug
After upgrading from 3.3.0 to 4.0.0,
efm2plugin 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:
Reproduction Steps
Just configure the wrapper to connect to a local Postgres server using version 4.0.0 with
efm2enabled without any customizations.Possible Solution
No response
Additional Information/Context
It seems like
monitorKeyfield inHostMonitorServiceV2Implis access before being initialized. It get initialized only afterstartMonitoring()is called, butgetSnapshotState()is called beforestartMonitoring()is called fromWrapperUtils.The AWS Advanced JDBC Wrapper version used
4.0.0
JDK version used
25
Operating System and version
macOS 26.4.1