Search code examples
wso2failoveraws-aurora-serverless

AWS Mysql Aurora Serverless V2 Failover exception with WSO2 API Manager


I have configured WSO2 API manager (4.0.0) with Aurora Mysql Serverless V2 using the cluster's writer node. I have replaced the MYSQL JDBC driver with the AWS driver software.aws.rds.jdbc.mysql.Driver so that I could test the Failover scenario. I have not configured any parameters in the URL so that the default configurations could be picked up.

But as I trigger the Failover, the following exception was thrown and API manager lost its connection. The connection was not recovered and I had to restart the server.

Is there any solution?

ERROR {org.wso2.carbon.registry.core.dataaccess.TransactionManager} - Failed to start new registry transaction. java.sql.SQLException: The active SQL connection has changed due to a connection failure. Please re-configure session state if required.
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.failover.FailoverConnectionPlugin.failover(FailoverConnectionPlugin.java:504)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.failover.FailoverConnectionPlugin.pickNewConnection(FailoverConnectionPlugin.java:617)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.failover.FailoverConnectionPlugin.dealWithOriginalException(FailoverConnectionPlugin.java:854)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.failover.FailoverConnectionPlugin.execute(FailoverConnectionPlugin.java:252)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.ConnectionPluginManager.execute(ConnectionPluginManager.java:138)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.ConnectionProxy.invoke(ConnectionProxy.java:193)
    at com.sun.proxy.$Proxy53.setAutoCommit(Unknown Source)
    at jdk.internal.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:152)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.TrapException.invoke(TrapException.java:40)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:81)
    at com.sun.proxy.$Proxy54.setAutoCommit(Unknown Source)
    at org.wso2.carbon.registry.core.jdbc.dataaccess.ConnectionWrapper.setAutoCommit(ConnectionWrapper.java:86)
    at org.wso2.carbon.registry.core.jdbc.dataaccess.JDBCTransactionManager.beginTransaction(JDBCTransactionManager.java:95)
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.beginTransaction(EmbeddedRegistry.java:443)
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.resourceExists(EmbeddedRegistry.java:639)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExistsInternal(UserRegistry.java:786)
    at org.wso2.carbon.registry.core.session.UserRegistry.access$800(UserRegistry.java:73)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:769)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:766)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExists(UserRegistry.java:766)
    at org.wso2.carbon.registry.core.jdbc.handlers.builtin.MountHandler.resourceExists(MountHandler.java:329)
    at org.wso2.carbon.registry.core.jdbc.handlers.builtin.MountHandler.resourceExists(MountHandler.java:306)
    at org.wso2.carbon.registry.core.jdbc.handlers.HandlerManager.resourceExists(HandlerManager.java:3132)
    at org.wso2.carbon.registry.core.jdbc.handlers.UserDefinedHandlerManager.resourceExists(UserDefinedHandlerManager.java:259)
    at org.wso2.carbon.registry.core.jdbc.handlers.HandlerLifecycleManager.resourceExists(HandlerLifecycleManager.java:1234)
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.resourceExists(EmbeddedRegistry.java:645)
    at org.wso2.carbon.registry.core.caching.CacheBackedRegistry.resourceExists(CacheBackedRegistry.java:376)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExistsInternal(UserRegistry.java:786)
    at org.wso2.carbon.registry.core.session.UserRegistry.access$800(UserRegistry.java:73)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:769)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:766)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExists(UserRegistry.java:766)
    at org.wso2.carbon.mediation.registry.WSO2Registry.getResource(WSO2Registry.java:599)
    at org.wso2.carbon.mediation.registry.WSO2Registry.lookup(WSO2Registry.java:146)
    at org.apache.synapse.registry.AbstractRegistry.getResource(AbstractRegistry.java:66)
    at org.apache.synapse.config.SynapseConfiguration.getSequence(SynapseConfiguration.java:710)
    at org.apache.synapse.core.axis2.Axis2MessageContext.getSequence(Axis2MessageContext.java:177)
    at org.apache.synapse.api.Resource.registerFaultHandler(Resource.java:389)
    at org.apache.synapse.api.Resource.process(Resource.java:341)
    at org.apache.synapse.api.API.process(API.java:463)
    at org.apache.synapse.api.AbstractApiHandler.apiProcess(AbstractApiHandler.java:93)
    at org.apache.synapse.api.AbstractApiHandler.dispatchToAPI(AbstractApiHandler.java:71)
    at org.apache.synapse.api.rest.RestRequestHandler.dispatchToAPI(RestRequestHandler.java:84)
    at org.apache.synapse.api.rest.RestRequestHandler.process(RestRequestHandler.java:70)
    at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:54)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:344)
    at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:101)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:375)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:189)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
