Skip to content

ReadWriteSplitting plugin never switching to readers for Wildfly project #1096

Closed
@juliendef

Description

@juliendef

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)

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingquestionFurther information is requested

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions