public class FailoverConnectionPlugin extends AbstractConnectionPlugin
| Modifier and Type | Field and Description |
|---|---|
protected java.lang.String |
closedReason |
static AwsWrapperProperty |
ENABLE_CLUSTER_AWARE_FAILOVER |
protected boolean |
enableFailoverSetting |
static AwsWrapperProperty |
FAILOVER_CLUSTER_TOPOLOGY_REFRESH_RATE_MS |
static AwsWrapperProperty |
FAILOVER_MODE |
static AwsWrapperProperty |
FAILOVER_READER_CONNECT_TIMEOUT_MS |
static AwsWrapperProperty |
FAILOVER_TIMEOUT_MS |
static AwsWrapperProperty |
FAILOVER_WRITER_RECONNECT_INTERVAL_MS |
protected int |
failoverClusterTopologyRefreshRateMsSetting |
protected FailoverMode |
failoverMode |
protected int |
failoverReaderConnectTimeoutMsSetting |
protected int |
failoverTimeoutMsSetting |
protected int |
failoverWriterReconnectIntervalMsSetting |
protected boolean |
isClosed |
protected java.util.Properties |
properties |
protected ReaderFailoverHandler |
readerFailoverHandler |
protected WriterFailoverHandler |
writerFailoverHandler |
| Constructor and Description |
|---|
FailoverConnectionPlugin(PluginService pluginService,
java.util.Properties properties) |
| Modifier and Type | Method and Description |
|---|---|
java.sql.Connection |
connect(java.lang.String driverProtocol,
HostSpec hostSpec,
java.util.Properties props,
boolean isInitialConnection,
JdbcCallable<java.sql.Connection,java.sql.SQLException> connectFunc)
Establishes a connection to the given host using the given driver protocol and properties.
|
protected java.sql.Connection |
createConnectionForHost(HostSpec baseHostSpec)
Creates a new physical connection for the given
HostSpec. |
protected <E extends java.lang.Exception> |
dealWithIllegalStateException(java.lang.IllegalStateException e,
java.lang.Class<E> exceptionClass) |
<T,E extends java.lang.Exception> |
execute(java.lang.Class<T> resultClass,
java.lang.Class<E> exceptionClass,
java.lang.Object methodInvokeOn,
java.lang.String methodName,
JdbcCallable<T,E> jdbcMethodFunc,
java.lang.Object[] jdbcMethodArgs) |
protected void |
failover(HostSpec failedHost)
Initiates the failover procedure.
|
protected void |
failoverReader(HostSpec failedHostSpec) |
protected void |
failoverWriter() |
java.sql.Connection |
forceConnect(java.lang.String driverProtocol,
HostSpec hostSpec,
java.util.Properties props,
boolean isInitialConnection,
JdbcCallable<java.sql.Connection,java.sql.SQLException> forceConnectFunc)
Establishes a connection to the given host using the given driver protocol and properties.
|
java.util.Set<java.lang.String> |
getSubscribedMethods() |
void |
initHostProvider(java.lang.String driverProtocol,
java.lang.String initialUrl,
java.util.Properties properties,
HostListProviderService hostListProviderService,
JdbcCallable<java.lang.Void,java.sql.SQLException> initHostProviderFunc) |
protected void |
invalidateCurrentConnection() |
boolean |
isFailoverEnabled() |
OldConnectionSuggestedAction |
notifyConnectionChanged(java.util.EnumSet<NodeChangeOptions> changes) |
void |
notifyNodeListChanged(java.util.Map<java.lang.String,java.util.EnumSet<NodeChangeOptions>> changes) |
protected void |
pickNewConnection() |
protected boolean |
shouldExceptionTriggerConnectionSwitch(java.lang.Throwable t) |
protected void |
transferSessionState(java.sql.Connection from,
java.sql.Connection to)
Transfers basic session state from one connection to another.
|
protected void |
updateTopology(boolean forceUpdate) |
acceptsStrategy, getHostSpecByStrategyprotected final java.util.Properties properties
protected boolean enableFailoverSetting
protected int failoverTimeoutMsSetting
protected int failoverClusterTopologyRefreshRateMsSetting
protected int failoverWriterReconnectIntervalMsSetting
protected int failoverReaderConnectTimeoutMsSetting
protected FailoverMode failoverMode
protected boolean isClosed
protected java.lang.String closedReason
protected WriterFailoverHandler writerFailoverHandler
protected ReaderFailoverHandler readerFailoverHandler
public static final AwsWrapperProperty FAILOVER_CLUSTER_TOPOLOGY_REFRESH_RATE_MS
public static final AwsWrapperProperty FAILOVER_TIMEOUT_MS
public static final AwsWrapperProperty FAILOVER_WRITER_RECONNECT_INTERVAL_MS
public static final AwsWrapperProperty FAILOVER_READER_CONNECT_TIMEOUT_MS
public static final AwsWrapperProperty ENABLE_CLUSTER_AWARE_FAILOVER
public static final AwsWrapperProperty FAILOVER_MODE
public FailoverConnectionPlugin(PluginService pluginService, java.util.Properties properties)
public java.util.Set<java.lang.String> getSubscribedMethods()
getSubscribedMethods in interface ConnectionPlugingetSubscribedMethods in class AbstractConnectionPluginpublic <T,E extends java.lang.Exception> T execute(java.lang.Class<T> resultClass,
java.lang.Class<E> exceptionClass,
java.lang.Object methodInvokeOn,
java.lang.String methodName,
JdbcCallable<T,E> jdbcMethodFunc,
java.lang.Object[] jdbcMethodArgs)
throws E extends java.lang.Exception
execute in interface ConnectionPluginexecute in class AbstractConnectionPluginE extends java.lang.Exceptionpublic void initHostProvider(java.lang.String driverProtocol,
java.lang.String initialUrl,
java.util.Properties properties,
HostListProviderService hostListProviderService,
JdbcCallable<java.lang.Void,java.sql.SQLException> initHostProviderFunc)
throws java.sql.SQLException
initHostProvider in interface ConnectionPlugininitHostProvider in class AbstractConnectionPluginjava.sql.SQLExceptionpublic OldConnectionSuggestedAction notifyConnectionChanged(java.util.EnumSet<NodeChangeOptions> changes)
notifyConnectionChanged in interface ConnectionPluginnotifyConnectionChanged in class AbstractConnectionPluginpublic void notifyNodeListChanged(java.util.Map<java.lang.String,java.util.EnumSet<NodeChangeOptions>> changes)
notifyNodeListChanged in interface ConnectionPluginnotifyNodeListChanged in class AbstractConnectionPluginpublic boolean isFailoverEnabled()
protected void updateTopology(boolean forceUpdate)
throws java.sql.SQLException
java.sql.SQLExceptionprotected void transferSessionState(java.sql.Connection from,
java.sql.Connection to)
throws java.sql.SQLException
from - The connection to transfer state fromto - The connection to transfer state tojava.sql.SQLException - if a database access error occurs, this method is called on a closed connection, this
method is called during a distributed transaction, or this method is called during a
transactionprotected java.sql.Connection createConnectionForHost(HostSpec baseHostSpec) throws java.sql.SQLException
HostSpec.baseHostSpec - The host info instance to base the connection off of.java.sql.SQLException - if an error occursprotected <E extends java.lang.Exception> void dealWithIllegalStateException(java.lang.IllegalStateException e,
java.lang.Class<E> exceptionClass)
throws E extends java.lang.Exception
E extends java.lang.Exceptionprotected void failover(HostSpec failedHost) throws java.sql.SQLException
failedHost - The host with network errors.java.sql.SQLException - if an error occursprotected void failoverReader(HostSpec failedHostSpec) throws java.sql.SQLException
java.sql.SQLExceptionprotected void failoverWriter()
throws java.sql.SQLException
java.sql.SQLExceptionprotected void invalidateCurrentConnection()
protected void pickNewConnection()
throws java.sql.SQLException
java.sql.SQLExceptionprotected boolean shouldExceptionTriggerConnectionSwitch(java.lang.Throwable t)
public java.sql.Connection connect(java.lang.String driverProtocol,
HostSpec hostSpec,
java.util.Properties props,
boolean isInitialConnection,
JdbcCallable<java.sql.Connection,java.sql.SQLException> connectFunc)
throws java.sql.SQLException
ConnectionPluginConnectionProvider has been set with
ConnectionProviderManager.setConnectionProvider(software.amazon.jdbc.ConnectionProvider) and
ConnectionProvider.acceptsUrl(String, HostSpec, Properties) returns true for the given
protocol, host, and properties, the connection will be created by the non-default
ConnectionProvider. Otherwise, the connection will be created by the default
ConnectionProvider. The default ConnectionProvider will be DriverConnectionProvider for
connections requested via the DriverManager and
DataSourceConnectionProvider for connections requested via an
AwsWrapperDataSource.connect in interface ConnectionPluginconnect in class AbstractConnectionPlugindriverProtocol - the driver protocol that should be used to establish the connectionhostSpec - the host details for the desired connectionprops - the connection propertiesisInitialConnection - a boolean indicating whether the current Connection is
establishing an initial physical connection to the database or has
already established a physical connection in the pastconnectFunc - the function to call to continue the connect request down the
connect pipelineConnection to the requested hostjava.sql.SQLException - if there was an error establishing a Connection to the requested
hostpublic java.sql.Connection forceConnect(java.lang.String driverProtocol,
HostSpec hostSpec,
java.util.Properties props,
boolean isInitialConnection,
JdbcCallable<java.sql.Connection,java.sql.SQLException> forceConnectFunc)
throws java.sql.SQLException
ConnectionPluginConnectionPlugin.connect(java.lang.String, software.amazon.jdbc.HostSpec, java.util.Properties, boolean, software.amazon.jdbc.JdbcCallable<java.sql.Connection, java.sql.SQLException>) in that the default
ConnectionProvider will be used to establish the connection even if a non-default
ConnectionProvider has been set via ConnectionProviderManager.setConnectionProvider(software.amazon.jdbc.ConnectionProvider).
The default ConnectionProvider will be DriverConnectionProvider for connections
requested via the DriverManager and DataSourceConnectionProvider for
connections requested via an AwsWrapperDataSource.forceConnect in interface ConnectionPluginforceConnect in class AbstractConnectionPlugindriverProtocol - the driver protocol that should be used to establish the connectionhostSpec - the host details for the desired connectionprops - the connection propertiesisInitialConnection - a boolean indicating whether the current Connection is
establishing an initial physical connection to the database or has
already established a physical connection in the pastforceConnectFunc - the function to call to continue the forceConnect request down the
forceConnect pipelineConnection to the requested hostjava.sql.SQLException - if there was an error establishing a Connection to the requested
host