Description
Describe the bug
Using Java 8, Spring 2.1.3, Wildfly 10.1.0, MySQL 8.0.33 and AWS advanced JDBC wrapper 2.3.9.
Note
Even using Wildfly 26.1.1, Jdk 11, Spring 2.7.1, like your example. It wont do the transaction routing.
I can't reach my reader instance at all when a transaction is indicated as “readOnly”.
There's no call for switchConnectionIfRequired, as if the plugin wasn't listening to the transactional annotation and its readOnly property.
The following logs result from a test with the minimal example from the repo I've attached below
Expected Behavior
I personally built a version containing additional logs of aws-advanced-jdbc-wrapper, observing that switchConnectionIfRequired is never called, and I expect that to be the case when @transactional(readOnly=true)
is being called
What plugins are used? What other connection properties were set?
wrapperLoggerLevel=ALL&wrapperPlugins=readWriteSplitting,failover,efm2
Current Behavior
No switch is made on the reader, certainly because no call to that switchConnectionIfRequired
2024-08-20 15:53:00,403 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-8) Executing method: 'ResultSet.getInt'
2024-08-20 15:53:00,403 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-8) Executing method: 'ResultSet.next'
2024-08-20 15:53:00,403 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-8) Executing method: 'ResultSet.getString'
2024-08-20 15:53:00,403 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-8) Executing method: 'ResultSet.getInt'
2024-08-20 15:53:00,403 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-8) Executing method: 'ResultSet.next'
2024-08-20 15:53:00,403 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-8) Executing method: 'ResultSet.getString'
2024-08-20 15:53:00,403 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-8) Executing method: 'ResultSet.getInt'
2024-08-20 15:53:00,404 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-8) Executing method: 'ResultSet.next'
2024-08-20 15:53:00,404 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-8) Executing method: 'ResultSet.close'
2024-08-20 15:53:00,404 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-8) Executing method: 'Statement.close'
2024-08-20 15:53:10,602 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'Connection.createStatement'
2024-08-20 15:53:10,603 FINEST [software.amazon.jdbc.hostlistprovider.RdsHostListProvider] (default task-9) [From cache] Topology:
HostSpec[host=test-mysql8-2.test.eu-west-1.rds.amazonaws.com, port=3306, READER, AVAILABLE, weight=1704, 2024-08-20 15:53:00.386371]
HostSpec[host=test-mysql8-1.test.eu-west-1.rds.amazonaws.com, port=3306, WRITER, AVAILABLE, weight=10, 2024-08-20 15:53:00.131001]
2024-08-20 15:53:10,603 FINEST [software.amazon.jdbc.plugin.efm2.HostMonitoringConnectionPlugin] (default task-9) Executing method 'Statement.executeQuery', monitoring is activated.
2024-08-20 15:53:10,603 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'Statement.executeQuery'
2024-08-20 15:53:10,604 FINEST [software.amazon.jdbc.plugin.efm2.HostMonitoringConnectionPlugin] (default task-9) Monitoring deactivated for method 'Statement.executeQuery'.
2024-08-20 15:53:10,604 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.close'
2024-08-20 15:53:10,604 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'Statement.close'
2024-08-20 15:53:10,604 FINEST [software.amazon.jdbc.hostlistprovider.RdsHostListProvider] (default task-9) [From cache] Topology:
HostSpec[host=test-mysql8-2.test.eu-west-1.rds.amazonaws.com, port=3306, READER, AVAILABLE, weight=1704, 2024-08-20 15:53:00.386371]
HostSpec[host=test-mysql8-1.test.eu-west-1.rds.amazonaws.com, port=3306, WRITER, AVAILABLE, weight=10, 2024-08-20 15:53:00.131001]
2024-08-20 15:53:10,604 FINEST [software.amazon.jdbc.plugin.efm2.HostMonitoringConnectionPlugin] (default task-9) Executing method 'Connection.setAutoCommit', monitoring is activated.
2024-08-20 15:53:10,604 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'Connection.setAutoCommit'
2024-08-20 15:53:10,605 FINEST [software.amazon.jdbc.states.SessionStateServiceImpl] (default task-9) Current session state:
autoCommit: true -> false
readOnly: false -> (blank)
catalog: (blank) -> (blank)
schema: (blank) -> (blank)
holdability: (blank) -> (blank)
networkTimeout: (blank) -> (blank)
transactionIsolation: 4 -> (blank)
typeMap: (blank) -> (blank)
2024-08-20 15:53:10,605 FINEST [software.amazon.jdbc.plugin.efm2.HostMonitoringConnectionPlugin] (default task-9) Monitoring deactivated for method 'Connection.setAutoCommit'.
2024-08-20 15:53:10,605 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'Connection.createStatement'
2024-08-20 15:53:10,606 FINEST [software.amazon.jdbc.hostlistprovider.RdsHostListProvider] (default task-9) [From cache] Topology:
HostSpec[host=test-mysql8-2.test.eu-west-1.rds.amazonaws.com, port=3306, READER, AVAILABLE, weight=1704, 2024-08-20 15:53:00.386371]
HostSpec[host=test-mysql8-1.test.eu-west-1.rds.amazonaws.com, port=3306, WRITER, AVAILABLE, weight=10, 2024-08-20 15:53:00.131001]
2024-08-20 15:53:10,606 FINEST [software.amazon.jdbc.plugin.efm2.HostMonitoringConnectionPlugin] (default task-9) Executing method 'Statement.executeQuery', monitoring is activated.
2024-08-20 15:53:10,606 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'Statement.executeQuery'
2024-08-20 15:53:10,607 FINEST [software.amazon.jdbc.plugin.efm2.HostMonitoringConnectionPlugin] (default task-9) Monitoring deactivated for method 'Statement.executeQuery'.
2024-08-20 15:53:10,607 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.next'
2024-08-20 15:53:10,608 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.getString'
2024-08-20 15:53:10,608 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.getInt'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.next'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.getString'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.getInt'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.next'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.getString'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.getInt'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.next'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.getString'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.getInt'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.next'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.getString'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.getInt'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.next'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'ResultSet.close'
2024-08-20 15:53:10,609 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'Statement.close'
2024-08-20 15:53:10,610 FINEST [software.amazon.jdbc.hostlistprovider.RdsHostListProvider] (default task-9) [From cache] Topology:
HostSpec[host=test-mysql8-2.test.eu-west-1.rds.amazonaws.com, port=3306, READER, AVAILABLE, weight=1704, 2024-08-20 15:53:00.386371]
HostSpec[host=test-mysql8-1.test.eu-west-1.rds.amazonaws.com, port=3306, WRITER, AVAILABLE, weight=10, 2024-08-20 15:53:00.131001]
2024-08-20 15:53:10,610 FINEST [software.amazon.jdbc.plugin.efm2.HostMonitoringConnectionPlugin] (default task-9) Executing method 'Connection.commit', monitoring is activated.
2024-08-20 15:53:10,610 FINEST [software.amazon.jdbc.plugin.DefaultConnectionPlugin] (default task-9) Executing method: 'Connection.commit'
2024-08-20 15:53:10,610 FINEST [software.amazon.jdbc.plugin.efm2.HostMonitoringConnectionPlugin] (default task-9) Monitoring deactivated for method 'Connection.commit'
Reproduction Steps
Minimal example that reproduces the problem, read Wildfly on Docker chapter for fast reproduction. Feel free to ask
Possible Solution
Perhaps because of the JTA Wildfly?
Additional Information/Context
No response
The AWS Advanced JDBC Driver version used
2.3.9
JDK version used
8 (also tested on 11)
Operating System and version
CentOS Linux 7 (docker image)