public class FailoverConnectionPlugin extends AbstractConnectionPlugin
| 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.util.Set<java.lang.String> |
getSubscribedMethods() |
protected void |
initFailoverMode() |
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() |
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 |
throwFailoverSuccessException() |
protected void |
updateTopology(boolean forceUpdate) |
acceptsStrategy, forceConnect, getHostSpecByStrategy, getHostSpecByStrategy, notifyConnectionChangedprotected final java.util.Properties properties
protected boolean enableFailoverSetting
protected boolean enableConnectFailover
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 ENABLE_CONNECT_FAILOVER
public static final AwsWrapperProperty FAILOVER_MODE
public static final AwsWrapperProperty TELEMETRY_FAILOVER_ADDITIONAL_TOP_TRACE
public static final AwsWrapperProperty SKIP_FAILOVER_ON_INTERRUPTED_THREAD
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 void notifyNodeListChanged(java.util.Map<java.lang.String,java.util.EnumSet<NodeChangeOptions>> changes)
notifyNodeListChanged in interface ConnectionPluginnotifyNodeListChanged in class AbstractConnectionPluginpublic boolean isFailoverEnabled()
protected void initFailoverMode()
protected void updateTopology(boolean forceUpdate)
throws java.sql.SQLException
java.sql.SQLExceptionprotected 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 throwFailoverSuccessException()
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
Driver.setCustomConnectionProvider(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
host