TID: [-1234] [PassThroughMessageProcessor-33] [] [2022-08-23 20:35:31,679] ERROR {org.wso2.carbon.registry.core.jdbc.handlers.builtin.MountHandler} - Unable to test existence of resource org.wso2.carbon.registry.core.exceptions.RegistryException: Failed to start new registry transaction.
    at org.wso2.carbon.registry.core.jdbc.dataaccess.JDBCTransactionManager.beginTransaction(JDBCTransactionManager.java:108)
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.beginTransaction(EmbeddedRegistry.java:443)
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.resourceExists(EmbeddedRegistry.java:639)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExistsInternal(UserRegistry.java:786)
    at org.wso2.carbon.registry.core.session.UserRegistry.access$800(UserRegistry.java:73)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:769)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:766)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExists(UserRegistry.java:766)
    at org.wso2.carbon.registry.core.jdbc.handlers.builtin.MountHandler.resourceExists(MountHandler.java:329)
    at org.wso2.carbon.registry.core.jdbc.handlers.builtin.MountHandler.resourceExists(MountHandler.java:306)
    at org.wso2.carbon.registry.core.jdbc.handlers.HandlerManager.resourceExists(HandlerManager.java:3132)
    at org.wso2.carbon.registry.core.jdbc.handlers.UserDefinedHandlerManager.resourceExists(UserDefinedHandlerManager.java:259)
    at org.wso2.carbon.registry.core.jdbc.handlers.HandlerLifecycleManager.resourceExists(HandlerLifecycleManager.java:1234)
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.resourceExists(EmbeddedRegistry.java:645)
    at org.wso2.carbon.registry.core.caching.CacheBackedRegistry.resourceExists(CacheBackedRegistry.java:376)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExistsInternal(UserRegistry.java:786)
    at org.wso2.carbon.registry.core.session.UserRegistry.access$800(UserRegistry.java:73)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:769)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:766)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExists(UserRegistry.java:766)
    at org.wso2.carbon.mediation.registry.WSO2Registry.getResource(WSO2Registry.java:599)
    at org.wso2.carbon.mediation.registry.WSO2Registry.lookup(WSO2Registry.java:146)
    at org.apache.synapse.registry.AbstractRegistry.getResource(AbstractRegistry.java:66)
    at org.apache.synapse.config.SynapseConfiguration.getSequence(SynapseConfiguration.java:710)
    at org.apache.synapse.core.axis2.Axis2MessageContext.getSequence(Axis2MessageContext.java:177)
    at org.apache.synapse.api.Resource.registerFaultHandler(Resource.java:389)
    at org.apache.synapse.api.Resource.process(Resource.java:341)
    at org.apache.synapse.api.API.process(API.java:463)
    at org.apache.synapse.api.AbstractApiHandler.apiProcess(AbstractApiHandler.java:93)
    at org.apache.synapse.api.AbstractApiHandler.dispatchToAPI(AbstractApiHandler.java:71)
    at org.apache.synapse.api.rest.RestRequestHandler.dispatchToAPI(RestRequestHandler.java:84)
    at org.apache.synapse.api.rest.RestRequestHandler.process(RestRequestHandler.java:70)
    at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:54)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:344)
    at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:101)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:375)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:189)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: java.sql.SQLException: The active SQL connection has changed due to a connection failure. Please re-configure session state if required.
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.failover.FailoverConnectionPlugin.failover(FailoverConnectionPlugin.java:504)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.failover.FailoverConnectionPlugin.pickNewConnection(FailoverConnectionPlugin.java:617)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.failover.FailoverConnectionPlugin.dealWithOriginalException(FailoverConnectionPlugin.java:854)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.failover.FailoverConnectionPlugin.execute(FailoverConnectionPlugin.java:252)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.ConnectionPluginManager.execute(ConnectionPluginManager.java:138)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.ConnectionProxy.invoke(ConnectionProxy.java:193)
    at com.sun.proxy.$Proxy53.setAutoCommit(Unknown Source)
    at jdk.internal.reflect.GeneratedMethodAccessor61.invoke(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at org.apache.tomcat.jdbc.pool.ProxyConnection.invoke(ProxyConnection.java:126)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.interceptor.ConnectionState.invoke(ConnectionState.java:152)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.TrapException.invoke(TrapException.java:40)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.interceptor.AbstractCreateStatementInterceptor.invoke(AbstractCreateStatementInterceptor.java:79)
    at org.apache.tomcat.jdbc.pool.JdbcInterceptor.invoke(JdbcInterceptor.java:108)
    at org.apache.tomcat.jdbc.pool.DisposableConnectionFacade.invoke(DisposableConnectionFacade.java:81)
    at com.sun.proxy.$Proxy54.setAutoCommit(Unknown Source)
    at org.wso2.carbon.registry.core.jdbc.dataaccess.ConnectionWrapper.setAutoCommit(ConnectionWrapper.java:86)
    at org.wso2.carbon.registry.core.jdbc.dataaccess.JDBCTransactionManager.beginTransaction(JDBCTransactionManager.java:95)
    ... 43 more

The server could not re-establish the connection after several tries

TID: [-1234] [PassThroughMessageProcessor-24] [] [2022-08-23 20:35:38,666] ERROR {org.wso2.carbon.registry.core.dataaccess.TransactionManager} - Failed to start new registry transaction. java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:910)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:460)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:253)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.BasicConnectionProvider.connect(BasicConnectionProvider.java:53)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.DefaultConnectionPlugin.openInitialConnection(DefaultConnectionPlugin.java:104)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.NodeMonitoringConnectionPlugin.openInitialConnection(NodeMonitoringConnectionPlugin.java:255)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.failover.FailoverConnectionPlugin.createConnection(FailoverConnectionPlugin.java:1060)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.failover.FailoverConnectionPlugin.openInitialConnection(FailoverConnectionPlugin.java:219)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.plugins.ConnectionPluginManager.openInitialConnection(ConnectionPluginManager.java:151)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.ConnectionProxy.initPluginManager(ConnectionProxy.java:283)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.ConnectionProxy.<init>(ConnectionProxy.java:104)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.ConnectionProxy.<init>(ConnectionProxy.java:91)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.ConnectionProxy.<init>(ConnectionProxy.java:79)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ha.ConnectionProxy.autodetectClusterAndCreateProxyInstance(ConnectionProxy.java:126)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:221)
    at org.apache.tomcat.jdbc.pool.PooledConnection.connectUsingDriver(PooledConnection.java:319)
    at org.apache.tomcat.jdbc.pool.PooledConnection.connect(PooledConnection.java:212)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.createConnection(ConnectionPool.java:744)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.borrowConnection(ConnectionPool.java:676)
    at org.apache.tomcat.jdbc.pool.ConnectionPool.getConnection(ConnectionPool.java:198)
    at org.apache.tomcat.jdbc.pool.DataSourceProxy.getConnection(DataSourceProxy.java:132)
    at org.wso2.carbon.registry.core.jdbc.dataaccess.JDBCTransactionManager.beginTransaction(JDBCTransactionManager.java:83)
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.beginTransaction(EmbeddedRegistry.java:443)
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.resourceExists(EmbeddedRegistry.java:639)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExistsInternal(UserRegistry.java:786)
    at org.wso2.carbon.registry.core.session.UserRegistry.access$800(UserRegistry.java:73)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:769)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:766)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExists(UserRegistry.java:766)
    at org.wso2.carbon.registry.core.jdbc.handlers.builtin.MountHandler.resourceExists(MountHandler.java:329)
    at org.wso2.carbon.registry.core.jdbc.handlers.builtin.MountHandler.resourceExists(MountHandler.java:306)
    at org.wso2.carbon.registry.core.jdbc.handlers.HandlerManager.resourceExists(HandlerManager.java:3132)
    at org.wso2.carbon.registry.core.jdbc.handlers.UserDefinedHandlerManager.resourceExists(UserDefinedHandlerManager.java:259)
    at org.wso2.carbon.registry.core.jdbc.handlers.HandlerLifecycleManager.resourceExists(HandlerLifecycleManager.java:1234)
    at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.resourceExists(EmbeddedRegistry.java:645)
    at org.wso2.carbon.registry.core.caching.CacheBackedRegistry.resourceExists(CacheBackedRegistry.java:376)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExistsInternal(UserRegistry.java:786)
    at org.wso2.carbon.registry.core.session.UserRegistry.access$800(UserRegistry.java:73)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:769)
    at org.wso2.carbon.registry.core.session.UserRegistry$9.run(UserRegistry.java:766)
    at java.base/java.security.AccessController.doPrivileged(Native Method)
    at org.wso2.carbon.registry.core.session.UserRegistry.resourceExists(UserRegistry.java:766)
    at org.wso2.carbon.mediation.registry.WSO2Registry.getResource(WSO2Registry.java:599)
    at org.wso2.carbon.mediation.registry.WSO2Registry.lookup(WSO2Registry.java:146)
    at org.apache.synapse.registry.AbstractRegistry.getResource(AbstractRegistry.java:66)
    at org.apache.synapse.config.SynapseConfiguration.getSequence(SynapseConfiguration.java:710)
    at org.apache.synapse.core.axis2.Axis2MessageContext.getSequence(Axis2MessageContext.java:177)
    at org.apache.synapse.api.Resource.registerFaultHandler(Resource.java:389)
    at org.apache.synapse.api.Resource.process(Resource.java:341)
    at org.apache.synapse.api.API.process(API.java:463)
    at org.apache.synapse.api.AbstractApiHandler.apiProcess(AbstractApiHandler.java:93)
    at org.apache.synapse.api.AbstractApiHandler.dispatchToAPI(AbstractApiHandler.java:71)
    at org.apache.synapse.api.rest.RestRequestHandler.dispatchToAPI(RestRequestHandler.java:84)
    at org.apache.synapse.api.rest.RestRequestHandler.process(RestRequestHandler.java:70)
    at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:54)
    at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:344)
    at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:101)
    at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
    at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:375)
    at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:189)
    at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: software.aws.rds.jdbc.mysql.shading.com.mysql.cj.exceptions.CJCommunicationsException: Communications link failure

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
    at jdk.internal.reflect.GeneratedConstructorAccessor397.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.exceptions.ExceptionFactory.createCommunicationsException(ExceptionFactory.java:167)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:89)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.NativeSession.connect(NativeSession.java:123)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:854)
    ... 65 more
Caused by: java.net.ConnectException: Connection refused (Connection refused)
    at java.base/java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.base/java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:412)
    at java.base/java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:255)
    at java.base/java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:237)
    at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.base/java.net.Socket.connect(Socket.java:609)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.protocol.StandardSocketFactory.connect(StandardSocketFactory.java:156)
    at software.aws.rds.jdbc.mysql.shading.com.mysql.cj.protocol.a.NativeSocketConnection.connect(NativeSocketConnection.java:63)
    ... 67 more

Solution

  • In wso2 products, it uses tomcat JDBC pool to maintain the database connections. In a DB failover scenario, you might observe connection issues since it tries to reuse the previously established connections. But eventually, it should get resolved. You can reduce the error rate by tuning the JDBC pool. Shall we use the below parameters in the data source and try to tune the JDBC pool?

    testOnBorrow, validationQuery, validationInterval, minEvictableIdleTimeMillis ..