public class MastersSlavesListener extends AbstractMastersSlavesListener
| Modifier and Type | Field and Description |
|---|---|
protected List<HostAddress> |
hostAddresses |
protected Protocol |
masterProtocol |
protected Protocol |
secondaryProtocol |
waitNewMasterProtocol, waitNewSecondaryProtocolcurrentConnectionAttempts, currentProtocol, currentReadOnlyAsked, explicitClosed, globalInfo, lastQueryNanos, lastRetry, proxy, urlParser| Constructor and Description |
|---|
MastersSlavesListener(UrlParser urlParser,
GlobalStateInfo globalInfo)
Initialisation.
|
| Modifier and Type | Method and Description |
|---|---|
protected void |
checkInitialConnection(SQLException queryException) |
boolean |
checkMasterStatus(SearchFilter searchFilter)
Check master status.
|
void |
checkWaitingConnection()
Verify that there is waiting connection that have to replace failing one.
|
List<HostAddress> |
connectedHosts()
List current connected HostAddress.
|
void |
foundActiveMaster(Protocol newMasterProtocol)
Method called when a new Master connection is found after a fallback.
|
void |
foundActiveSecondary(Protocol newSecondaryProtocol)
Method called when a new secondary connection is found after a fallback.
|
String |
getCatalog() |
int |
getMajorServerVersion() |
long |
getServerThreadId()
Get current connection server id.
|
int |
getTimeout()
Get timeout (master connection possibly down).
|
void |
handleFailLoop() |
void |
initializeConnection()
Initialize connections.
|
boolean |
inTransaction()
Indicate if connection has an active transaction.
|
Object |
invoke(Method method,
Object[] args) |
boolean |
isClosed() |
boolean |
isMasterConnected() |
boolean |
isMasterConnection() |
boolean |
isServerMariaDb() |
boolean |
isValid(int timeout) |
void |
lockAndSwitchMaster(Protocol newMasterProtocol)
Use the parameter newMasterProtocol as new current master connection.
|
void |
lockAndSwitchSecondary(Protocol newSecondaryProtocol)
Use the parameter newSecondaryProtocol as new current secondary connection.
|
boolean |
noBackslashEscapes() |
void |
preAbort() |
void |
preClose()
Called after a call on Connection.close().
|
void |
preExecute() |
HandleErrorResult |
primaryFail(Method method,
Object[] args,
boolean killCmd,
boolean isClosed)
To handle the newly detected failover on the master connection.
|
void |
prolog(long maxRows,
OceanBaseConnection connection,
OceanBaseStatement statement) |
void |
reconnect()
Reconnect failed connection.
|
void |
reconnectFailedConnection(SearchFilter searchFilter)
Loop to connect.
|
protected void |
removeListenerFromSchedulers() |
void |
rePrepareOnSlave(ServerPrepareResult oldServerPrepareResult,
boolean mustBeOnMaster) |
void |
reset()
Reset state of master and slave connection.
|
HandleErrorResult |
secondaryFail(Method method,
Object[] args,
boolean killCmd)
To handle the newly detected failover on the secondary connection.
|
boolean |
sessionStateAware() |
void |
switchReadOnlyConnection(Boolean mustBeReadOnly)
Switch to a read-only(secondary) or read and write connection(master).
|
boolean |
versionGreaterOrEqual(int major,
int minor,
int patch) |
getFilterForFailedHost, getSecondaryHostFailNanos, handleFailover, hasHostFail, isMasterHostFailReconnect, isSecondaryHostFail, isSecondaryHostFailReconnect, resetMasterFailoverData, resetSecondaryFailoverData, setSecondaryHostFailabortConnection, addToBlacklist, addToPickedList, canRetryFailLoop, clearBlacklist, closeConnection, getBlacklist, getBlacklistKeys, getCurrentLoadBalanceInfo, getCurrentProtocol, getLastQueryNanos, getMasterHostFailNanos, getPickedlist, getProxy, getRetriesAllDown, getRetryAllDowns, getUrlParser, invoke, isAutoReconnect, isExplicitClosed, isMasterHostFail, isQueryRelaunchable, isReadOnly, pingMasterProtocol, preAutoReconnect, relaunchOperation, removeFromBlacklist, removeFromPickedList, resetHostStateInfo, resetOldsBlackListHosts, setCurrentLoadBalanceInfo, setMasterHostFail, setProxy, setRetryAllDowns, setSessionReadOnly, syncConnection, throwFailoverMessageprotected Protocol masterProtocol
protected Protocol secondaryProtocol
protected List<HostAddress> hostAddresses
public MastersSlavesListener(UrlParser urlParser, GlobalStateInfo globalInfo)
urlParser - connection string object.globalInfo - server global variables informationprotected void removeListenerFromSchedulers()
removeListenerFromSchedulers in class AbstractMastersListenerpublic void initializeConnection()
throws SQLException
initializeConnection in interface ListenerinitializeConnection in class AbstractMastersListenerSQLException - if a connection error append.public boolean isClosed()
isClosed in interface ListenerisClosed in class AbstractMastersListenerpublic Object invoke(Method method, Object[] args) throws Throwable
invoke in interface Listenerinvoke in class AbstractMastersListenerThrowablepublic boolean versionGreaterOrEqual(int major,
int minor,
int patch)
versionGreaterOrEqual in interface ListenerversionGreaterOrEqual in class AbstractMastersListenerpublic boolean isServerMariaDb()
isServerMariaDb in interface ListenerisServerMariaDb in class AbstractMastersListenerpublic boolean sessionStateAware()
sessionStateAware in interface ListenersessionStateAware in class AbstractMastersListenerpublic String getCatalog() throws SQLException
getCatalog in interface ListenergetCatalog in class AbstractMastersListenerSQLExceptionpublic int getMajorServerVersion()
getMajorServerVersion in interface ListenergetMajorServerVersion in class AbstractMastersListenerpublic boolean isMasterConnection()
isMasterConnection in interface ListenerisMasterConnection in class AbstractMastersListenerpublic int getTimeout()
throws SocketException
getTimeout in interface ListenergetTimeout in class AbstractMastersListenerSocketException - if socket exceptionpublic void prolog(long maxRows,
OceanBaseConnection connection,
OceanBaseStatement statement)
throws SQLException
prolog in interface Listenerprolog in class AbstractMastersListenerSQLExceptionpublic boolean noBackslashEscapes()
noBackslashEscapes in interface ListenernoBackslashEscapes in class AbstractMastersListenerpublic long getServerThreadId()
protected void checkInitialConnection(SQLException queryException) throws SQLException
SQLExceptionpublic void preClose()
preClose in interface ListenerpreClose in class AbstractMastersListenerpublic void preAbort()
public void preExecute()
throws SQLException
preExecute in interface ListenerpreExecute in class AbstractMastersListenerSQLExceptionpublic boolean isValid(int timeout)
throws SQLException
isValid in interface ListenerisValid in class AbstractMastersListenerSQLExceptionpublic void checkWaitingConnection()
throws SQLException
SQLException - if error occurpublic void reconnectFailedConnection(SearchFilter searchFilter) throws SQLException
reconnectFailedConnection in interface ListenerreconnectFailedConnection in class AbstractMastersListenerSQLException - if there is any error during reconnectionpublic void foundActiveMaster(Protocol newMasterProtocol)
newMasterProtocol - the new active connectionpublic void lockAndSwitchMaster(Protocol newMasterProtocol) throws ReconnectDuringTransactionException
Lock must be set
newMasterProtocol - new master connectionReconnectDuringTransactionException - if there was an active transaction.public void foundActiveSecondary(Protocol newSecondaryProtocol) throws SQLException
foundActiveSecondary in class AbstractMastersSlavesListenernewSecondaryProtocol - the new active connectionSQLException - if switch failedpublic void lockAndSwitchSecondary(Protocol newSecondaryProtocol) throws SQLException
newSecondaryProtocol - new secondary connectionSQLException - if an error occur during setting session read-onlypublic void switchReadOnlyConnection(Boolean mustBeReadOnly) throws SQLException
switchReadOnlyConnection in interface ListenerswitchReadOnlyConnection in class AbstractMastersListenermustBeReadOnly - the read-only status askedSQLException - if operation hasn't change protocolpublic HandleErrorResult primaryFail(Method method, Object[] args, boolean killCmd, boolean isClosed)
primaryFail in interface ListenerprimaryFail in class AbstractMastersListenermethod - the initial called methodargs - the initial argskillCmd - is the fail due to a KILL cmdpublic void reconnect()
throws SQLException
reconnect in interface Listenerreconnect in class AbstractMastersListenerSQLException - if reconnection has failedpublic HandleErrorResult secondaryFail(Method method, Object[] args, boolean killCmd) throws SQLException
secondaryFail in class AbstractMastersSlavesListenermethod - the initial called methodargs - the initial argskillCmd - is fail due to a KILL commandSQLException - if relaunch operation failspublic void handleFailLoop()
handleFailLoop in class AbstractMastersListenerpublic boolean isMasterConnected()
public boolean inTransaction()
inTransaction in interface ListenerinTransaction in class AbstractMastersListenerpublic boolean checkMasterStatus(SearchFilter searchFilter)
checkMasterStatus in interface ListenercheckMasterStatus in class AbstractMastersListenersearchFilter - search filterpublic void rePrepareOnSlave(ServerPrepareResult oldServerPrepareResult, boolean mustBeOnMaster) throws SQLException
SQLExceptionpublic List<HostAddress> connectedHosts()
public void reset()
throws SQLException
SQLException - if command fail.Copyright © 2022 oceanbase.com. All rights reserved.